summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am6
-rw-r--r--Xext/bigreq.c2
-rw-r--r--Xext/dpms.c21
-rw-r--r--Xext/mbuf.c10
-rw-r--r--Xext/panoramiX.c4
-rw-r--r--Xext/panoramiXprocs.c18
-rw-r--r--Xext/saver.c7
-rw-r--r--Xext/security.c18
-rw-r--r--Xext/shape.c5
-rw-r--r--Xext/shm.c3
-rw-r--r--Xext/shmint.h30
-rw-r--r--Xext/sync.c50
-rw-r--r--Xext/xace.c118
-rw-r--r--Xext/xace.h2
-rw-r--r--Xext/xacestr.h2
-rw-r--r--Xext/xcmisc.c2
-rw-r--r--Xext/xf86bigfont.c5
-rw-r--r--Xext/xres.c4
-rw-r--r--Xext/xselinux.c22
-rw-r--r--Xext/xselinux.h6
-rw-r--r--Xext/xtest.c199
-rw-r--r--Xext/xvdisp.c19
-rw-r--r--Xext/xvmc.c8
-rw-r--r--Xi/chgdctl.c6
-rw-r--r--Xi/chgfctl.c14
-rw-r--r--Xi/chgkmap.c2
-rw-r--r--Xi/chgprop.c2
-rw-r--r--Xi/exevents.c137
-rw-r--r--Xi/extinit.c109
-rw-r--r--Xi/getbmap.c2
-rw-r--r--Xi/getdctl.c2
-rw-r--r--Xi/getfctl.c2
-rw-r--r--Xi/getprop.c2
-rw-r--r--Xi/getselev.c2
-rw-r--r--Xi/getvers.c4
-rw-r--r--Xi/grabdev.c8
-rw-r--r--Xi/grabdevb.c6
-rw-r--r--Xi/grabdevk.c6
-rw-r--r--Xi/gtmotion.c2
-rw-r--r--Xi/listdev.c83
-rw-r--r--Xi/opendev.c2
-rw-r--r--Xi/queryst.c2
-rw-r--r--Xi/selectev.c2
-rw-r--r--Xi/sendexev.c8
-rw-r--r--Xi/setbmap.c4
-rw-r--r--Xi/setdval.c2
-rw-r--r--Xi/setmmap.c4
-rw-r--r--Xi/stubs.c2
-rw-r--r--Xi/xiallowev.h8
-rw-r--r--Xi/xichangecursor.c8
-rw-r--r--Xi/xichangehierarchy.c174
-rw-r--r--Xi/xichangehierarchy.h2
-rw-r--r--Xi/xigetclientpointer.c2
-rw-r--r--Xi/xigrabdev.c9
-rw-r--r--Xi/xigrabdev.h8
-rw-r--r--Xi/xipassivegrab.c24
-rw-r--r--Xi/xipassivegrab.h8
-rw-r--r--Xi/xiproperty.c29
-rw-r--r--Xi/xiproperty.h6
-rw-r--r--Xi/xiquerydevice.c68
-rw-r--r--Xi/xiquerypointer.c54
-rw-r--r--Xi/xiselectev.c66
-rw-r--r--Xi/xiselectev.h5
-rw-r--r--Xi/xisetclientpointer.c9
-rw-r--r--Xi/xisetdevfocus.c10
-rw-r--r--Xi/xisetdevfocus.h5
-rw-r--r--Xi/xiwarppointer.c44
-rw-r--r--composite/compext.c8
-rw-r--r--composite/compinit.c4
-rw-r--r--config/hal.c37
-rw-r--r--configure.ac89
-rw-r--r--dbe/dbe.c2
-rw-r--r--dbe/dbestruct.h16
-rw-r--r--dix/Makefile.am1
-rw-r--r--dix/deprecated.c18
-rw-r--r--dix/devices.c105
-rw-r--r--dix/dispatch.c150
-rw-r--r--dix/dixfonts.c12
-rw-r--r--dix/enterleave.c44
-rw-r--r--dix/enterleave.h6
-rw-r--r--dix/eventconvert.c238
-rw-r--r--dix/events.c251
-rw-r--r--dix/extension.c2
-rw-r--r--dix/getevents.c160
-rw-r--r--dix/grabs.c2
-rw-r--r--dix/inpututils.c20
-rw-r--r--dix/main.c6
-rw-r--r--dix/property.c62
-rw-r--r--dix/protocol.txt30
-rw-r--r--dix/ptrveloc.c393
-rw-r--r--dix/registry.c2
-rw-r--r--dix/resource.c12
-rw-r--r--dix/swaprep.c4
-rw-r--r--dix/window.c11
-rw-r--r--doc/Xserver.man.pre4
-rw-r--r--exa/Makefile.am7
-rw-r--r--exa/exa.c514
-rw-r--r--exa/exa.h32
-rw-r--r--exa/exa_accel.c164
-rw-r--r--exa/exa_classic.c258
-rw-r--r--exa/exa_driver.c214
-rw-r--r--exa/exa_glyphs.c17
-rw-r--r--exa/exa_migration_classic.c (renamed from exa/exa_migration.c)29
-rw-r--r--exa/exa_migration_mixed.c194
-rw-r--r--exa/exa_mixed.c251
-rw-r--r--exa/exa_priv.h154
-rw-r--r--exa/exa_render.c399
-rw-r--r--exa/exa_unaccel.c69
-rw-r--r--fb/fb.h44
-rw-r--r--fb/fbbltone.c2
-rw-r--r--fb/fbpict.c9
-rw-r--r--fb/fbpict.h2
-rw-r--r--fb/fbstipple.c2
-rw-r--r--glx/glxcmds.c6
-rw-r--r--glx/glxdrawable.h2
-rw-r--r--glx/glxdri.c1
-rw-r--r--glx/glxdri2.c9
-rw-r--r--glx/glxext.c27
-rw-r--r--glx/glxscreens.c28
-rw-r--r--glx/glxscreens.h1
-rw-r--r--glx/glxserver.h3
-rw-r--r--glx/indirect_util.c4
-rw-r--r--glx/rensize.c2
-rw-r--r--glx/singlepix.c1
-rw-r--r--glx/singlepixswap.c1
-rw-r--r--hw/dmx/dmx.c20
-rw-r--r--hw/dmx/dmxcursor.c1
-rw-r--r--hw/dmx/dmxscrinit.c2
-rw-r--r--hw/dmx/glxProxy/glxsingle.c2
-rw-r--r--hw/dmx/input/dmxevents.c12
-rw-r--r--hw/dmx/input/dmxinputinit.c49
-rw-r--r--hw/kdrive/ephyr/Xephyr.man.pre6
-rw-r--r--hw/kdrive/ephyr/ephyrdriext.c14
-rw-r--r--hw/kdrive/ephyr/ephyrhostglx.c2
-rw-r--r--hw/kdrive/src/kinput.c1
-rw-r--r--hw/xfree86/Makefile.am22
-rw-r--r--hw/xfree86/common/Makefile.am15
-rw-r--r--hw/xfree86/common/compiler.h714
-rw-r--r--hw/xfree86/common/xf86.h38
-rw-r--r--hw/xfree86/common/xf86AutoConfig.c130
-rw-r--r--hw/xfree86/common/xf86Bus.c1897
-rw-r--r--hw/xfree86/common/xf86Bus.h65
-rw-r--r--hw/xfree86/common/xf86Config.c16
-rw-r--r--hw/xfree86/common/xf86Config.h4
-rw-r--r--hw/xfree86/common/xf86Configure.c202
-rw-r--r--hw/xfree86/common/xf86DGA.c11
-rw-r--r--hw/xfree86/common/xf86DPMS.c7
-rw-r--r--hw/xfree86/common/xf86Events.c24
-rw-r--r--hw/xfree86/common/xf86Globals.c7
-rw-r--r--hw/xfree86/common/xf86Helper.c169
-rw-r--r--hw/xfree86/common/xf86Init.c263
-rw-r--r--hw/xfree86/common/xf86Mode.c102
-rw-r--r--hw/xfree86/common/xf86Module.h3
-rw-r--r--hw/xfree86/common/xf86PM.c7
-rw-r--r--hw/xfree86/common/xf86Priv.h6
-rw-r--r--hw/xfree86/common/xf86Privstr.h4
-rw-r--r--hw/xfree86/common/xf86RAC.c1171
-rw-r--r--hw/xfree86/common/xf86RAC.h17
-rw-r--r--hw/xfree86/common/xf86Resources.h137
-rw-r--r--hw/xfree86/common/xf86ShowOpts.c1
-rw-r--r--hw/xfree86/common/xf86VGAarbiter.c1157
-rw-r--r--hw/xfree86/common/xf86VGAarbiter.h48
-rw-r--r--hw/xfree86/common/xf86VGAarbiterPriv.h266
-rw-r--r--hw/xfree86/common/xf86Xinput.c149
-rw-r--r--hw/xfree86/common/xf86Xinput.h19
-rw-r--r--hw/xfree86/common/xf86cmap.c41
-rw-r--r--hw/xfree86/common/xf86fbBus.c8
-rw-r--r--hw/xfree86/common/xf86noBus.c8
-rw-r--r--hw/xfree86/common/xf86pciBus.c554
-rw-r--r--hw/xfree86/common/xf86pciBus.h36
-rw-r--r--hw/xfree86/common/xf86sbusBus.c10
-rw-r--r--hw/xfree86/common/xf86str.h172
-rw-r--r--hw/xfree86/ddc/Makefile.am5
-rw-r--r--hw/xfree86/ddc/ddc.c (renamed from hw/xfree86/ddc/xf86DDC.c)317
-rw-r--r--hw/xfree86/ddc/ddcPriv.h9
-rw-r--r--hw/xfree86/ddc/ddcProperty.c53
-rw-r--r--hw/xfree86/ddc/edid.c140
-rw-r--r--hw/xfree86/ddc/edid.h9
-rw-r--r--hw/xfree86/ddc/print_edid.c10
-rw-r--r--hw/xfree86/ddc/xf86DDC.h13
-rw-r--r--hw/xfree86/dixmods/extmod/modinit.h20
-rw-r--r--hw/xfree86/dixmods/extmod/xf86dga2.c12
-rw-r--r--hw/xfree86/dixmods/extmod/xf86vmode.c45
-rw-r--r--hw/xfree86/doc/devel/Domain.note159
-rw-r--r--hw/xfree86/doc/devel/Makefile.am2
-rw-r--r--hw/xfree86/doc/devel/RAC.Notes696
-rw-r--r--hw/xfree86/doc/man/Xorg.man.pre11
-rw-r--r--hw/xfree86/doc/man/xorg.conf.man.pre9
-rw-r--r--hw/xfree86/dri/dri.c7
-rw-r--r--hw/xfree86/dri/xf86dri.c14
-rw-r--r--hw/xfree86/dri2/dri2.c54
-rw-r--r--hw/xfree86/dri2/dri2.h17
-rw-r--r--hw/xfree86/dri2/dri2ext.c25
-rw-r--r--hw/xfree86/fbdevhw/fbdevhw.c32
-rw-r--r--hw/xfree86/int10/helper_exec.c4
-rw-r--r--hw/xfree86/loader/loader.c12
-rw-r--r--hw/xfree86/loader/loadmod.c12
-rwxr-xr-xhw/xfree86/loader/sdksyms.sh3
-rw-r--r--hw/xfree86/modes/Makefile.am1
-rw-r--r--hw/xfree86/modes/xf86Crtc.c49
-rw-r--r--hw/xfree86/modes/xf86Cursors.c9
-rw-r--r--hw/xfree86/modes/xf86DisplayIDModes.c437
-rw-r--r--hw/xfree86/modes/xf86EdidModes.c11
-rw-r--r--hw/xfree86/modes/xf86Modes.c27
-rw-r--r--hw/xfree86/modes/xf86RandR12.c19
-rw-r--r--hw/xfree86/modes/xf86Rotate.c10
-rw-r--r--hw/xfree86/os-support/bsd/Makefile.am3
-rw-r--r--hw/xfree86/os-support/bsd/bsd_axp.c4
-rw-r--r--hw/xfree86/os-support/bus/Pci.c7
-rw-r--r--hw/xfree86/os-support/bus/Pci.h18
-rw-r--r--hw/xfree86/os-support/bus/linuxPci.c56
-rw-r--r--hw/xfree86/os-support/hurd/Makefile.am1
-rw-r--r--hw/xfree86/os-support/linux/Makefile.am1
-rw-r--r--hw/xfree86/os-support/linux/lnx_axp.c2
-rw-r--r--hw/xfree86/os-support/linux/lnx_font.c2
-rw-r--r--hw/xfree86/os-support/linux/lnx_init.c46
-rw-r--r--hw/xfree86/os-support/misc/BUSmemcpy.c187
-rw-r--r--hw/xfree86/os-support/misc/Delay.c39
-rw-r--r--hw/xfree86/os-support/misc/Makefile.am2
-rw-r--r--hw/xfree86/os-support/misc/SlowBcopy.c52
-rw-r--r--hw/xfree86/os-support/shared/VTsw_noop.c6
-rw-r--r--hw/xfree86/os-support/shared/bios_mmap.c2
-rw-r--r--hw/xfree86/os-support/shared/sigio.c6
-rw-r--r--hw/xfree86/os-support/shared/stdResource.c114
-rw-r--r--hw/xfree86/os-support/solaris/Makefile.am7
-rw-r--r--hw/xfree86/os-support/solaris/sun_VTsw.c110
-rw-r--r--hw/xfree86/os-support/solaris/sun_init.c199
-rw-r--r--hw/xfree86/os-support/xf86_OSlib.h25
-rw-r--r--hw/xfree86/os-support/xf86_OSproc.h16
-rw-r--r--hw/xfree86/parser/Makefile.am14
-rw-r--r--hw/xfree86/ramdac/xf86Cursor.c3
-rw-r--r--hw/xfree86/ramdac/xf86CursorPriv.h2
-rw-r--r--hw/xfree86/ramdac/xf86RamDacCmap.c3
-rw-r--r--hw/xfree86/vbe/vbe.c3
-rw-r--r--hw/xfree86/vgahw/vgaCmap.c3
-rw-r--r--hw/xfree86/vgahw/vgaHW.c16
-rw-r--r--hw/xfree86/vgahw/vgaHW.h3
-rw-r--r--hw/xfree86/x86emu/sys.c183
-rw-r--r--hw/xfree86/xaa/xaaFillRect.c2
-rw-r--r--hw/xfree86/xaa/xaaImage.c6
-rw-r--r--hw/xfree86/xaa/xaaPCache.c2
-rw-r--r--hw/xfree86/xaa/xaaPict.c20
-rw-r--r--hw/xnest/Events.c10
-rw-r--r--hw/xnest/Init.c15
-rw-r--r--hw/xnest/Keyboard.c23
-rw-r--r--hw/xnest/Pointer.c1
-rw-r--r--hw/xquartz/GL/capabilities.c57
-rw-r--r--hw/xquartz/GL/indirect.c311
-rw-r--r--hw/xquartz/GL/visualConfigs.c348
-rw-r--r--hw/xquartz/GL/visualConfigs.h2
-rw-r--r--hw/xquartz/Makefile.am2
-rw-r--r--hw/xquartz/X11Application.h3
-rw-r--r--hw/xquartz/X11Application.m108
-rw-r--r--hw/xquartz/X11Controller.h37
-rw-r--r--hw/xquartz/X11Controller.m78
-rw-r--r--hw/xquartz/applewm.c36
-rw-r--r--hw/xquartz/applewmExt.h2
-rw-r--r--hw/xquartz/bundle/Info.plist.cpp12
-rw-r--r--hw/xquartz/bundle/Makefile.am6
-rw-r--r--hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib98
-rw-r--r--hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nibbin46115 -> 46189 bytes
-rw-r--r--hw/xquartz/bundle/Resources/English.lproj/Localizable.stringsbin2528 -> 2698 bytes
-rw-r--r--hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib35
-rw-r--r--hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nibbin41697 -> 41440 bytes
-rw-r--r--hw/xquartz/bundle/Resources/French.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/French.lproj/main.nib/designable.nib125
-rw-r--r--hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nibbin55838 -> 55983 bytes
-rw-r--r--hw/xquartz/bundle/Resources/German.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib129
-rw-r--r--hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nibbin53179 -> 52977 bytes
-rw-r--r--hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/Italian.lproj/main.nib/designable.nib505
-rw-r--r--hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nibbin47639 -> 50126 bytes
-rw-r--r--hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/designable.nib753
-rw-r--r--hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nibbin45264 -> 47803 bytes
-rw-r--r--hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib127
-rw-r--r--hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nibbin53521 -> 53635 bytes
-rw-r--r--hw/xquartz/bundle/Resources/da.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib87
-rw-r--r--hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nibbin51772 -> 51757 bytes
-rw-r--r--hw/xquartz/bundle/Resources/fi.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib326
-rw-r--r--hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nibbin53263 -> 53385 bytes
-rw-r--r--hw/xquartz/bundle/Resources/ko.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib479
-rw-r--r--hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nibbin46678 -> 46727 bytes
-rw-r--r--hw/xquartz/bundle/Resources/no.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/no.lproj/main.nib/designable.nib258
-rw-r--r--hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nibbin50231 -> 50330 bytes
-rw-r--r--hw/xquartz/bundle/Resources/pl.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib80
-rw-r--r--hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nibbin52474 -> 52516 bytes
-rw-r--r--hw/xquartz/bundle/Resources/pt.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib509
-rw-r--r--hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nibbin50446 -> 52942 bytes
-rw-r--r--hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib280
-rw-r--r--hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nibbin53895 -> 54065 bytes
-rw-r--r--hw/xquartz/bundle/Resources/ru.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/ru.lproj/main.nib/designable.nib120
-rw-r--r--hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nibbin55169 -> 55338 bytes
-rw-r--r--hw/xquartz/bundle/Resources/sv.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib94
-rw-r--r--hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nibbin52573 -> 52602 bytes
-rw-r--r--hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/designable.nib72
-rw-r--r--hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nibbin44172 -> 44178 bytes
-rw-r--r--hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist4
-rw-r--r--hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib928
-rw-r--r--hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nibbin42003 -> 44416 bytes
-rw-r--r--hw/xquartz/darwin.c79
-rw-r--r--hw/xquartz/darwin.h17
-rw-r--r--hw/xquartz/darwinClut8.h531
-rw-r--r--hw/xquartz/darwinEvents.c5
-rw-r--r--hw/xquartz/darwinfb.h56
-rw-r--r--hw/xquartz/mach-startup/Makefile.am9
-rw-r--r--hw/xquartz/mach-startup/bundle-main.c97
-rw-r--r--hw/xquartz/mach-startup/launchd_fd.c13
-rw-r--r--hw/xquartz/mach-startup/stub.c12
-rw-r--r--hw/xquartz/pbproxy/x-selection.h1
-rw-r--r--hw/xquartz/pbproxy/x-selection.m14
-rw-r--r--hw/xquartz/pseudoramiX.c2
-rw-r--r--hw/xquartz/quartz.c2
-rw-r--r--hw/xquartz/quartzAudio.c48
-rw-r--r--hw/xquartz/quartzAudio.h3
-rw-r--r--hw/xquartz/quartzKeyboard.c34
-rw-r--r--hw/xquartz/xpr/xpr.h3
-rw-r--r--hw/xquartz/xpr/xprAppleWM.c40
-rw-r--r--hw/xquartz/xpr/xprCursor.c2
-rw-r--r--hw/xquartz/xpr/xprScreen.c31
-rw-r--r--hw/xwin/InitOutput.c2
-rw-r--r--hw/xwin/Makefile.am28
-rw-r--r--hw/xwin/XWin.man.pre (renamed from hw/xwin/XWin.man)27
-rwxr-xr-xhw/xwin/XWinrc.man.pre (renamed from hw/xwin/XWinrc.man)5
-rw-r--r--hw/xwin/winclipboardinit.c6
-rw-r--r--hw/xwin/winclipboardwndproc.c3
-rw-r--r--hw/xwin/wincreatewnd.c20
-rw-r--r--hw/xwin/wincursor.c26
-rwxr-xr-xhw/xwin/windialogs.c94
-rw-r--r--hw/xwin/winlayouts.h1
-rw-r--r--hw/xwin/winms.h3
-rw-r--r--hw/xwin/winmultiwindowicons.c204
-rw-r--r--hw/xwin/winmultiwindowwindow.c135
-rw-r--r--hw/xwin/winmultiwindowwm.c239
-rw-r--r--hw/xwin/winmultiwindowwndproc.c158
-rw-r--r--hw/xwin/winprefs.c4
-rw-r--r--hw/xwin/winscrinit.c16
-rw-r--r--hw/xwin/winshaddd.c3
-rwxr-xr-xhw/xwin/winwin32rootless.c6
-rwxr-xr-xhw/xwin/winwin32rootlesswndproc.c11
-rw-r--r--hw/xwin/winwindow.h20
-rwxr-xr-xhw/xwin/winwindowswm.c14
-rw-r--r--include/Makefile.am6
-rw-r--r--include/dix-config.h.in6
-rw-r--r--include/dix.h11
-rw-r--r--include/dixaccess.h1
-rw-r--r--include/events.h205
-rw-r--r--include/eventstr.h232
-rw-r--r--include/exevents.h246
-rw-r--r--include/extinit.h2
-rw-r--r--include/input.h16
-rw-r--r--include/inputstr.h4
-rw-r--r--include/misc.h30
-rw-r--r--include/ptrveloc.h44
-rw-r--r--include/resource.h8
-rw-r--r--include/xkbsrv.h10
-rw-r--r--include/xkbstr.h53
-rw-r--r--include/xorg-config.h.in12
-rw-r--r--include/xorg-server.h.in6
-rw-r--r--include/xserver-properties.h2
-rw-r--r--mi/mi.h2
-rw-r--r--mi/midispcur.c2
-rw-r--r--mi/mieq.c142
-rw-r--r--mi/miinitext.c8
-rw-r--r--mi/miscrinit.c4
-rw-r--r--miext/Makefile.am3
-rw-r--r--miext/damage/damage.c64
-rw-r--r--miext/damage/damage.h20
-rw-r--r--miext/damage/damagestr.h5
-rw-r--r--os/WaitFor.c3
-rw-r--r--os/access.c7
-rw-r--r--os/backtrace.c25
-rw-r--r--os/io.c8
-rw-r--r--os/osdep.h6
-rw-r--r--os/osinit.c14
-rw-r--r--os/utils.c5
-rw-r--r--randr/rrcrtc.c14
-rw-r--r--randr/rrmode.c6
-rw-r--r--randr/rroutput.c8
-rw-r--r--randr/rrproperty.c8
-rw-r--r--randr/rrscreen.c16
-rw-r--r--randr/rrsdispatch.c4
-rw-r--r--randr/rrxinerama.c2
-rw-r--r--record/record.c34
-rw-r--r--render/animcur.c11
-rw-r--r--render/picture.c47
-rw-r--r--render/picture.h8
-rw-r--r--render/picturestr.h4
-rw-r--r--render/render.c18
-rw-r--r--shave.in10
-rw-r--r--test/Makefile.am9
-rw-r--r--test/input.c45
-rw-r--r--test/xi2/Makefile.am47
-rw-r--r--test/xi2/protocol-common.c169
-rw-r--r--test/xi2/protocol-common.h153
-rw-r--r--test/xi2/protocol-eventconvert.c904
-rw-r--r--test/xi2/protocol-xigetclientpointer.c167
-rw-r--r--test/xi2/protocol-xigetselectedevents.c241
-rw-r--r--test/xi2/protocol-xiquerydevice.c316
-rw-r--r--test/xi2/protocol-xiquerypointer.c220
-rw-r--r--test/xi2/protocol-xiqueryversion.c186
-rw-r--r--test/xi2/protocol-xiselectevents.c337
-rw-r--r--test/xi2/protocol-xisetclientpointer.c149
-rw-r--r--test/xi2/protocol-xiwarppointer.c216
-rw-r--r--test/xtest.c116
-rw-r--r--xfixes/cursor.c55
-rw-r--r--xkb/XKBMisc.c8
-rw-r--r--xkb/ddxDevBtn.c107
-rw-r--r--xkb/xkb.c15
-rw-r--r--xkb/xkb.h2
-rw-r--r--xkb/xkbAccessX.c12
-rw-r--r--xkb/xkbActions.c19
-rw-r--r--xkb/xkbEvents.c190
-rw-r--r--xkb/xkbInit.c2
-rw-r--r--xkb/xkbPrKeyEv.c68
-rw-r--r--xkb/xkbUtils.c34
-rw-r--r--xkb/xkbfmisc.c1
-rw-r--r--xkb/xkbout.c1
-rw-r--r--xkb/xkbtext.c15
-rw-r--r--xkb/xkmread.c29
-rw-r--r--xorg-server.pc.in1
434 files changed, 15110 insertions, 14951 deletions
diff --git a/Makefile.am b/Makefile.am
index dea6fa47c..cf1469ff7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -38,7 +38,8 @@ SUBDIRS = \
$(GLX_DIR) \
exa \
config \
- hw
+ hw \
+ test
aclocaldir = $(datadir)/aclocal
aclocal_DATA = xorg-server.m4
@@ -79,7 +80,8 @@ DIST_SUBDIRS = \
glx \
exa \
config \
- hw
+ hw \
+ test
# gross hack
relink: all
diff --git a/Xext/bigreq.c b/Xext/bigreq.c
index e50376c6e..582b670b0 100644
--- a/Xext/bigreq.c
+++ b/Xext/bigreq.c
@@ -36,7 +36,7 @@ from The Open Group.
#include "os.h"
#include "dixstruct.h"
#include "extnsionst.h"
-#include <X11/extensions/bigreqstr.h>
+#include <X11/extensions/bigreqsproto.h>
#include "opaque.h"
#include "modinit.h"
diff --git a/Xext/dpms.c b/Xext/dpms.c
index 8464f9e98..df63a8bf1 100644
--- a/Xext/dpms.c
+++ b/Xext/dpms.c
@@ -37,9 +37,7 @@ Equipment Corporation.
#include "dixstruct.h"
#include "extnsionst.h"
#include "opaque.h"
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
-#include <X11/extensions/dpmsstr.h>
+#include <X11/extensions/dpmsproto.h>
#include "dpmsproc.h"
#include "modinit.h"
@@ -179,19 +177,10 @@ ProcDPMSForceLevel(ClientPtr client)
if (!DPMSEnabled)
return BadMatch;
- if (stuff->level == DPMSModeOn) {
- lastDeviceEventTime.milliseconds =
- GetTimeInMillis();
- } else if (stuff->level == DPMSModeStandby) {
- lastDeviceEventTime.milliseconds =
- GetTimeInMillis() - DPMSStandbyTime;
- } else if (stuff->level == DPMSModeSuspend) {
- lastDeviceEventTime.milliseconds =
- GetTimeInMillis() - DPMSSuspendTime;
- } else if (stuff->level == DPMSModeOff) {
- lastDeviceEventTime.milliseconds =
- GetTimeInMillis() - DPMSOffTime;
- } else {
+ if (stuff->level != DPMSModeOn &&
+ stuff->level != DPMSModeStandby &&
+ stuff->level != DPMSModeSuspend &&
+ stuff->level != DPMSModeOff) {
client->errorValue = stuff->level;
return BadValue;
}
diff --git a/Xext/mbuf.c b/Xext/mbuf.c
index 09399b65e..55e732a9f 100644
--- a/Xext/mbuf.c
+++ b/Xext/mbuf.c
@@ -430,7 +430,7 @@ ProcCreateImageBuffers (client)
int len, nbuf, i, err, rc;
REQUEST_AT_LEAST_SIZE (xMbufCreateImageBuffersReq);
- len = stuff->length - (sizeof(xMbufCreateImageBuffersReq) >> 2);
+ len = stuff->length - bytes_to_int32(sizeof(xMbufCreateImageBuffersReq));
if (len == 0)
return BadLength;
rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
@@ -498,7 +498,7 @@ ProcDisplayImageBuffers (client)
REQUEST_AT_LEAST_SIZE (xMbufDisplayImageBuffersReq);
- nbuf = stuff->length - (sizeof (xMbufDisplayImageBuffersReq) >> 2);
+ nbuf = stuff->length - bytes_to_int32(sizeof (xMbufDisplayImageBuffersReq));
if (!nbuf)
return Success;
minDelay = stuff->minDelay;
@@ -592,7 +592,7 @@ ProcSetMBufferAttributes (client)
pMultibuffers = (MultibuffersPtr)LookupIDByType (pWin->drawable.id, MultibuffersResType);
if (!pMultibuffers)
return BadMatch;
- len = stuff->length - (sizeof (xMbufSetMBufferAttributesReq) >> 2);
+ len = stuff->length - bytes_to_int32(sizeof (xMbufSetMBufferAttributesReq));
vmask = stuff->valueMask;
if (len != Ones (vmask))
return BadLength;
@@ -687,7 +687,7 @@ ProcSetBufferAttributes (client)
pMultibuffer = (MultibufferPtr) LookupIDByType (stuff->buffer, MultibufferResType);
if (!pMultibuffer)
return MultibufferErrorBase + MultibufferBadBuffer;
- len = stuff->length - (sizeof (xMbufSetBufferAttributesReq) >> 2);
+ len = stuff->length - bytes_to_int32(sizeof (xMbufSetBufferAttributesReq));
vmask = stuff->valueMask;
if (len != Ones (vmask))
return BadLength;
@@ -787,7 +787,7 @@ ProcGetBufferInfo (client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
- rep.length = nInfo * (sizeof (xMbufBufferInfo) >> 2);
+ rep.length = nInfo * bytes_to_int32(sizeof (xMbufBufferInfo));
rep.normalInfo = nInfo;
rep.stereoInfo = 0;
if (client->swapped)
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 4ab6f6bdd..c5fb70061 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -669,7 +669,7 @@ Bool PanoramiXCreateConnectionBlock(void)
length += (depth->nVisuals * sizeof(xVisualType));
}
- connSetupPrefix.length = length >> 2;
+ connSetupPrefix.length = bytes_to_int32(length);
for (i = 0; i < PanoramiXNumDepths; i++)
xfree(PanoramiXDepths[i].vids);
@@ -1053,7 +1053,7 @@ ProcXineramaQueryScreens(ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.number = (noPanoramiXExtension) ? 0 : PanoramiXNumScreens;
- rep.length = rep.number * sz_XineramaScreenInfo >> 2;
+ rep.length = bytes_to_int32(rep.number * sz_XineramaScreenInfo);
if (client->swapped) {
int n;
swaps (&rep.sequenceNumber, n);
diff --git a/Xext/panoramiXprocs.c b/Xext/panoramiXprocs.c
index 8b51009b3..6834efb71 100644
--- a/Xext/panoramiXprocs.c
+++ b/Xext/panoramiXprocs.c
@@ -74,7 +74,7 @@ int PanoramiXCreateWindow(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xCreateWindowReq);
- len = client->req_len - (sizeof(xCreateWindowReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xCreateWindowReq));
if (Ones(stuff->mask) != len)
return BadLength;
@@ -179,7 +179,7 @@ int PanoramiXChangeWindowAttributes(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xChangeWindowAttributesReq);
- len = client->req_len - (sizeof(xChangeWindowAttributesReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xChangeWindowAttributesReq));
if (Ones(stuff->valueMask) != len)
return BadLength;
@@ -456,7 +456,7 @@ int PanoramiXConfigureWindow(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xConfigureWindowReq);
- len = client->req_len - (sizeof(xConfigureWindowReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xConfigureWindowReq));
if (Ones(stuff->mask) != len)
return BadLength;
@@ -734,7 +734,7 @@ int PanoramiXCreateGC(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xCreateGCReq);
client->errorValue = stuff->gc;
- len = client->req_len - (sizeof(xCreateGCReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xCreateGCReq));
if (Ones(stuff->mask) != len)
return BadLength;
@@ -813,7 +813,7 @@ int PanoramiXChangeGC(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xChangeGCReq);
- len = client->req_len - (sizeof(xChangeGCReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xChangeGCReq));
if (Ones(stuff->mask) != len)
return BadLength;
@@ -1299,7 +1299,7 @@ int PanoramiXPolyPoint(ClientPtr client)
return (result == BadValue) ? BadGC : result;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
- npoint = ((client->req_len << 2) - sizeof(xPolyPointReq)) >> 2;
+ npoint = bytes_to_int32((client->req_len << 2) - sizeof(xPolyPointReq));
if (npoint > 0) {
origPts = xalloc(npoint * sizeof(xPoint));
memcpy((char *) origPts, (char *) &stuff[1], npoint * sizeof(xPoint));
@@ -1359,7 +1359,7 @@ int PanoramiXPolyLine(ClientPtr client)
return (result == BadValue) ? BadGC : result;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
- npoint = ((client->req_len << 2) - sizeof(xPolyLineReq)) >> 2;
+ npoint = bytes_to_int32((client->req_len << 2) - sizeof(xPolyLineReq));
if (npoint > 0){
origPts = xalloc(npoint * sizeof(xPoint));
memcpy((char *) origPts, (char *) &stuff[1], npoint * sizeof(xPoint));
@@ -1605,7 +1605,7 @@ int PanoramiXFillPoly(ClientPtr client)
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
- count = ((client->req_len << 2) - sizeof(xFillPolyReq)) >> 2;
+ count = bytes_to_int32((client->req_len << 2) - sizeof(xFillPolyReq));
if (count > 0){
locPts = xalloc(count * sizeof(DDXPointRec));
memcpy((char *)locPts, (char *)&stuff[1], count * sizeof(DDXPointRec));
@@ -1895,7 +1895,7 @@ int PanoramiXGetImage(ClientPtr client)
}
- xgi.length = (length + 3) >> 2;
+ xgi.length = bytes_to_int32(length);
if (widthBytesLine == 0 || h == 0)
linesPerBuf = 0;
diff --git a/Xext/saver.c b/Xext/saver.c
index b59f769d5..18de4b540 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -52,8 +52,7 @@ in this Software without prior written authorization from the X Consortium.
#include "panoramiXsrv.h"
#endif
#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
#endif
#include <stdio.h>
@@ -875,7 +874,7 @@ ScreenSaverSetAttributes (ClientPtr client)
if (ret != Success)
return ret;
- len = stuff->length - (sizeof(xScreenSaverSetAttributesReq) >> 2);
+ len = stuff->length - bytes_to_int32(sizeof(xScreenSaverSetAttributesReq));
if (Ones(stuff->mask) != len)
return BadLength;
if (!stuff->width || !stuff->height)
@@ -1267,7 +1266,7 @@ ProcScreenSaverSetAttributes (ClientPtr client)
if (status != Success)
return (status == BadValue) ? BadDrawable : status;
- len = stuff->length - (sizeof(xScreenSaverSetAttributesReq) >> 2);
+ len = stuff->length - bytes_to_int32(sizeof(xScreenSaverSetAttributesReq));
if (Ones(stuff->mask) != len)
return BadLength;
diff --git a/Xext/security.c b/Xext/security.c
index bae95a3b5..42eb9f01d 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -37,7 +37,7 @@ in this Software without prior written authorization from The Open Group.
#include "registry.h"
#include "xacestr.h"
#include "securitysrv.h"
-#include <X11/extensions/securstr.h>
+#include <X11/extensions/securproto.h>
#include "modinit.h"
/* Extension stuff */
@@ -450,9 +450,9 @@ ProcSecurityGenerateAuthorization(
/* check request length */
REQUEST_AT_LEAST_SIZE(xSecurityGenerateAuthorizationReq);
- len = SIZEOF(xSecurityGenerateAuthorizationReq) >> 2;
- len += (stuff->nbytesAuthProto + (unsigned)3) >> 2;
- len += (stuff->nbytesAuthData + (unsigned)3) >> 2;
+ len = bytes_to_int32(SIZEOF(xSecurityGenerateAuthorizationReq));
+ len += bytes_to_int32(stuff->nbytesAuthProto);
+ len += bytes_to_int32(stuff->nbytesAuthData);
values = ((CARD32 *)stuff) + len;
len += Ones(stuff->valueMask);
if (client->req_len != len)
@@ -520,7 +520,7 @@ ProcSecurityGenerateAuthorization(
}
protoname = (char *)&stuff[1];
- protodata = protoname + ((stuff->nbytesAuthProto + (unsigned)3) >> 2);
+ protodata = protoname + bytes_to_int32(stuff->nbytesAuthProto);
/* call os layer to generate the authorization */
@@ -580,7 +580,7 @@ ProcSecurityGenerateAuthorization(
/* tell client the auth id and data */
rep.type = X_Reply;
- rep.length = (authdata_len + 3) >> 2;
+ rep.length = bytes_to_int32(authdata_len);
rep.sequenceNumber = client->sequence;
rep.authId = authId;
rep.dataLength = authdata_len;
@@ -688,10 +688,10 @@ SProcSecurityGenerateAuthorization(
swaps(&stuff->nbytesAuthProto, n);
swaps(&stuff->nbytesAuthData, n);
swapl(&stuff->valueMask, n);
- values_offset = ((stuff->nbytesAuthProto + (unsigned)3) >> 2) +
- ((stuff->nbytesAuthData + (unsigned)3) >> 2);
+ values_offset = bytes_to_int32(stuff->nbytesAuthProto) +
+ bytes_to_int32(stuff->nbytesAuthData);
if (values_offset >
- stuff->length - (sz_xSecurityGenerateAuthorizationReq >> 2))
+ stuff->length - bytes_to_int32(sz_xSecurityGenerateAuthorizationReq))
return BadLength;
values = (CARD32 *)(&stuff[1]) + values_offset;
nvalues = (((CARD32 *)stuff) + stuff->length) - values;
diff --git a/Xext/shape.c b/Xext/shape.c
index 5977296e5..53167d140 100644
--- a/Xext/shape.c
+++ b/Xext/shape.c
@@ -41,8 +41,7 @@ in this Software without prior written authorization from The Open Group.
#include "dixstruct.h"
#include "resource.h"
#include "opaque.h"
-#define _SHAPE_SERVER_ /* don't want Xlib structures */
-#include <X11/extensions/shapestr.h>
+#include <X11/extensions/shapeproto.h>
#include "regionstr.h"
#include "gcstruct.h"
#include "modinit.h"
@@ -1069,7 +1068,7 @@ ProcShapeGetRectangles (ClientPtr client)
}
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
- rep.length = (nrects * sizeof (xRectangle)) >> 2;
+ rep.length = bytes_to_int32(nrects * sizeof (xRectangle));
rep.ordering = YXBanded;
rep.nrects = nrects;
if (client->swapped) {
diff --git a/Xext/shm.c b/Xext/shm.c
index cdda09f7f..dd097e605 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -52,8 +52,7 @@ in this Software without prior written authorization from The Open Group.
#include "servermd.h"
#include "shmint.h"
#include "xace.h"
-#define _XSHM_SERVER_
-#include <X11/extensions/shmstr.h>
+#include <X11/extensions/shmproto.h>
#include <X11/Xfuncproto.h>
/* Needed for Solaris cross-zone shared memory extension */
diff --git a/Xext/shmint.h b/Xext/shmint.h
index ec1688d53..8f8a00d4f 100644
--- a/Xext/shmint.h
+++ b/Xext/shmint.h
@@ -23,13 +23,39 @@
#ifndef _SHMINT_H_
#define _SHMINT_H_
-#define _XSHM_SERVER_
-#include <X11/extensions/shmstr.h>
+#include <X11/extensions/shmproto.h>
#include "screenint.h"
#include "pixmap.h"
#include "gc.h"
+#define XSHM_PUT_IMAGE_ARGS \
+ DrawablePtr /* dst */, \
+ GCPtr /* pGC */, \
+ int /* depth */, \
+ unsigned int /* format */, \
+ int /* w */, \
+ int /* h */, \
+ int /* sx */, \
+ int /* sy */, \
+ int /* sw */, \
+ int /* sh */, \
+ int /* dx */, \
+ int /* dy */, \
+ char * /* data */
+
+#define XSHM_CREATE_PIXMAP_ARGS \
+ ScreenPtr /* pScreen */, \
+ int /* width */, \
+ int /* height */, \
+ int /* depth */, \
+ char * /* addr */
+
+typedef struct _ShmFuncs {
+ PixmapPtr (* CreatePixmap)(XSHM_CREATE_PIXMAP_ARGS);
+ void (* PutImage)(XSHM_PUT_IMAGE_ARGS);
+} ShmFuncs, *ShmFuncsPtr;
+
extern _X_EXPORT void
ShmRegisterFuncs(ScreenPtr pScreen, ShmFuncsPtr funcs);
diff --git a/Xext/sync.c b/Xext/sync.c
index d7ab63cd5..667f8ab78 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -65,10 +65,7 @@ PERFORMANCE OF THIS SOFTWARE.
#include "dixstruct.h"
#include "resource.h"
#include "opaque.h"
-#define _SYNC_SERVER
-#include <X11/extensions/sync.h>
-#undef _SYNC_SERVER
-#include <X11/extensions/syncstr.h>
+#include <X11/extensions/syncproto.h>
#include "syncsrv.h"
#include <stdio.h>
@@ -965,28 +962,24 @@ SyncComputeBracketValues(SyncCounter *pCounter, Bool startOver)
pnewltval = &psci->bracket_less;
}
}
- else if ( (pTrigger->test_type == XSyncPositiveTransition &&
+ else if (pTrigger->test_type == XSyncNegativeTransition &&
ct != XSyncCounterNeverIncreases)
- ||
- (pTrigger->test_type == XSyncNegativeTransition &&
+ {
+ if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
+ XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less))
+ {
+ psci->bracket_less = pTrigger->test_value;
+ pnewltval = &psci->bracket_less;
+ }
+ }
+ else if (pTrigger->test_type == XSyncPositiveTransition &&
ct != XSyncCounterNeverDecreases)
- )
{
- if (XSyncValueLessThan(pCounter->value, pTrigger->test_value))
+ if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
+ XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater))
{
- if (XSyncValueLessThan(pTrigger->test_value,
- psci->bracket_greater))
- {
- psci->bracket_greater = pTrigger->test_value;
- pnewgtval = &psci->bracket_greater;
- }
- else
- if (XSyncValueGreaterThan(pTrigger->test_value,
- psci->bracket_less))
- {
- psci->bracket_less = pTrigger->test_value;
- pnewltval = &psci->bracket_less;
- }
+ psci->bracket_greater = pTrigger->test_value;
+ pnewgtval = &psci->bracket_greater;
}
}
} /* end for each trigger */
@@ -1179,7 +1172,7 @@ ProcSyncListSystemCounters(ClientPtr client)
{
char *name = SysCounterList[i]->pSysCounterInfo->name;
/* pad to 4 byte boundary */
- len += (sz_xSyncSystemCounter + strlen(name) + 3) & ~3;
+ len += pad_to_int32(sz_xSyncSystemCounter + strlen(name));
}
if (len)
@@ -1189,7 +1182,7 @@ ProcSyncListSystemCounters(ClientPtr client)
return BadAlloc;
}
- rep.length = len >> 2;
+ rep.length = bytes_to_int32(len);
if (client->swapped)
{
@@ -1223,7 +1216,7 @@ ProcSyncListSystemCounters(ClientPtr client)
pname_in_reply = ((char *)walklist) + sz_xSyncSystemCounter;
strncpy(pname_in_reply, psci->name, namelen);
walklist = (xSyncSystemCounter *) (((char *)walklist) +
- ((sz_xSyncSystemCounter + namelen + 3) & ~3));
+ pad_to_int32(sz_xSyncSystemCounter + namelen));
}
WriteToClient(client, sizeof(rep), (char *) &rep);
@@ -1600,7 +1593,7 @@ ProcSyncCreateAlarm(ClientPtr client)
LEGAL_NEW_RESOURCE(stuff->id, client);
vmask = stuff->valueMask;
- len = client->req_len - (sizeof(xSyncCreateAlarmReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xSyncCreateAlarmReq));
/* the "extra" call to Ones accounts for the presence of 64 bit values */
if (len != (Ones(vmask) + Ones(vmask & (XSyncCAValue|XSyncCADelta))))
return BadLength;
@@ -1681,7 +1674,7 @@ ProcSyncChangeAlarm(ClientPtr client)
return (status == BadValue) ? SyncErrorBase + XSyncBadAlarm : status;
vmask = stuff->valueMask;
- len = client->req_len - (sizeof(xSyncChangeAlarmReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xSyncChangeAlarmReq));
/* the "extra" call to Ones accounts for the presence of 64 bit values */
if (len != (Ones(vmask) + Ones(vmask & (XSyncCAValue|XSyncCADelta))))
return BadLength;
@@ -1720,7 +1713,7 @@ ProcSyncQueryAlarm(ClientPtr client)
return (rc == BadValue) ? SyncErrorBase + XSyncBadAlarm : rc;
rep.type = X_Reply;
- rep.length = (sizeof(xSyncQueryAlarmReply) - sizeof(xGenericReply)) >> 2;
+ rep.length = bytes_to_int32(sizeof(xSyncQueryAlarmReply) - sizeof(xGenericReply));
rep.sequenceNumber = client->sequence;
pTrigger = &pAlarm->trigger;
@@ -1773,6 +1766,7 @@ ProcSyncDestroyAlarm(ClientPtr client)
rc = dixLookupResourceByType((pointer *)&pAlarm, stuff->alarm, RTAlarm,
client, DixDestroyAccess);
+ if (rc != Success)
return (rc == BadValue) ? SyncErrorBase + XSyncBadAlarm : rc;
FreeResource(stuff->alarm, RT_NONE);
diff --git a/Xext/xace.c b/Xext/xace.c
index 6eaba6dbc..bf0e98fb0 100644
--- a/Xext/xace.c
+++ b/Xext/xace.c
@@ -1,6 +1,6 @@
/************************************************************
-Author: Eamon Walsh <ewalsh@epoch.ncsc.mil>
+Author: Eamon Walsh <ewalsh@tycho.nsa.gov>
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
@@ -100,114 +100,104 @@ int XaceHook(int hook, ...)
switch (hook)
{
case XACE_RESOURCE_ACCESS: {
- XaceResourceAccessRec rec = {
- va_arg(ap, ClientPtr),
- va_arg(ap, XID),
- va_arg(ap, RESTYPE),
- va_arg(ap, pointer),
- va_arg(ap, RESTYPE),
- va_arg(ap, pointer),
- va_arg(ap, Mask),
- Success /* default allow */
- };
+ XaceResourceAccessRec rec;
+ rec.client = va_arg(ap, ClientPtr);
+ rec.id = va_arg(ap, XID);
+ rec.rtype = va_arg(ap, RESTYPE);
+ rec.res = va_arg(ap, pointer);
+ rec.ptype = va_arg(ap, RESTYPE);
+ rec.parent = va_arg(ap, pointer);
+ rec.access_mode = va_arg(ap, Mask);
+ rec.status = Success; /* default allow */
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_DEVICE_ACCESS: {
- XaceDeviceAccessRec rec = {
- va_arg(ap, ClientPtr),
- va_arg(ap, DeviceIntPtr),
- va_arg(ap, Mask),
- Success /* default allow */
- };
+ XaceDeviceAccessRec rec;
+ rec.client = va_arg(ap, ClientPtr);
+ rec.dev = va_arg(ap, DeviceIntPtr);
+ rec.access_mode = va_arg(ap, Mask);
+ rec.status = Success; /* default allow */
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_SEND_ACCESS: {
- XaceSendAccessRec rec = {
- va_arg(ap, ClientPtr),
- va_arg(ap, DeviceIntPtr),
- va_arg(ap, WindowPtr),
- va_arg(ap, xEventPtr),
- va_arg(ap, int),
- Success /* default allow */
- };
+ XaceSendAccessRec rec;
+ rec.client = va_arg(ap, ClientPtr);
+ rec.dev = va_arg(ap, DeviceIntPtr);
+ rec.pWin = va_arg(ap, WindowPtr);
+ rec.events = va_arg(ap, xEventPtr);
+ rec.count = va_arg(ap, int);
+ rec.status = Success; /* default allow */
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_RECEIVE_ACCESS: {
- XaceReceiveAccessRec rec = {
- va_arg(ap, ClientPtr),
- va_arg(ap, WindowPtr),
- va_arg(ap, xEventPtr),
- va_arg(ap, int),
- Success /* default allow */
- };
+ XaceReceiveAccessRec rec;
+ rec.client = va_arg(ap, ClientPtr);
+ rec.pWin = va_arg(ap, WindowPtr);
+ rec.events = va_arg(ap, xEventPtr);
+ rec.count = va_arg(ap, int);
+ rec.status = Success; /* default allow */
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_CLIENT_ACCESS: {
- XaceClientAccessRec rec = {
- va_arg(ap, ClientPtr),
- va_arg(ap, ClientPtr),
- va_arg(ap, Mask),
- Success /* default allow */
- };
+ XaceClientAccessRec rec;
+ rec.client = va_arg(ap, ClientPtr);
+ rec.target = va_arg(ap, ClientPtr);
+ rec.access_mode = va_arg(ap, Mask);
+ rec.status = Success; /* default allow */
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_EXT_ACCESS: {
- XaceExtAccessRec rec = {
- va_arg(ap, ClientPtr),
- va_arg(ap, ExtensionEntry*),
- DixGetAttrAccess,
- Success /* default allow */
- };
+ XaceExtAccessRec rec;
+ rec.client = va_arg(ap, ClientPtr);
+ rec.ext = va_arg(ap, ExtensionEntry*);
+ rec.access_mode = DixGetAttrAccess;
+ rec.status = Success; /* default allow */
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_SERVER_ACCESS: {
- XaceServerAccessRec rec = {
- va_arg(ap, ClientPtr),
- va_arg(ap, Mask),
- Success /* default allow */
- };
+ XaceServerAccessRec rec;
+ rec.client = va_arg(ap, ClientPtr);
+ rec.access_mode = va_arg(ap, Mask);
+ rec.status = Success; /* default allow */
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_SCREEN_ACCESS:
case XACE_SCREENSAVER_ACCESS: {
- XaceScreenAccessRec rec = {
- va_arg(ap, ClientPtr),
- va_arg(ap, ScreenPtr),
- va_arg(ap, Mask),
- Success /* default allow */
- };
+ XaceScreenAccessRec rec;
+ rec.client = va_arg(ap, ClientPtr);
+ rec.screen = va_arg(ap, ScreenPtr);
+ rec.access_mode = va_arg(ap, Mask);
+ rec.status = Success; /* default allow */
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_AUTH_AVAIL: {
- XaceAuthAvailRec rec = {
- va_arg(ap, ClientPtr),
- va_arg(ap, XID)
- };
+ XaceAuthAvailRec rec;
+ rec.client = va_arg(ap, ClientPtr);
+ rec.authId = va_arg(ap, XID);
calldata = &rec;
break;
}
case XACE_KEY_AVAIL: {
- XaceKeyAvailRec rec = {
- va_arg(ap, xEventPtr),
- va_arg(ap, DeviceIntPtr),
- va_arg(ap, int)
- };
+ XaceKeyAvailRec rec;
+ rec.event = va_arg(ap, xEventPtr);
+ rec.keybd = va_arg(ap, DeviceIntPtr);
+ rec.count = va_arg(ap, int);
calldata = &rec;
break;
}
diff --git a/Xext/xace.h b/Xext/xace.h
index 0f803f9df..6029d87d8 100644
--- a/Xext/xace.h
+++ b/Xext/xace.h
@@ -1,6 +1,6 @@
/************************************************************
-Author: Eamon Walsh <ewalsh@epoch.ncsc.mil>
+Author: Eamon Walsh <ewalsh@tycho.nsa.gov>
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
diff --git a/Xext/xacestr.h b/Xext/xacestr.h
index ba115a427..84216c8c0 100644
--- a/Xext/xacestr.h
+++ b/Xext/xacestr.h
@@ -1,6 +1,6 @@
/************************************************************
-Author: Eamon Walsh <ewalsh@epoch.ncsc.mil>
+Author: Eamon Walsh <ewalsh@tycho.nsa.gov>
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
diff --git a/Xext/xcmisc.c b/Xext/xcmisc.c
index aed2e4eb4..f644cb458 100644
--- a/Xext/xcmisc.c
+++ b/Xext/xcmisc.c
@@ -37,7 +37,7 @@ from The Open Group.
#include "dixstruct.h"
#include "extnsionst.h"
#include "swaprep.h"
-#include <X11/extensions/xcmiscstr.h>
+#include <X11/extensions/xcmiscproto.h>
#include "modinit.h"
#if HAVE_STDINT_H
diff --git a/Xext/xf86bigfont.c b/Xext/xf86bigfont.c
index 7d4c69766..aeea23313 100644
--- a/Xext/xf86bigfont.c
+++ b/Xext/xf86bigfont.c
@@ -72,8 +72,7 @@
#include "dixfontstr.h"
#include "extnsionst.h"
-#define _XF86BIGFONT_SERVER_
-#include <X11/extensions/xf86bigfstr.h>
+#include <X11/extensions/xf86bigfproto.h>
static void XF86BigfontResetProc(
ExtensionEntry * /* extEntry */
@@ -629,7 +628,7 @@ ProcXF86BigfontQueryFont(
return BadAlloc;
}
reply->type = X_Reply;
- reply->length = (rlength - sizeof(xGenericReply)) >> 2;
+ reply->length = bytes_to_int32(rlength - sizeof(xGenericReply));
reply->sequenceNumber = client->sequence;
reply->minBounds = pFont->info.ink_minbounds;
reply->maxBounds = pFont->info.ink_maxbounds;
diff --git a/Xext/xres.c b/Xext/xres.c
index 5c04c1184..9dd08b113 100644
--- a/Xext/xres.c
+++ b/Xext/xres.c
@@ -75,7 +75,7 @@ ProcXResQueryClients (ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.num_clients = num_clients;
- rep.length = rep.num_clients * sz_xXResClient >> 2;
+ rep.length = bytes_to_int32(rep.num_clients * sz_xXResClient);
if (client->swapped) {
int n;
swaps (&rep.sequenceNumber, n);
@@ -144,7 +144,7 @@ ProcXResQueryClientResources (ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.num_types = num_types;
- rep.length = rep.num_types * sz_xXResType >> 2;
+ rep.length = bytes_to_int32(rep.num_types * sz_xXResType);
if (client->swapped) {
int n;
swaps (&rep.sequenceNumber, n);
diff --git a/Xext/xselinux.c b/Xext/xselinux.c
index 9898b2986..b9b16b6ce 100644
--- a/Xext/xselinux.c
+++ b/Xext/xselinux.c
@@ -1,6 +1,6 @@
/************************************************************
-Author: Eamon Walsh <ewalsh@epoch.ncsc.mil>
+Author: Eamon Walsh <ewalsh@tycho.nsa.gov>
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
@@ -913,6 +913,10 @@ SELinuxProperty(CallbackListPtr *pcbl, pointer unused, pointer calldata)
security_id_t tsid;
int rc;
+ /* Don't care about the new content check */
+ if (rec->access_mode & DixPostAccess)
+ return;
+
subj = dixLookupPrivate(&rec->client->devPrivates, subjectKey);
obj = dixLookupPrivate(&pProp->devPrivates, objectKey);
@@ -1279,7 +1283,7 @@ SELinuxSendContextReply(ClientPtr client, security_id_t sid)
}
rep.type = X_Reply;
- rep.length = (len + 3) >> 2;
+ rep.length = bytes_to_int32(len);
rep.sequenceNumber = client->sequence;
rep.context_len = len;
@@ -1314,14 +1318,6 @@ ProcSELinuxSetCreateContext(ClientPtr client, unsigned offset)
return BadAlloc;
}
- if (offset == CTX_DEV) {
- /* Device create context currently requires manage permission */
- rc = XaceHook(XACE_SERVER_ACCESS, client, DixManageAccess);
- if (rc != Success)
- goto out;
- privPtr = &serverClient->devPrivates;
- }
-
ptr = dixLookupPrivate(privPtr, subjectKey);
pSid = (security_id_t *)(ptr + offset);
sidput(*pSid);
@@ -1333,7 +1329,7 @@ ProcSELinuxSetCreateContext(ClientPtr client, unsigned offset)
avc_context_to_sid_raw(ctx, pSid) < 0)
rc = BadValue;
}
-out:
+
xfree(ctx);
return rc;
}
@@ -1506,8 +1502,8 @@ SELinuxPopulateItem(SELinuxListItemRec *i, PrivateRec **privPtr, CARD32 id,
return BadValue;
i->id = id;
- i->octx_len = (strlen(i->octx) + 4) >> 2;
- i->dctx_len = (strlen(i->dctx) + 4) >> 2;
+ i->octx_len = bytes_to_int32(strlen(i->octx) + 1);
+ i->dctx_len = bytes_to_int32(strlen(i->dctx) + 1);
*size += i->octx_len + i->dctx_len + 3;
return Success;
diff --git a/Xext/xselinux.h b/Xext/xselinux.h
index 065ff8dd2..e99f05b09 100644
--- a/Xext/xselinux.h
+++ b/Xext/xselinux.h
@@ -1,6 +1,6 @@
/************************************************************
-Author: Eamon Walsh <ewalsh@epoch.ncsc.mil>
+Author: Eamon Walsh <ewalsh@tycho.nsa.gov>
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
@@ -373,8 +373,8 @@ static struct security_class_mapping map[] = {
{ "x_device",
{ "read", /* DixReadAccess */
"write", /* DixWriteAccess */
- "", /* DixDestroyAccess */
- "", /* DixCreateAccess */
+ "destroy", /* DixDestroyAccess */
+ "create", /* DixCreateAccess */
"getattr", /* DixGetAttrAccess */
"setattr", /* DixSetAttrAccess */
"list_property", /* DixListPropAccess */
diff --git a/Xext/xtest.c b/Xext/xtest.c
index 32abe2a81..0400062d8 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -32,6 +32,7 @@
#include <X11/X.h>
#include <X11/Xproto.h>
+#include <X11/Xatom.h>
#include "misc.h"
#include "os.h"
#include "dixstruct.h"
@@ -44,19 +45,38 @@
#include "mi.h"
#include "xkbsrv.h"
#include "xkbstr.h"
-#define _XTEST_SERVER_
-#include <X11/extensions/XTest.h>
-#include <X11/extensions/xteststr.h>
+#include <X11/extensions/xtestproto.h>
#include <X11/extensions/XI.h>
#include <X11/extensions/XIproto.h>
#include "exglobals.h"
#include "mipointer.h"
+#include "xserver-properties.h"
+#include "exevents.h"
#include "modinit.h"
extern int DeviceValuator;
-extern int DeviceMotionNotify;
-extern DevPrivateKey XTstDevicePrivateKey;
+
+/* XTest events are sent during request processing and may be interruped by
+ * a SIGIO. We need a separate event list to avoid events overwriting each
+ * other's memory */
+static EventListPtr xtest_evlist;
+
+/* Used to store if a device is an XTest Virtual device */
+static int XTestDevicePrivateKeyIndex;
+DevPrivateKey XTestDevicePrivateKey = &XTestDevicePrivateKeyIndex;
+
+/**
+ * xtestpointer
+ * is the virtual pointer for XTest. It is the first slave
+ * device of the VCP.
+ * xtestkeyboard
+ * is the virtual keyboard for XTest. It is the first slave
+ * device of the VCK
+ *
+ * Neither of these devices can be deleted.
+ */
+DeviceIntPtr xtestpointer, xtestkeyboard;
#ifdef PANORAMIX
#include "panoramiX.h"
@@ -85,6 +105,8 @@ XTestExtensionInit(INITARGS)
AddExtension(XTestExtensionName, 0, 0,
ProcXTestDispatch, SProcXTestDispatch,
NULL, StandardMinorOpcode);
+
+ xtest_evlist = InitEventList(GetMaximumEventsNum());
}
static int
@@ -158,7 +180,6 @@ ProcXTestFakeInput(ClientPtr client)
int valuators[MAX_VALUATORS] = {0};
int numValuators = 0;
int firstValuator = 0;
- EventListPtr events;
int nevents = 0;
int i;
int base = 0;
@@ -190,11 +211,34 @@ ProcXTestFakeInput(ClientPtr client)
switch (type) {
case XI_DeviceKeyPress:
case XI_DeviceKeyRelease:
+ if (!dev->key)
+ {
+ client->errorValue = ev->u.u.type;
+ return BadValue;
+ }
+ break;
case XI_DeviceButtonPress:
case XI_DeviceButtonRelease:
+ if (!dev->button)
+ {
+ client->errorValue = ev->u.u.type;
+ return BadValue;
+ }
+ break;
case XI_DeviceMotionNotify:
+ if (!dev->valuator)
+ {
+ client->errorValue = ev->u.u.type;
+ return BadValue;
+ }
+ break;
case XI_ProximityIn:
case XI_ProximityOut:
+ if (!dev->proximity)
+ {
+ client->errorValue = ev->u.u.type;
+ return BadValue;
+ }
break;
default:
client->errorValue = ev->u.u.type;
@@ -271,8 +315,6 @@ ProcXTestFakeInput(ClientPtr client)
} else
{
- DeviceIntPtr it;
-
if (nev != 1)
return BadLength;
switch (type)
@@ -299,14 +341,7 @@ ProcXTestFakeInput(ClientPtr client)
return BadValue;
}
- /* When faking core events through XTest, we always fake through the
- * virtual test device.
- */
- for(it = inputInfo.devices; it ; it = it->next )
- if( !IsMaster(it) && it->u.master == dev &&
- dixLookupPrivate(&it->devPrivates, XTstDevicePrivateKey ))
- break;
- dev= it;
+ dev = GetXTestDevice(dev);
}
/* If the event has a time set, wait for it to pass */
@@ -396,26 +431,25 @@ ProcXTestFakeInput(ClientPtr client)
if (screenIsSaved == SCREEN_SAVER_ON)
dixSaveScreens(serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
- GetEventList(&events);
switch(type) {
case MotionNotify:
- nevents = GetPointerEvents(events, dev, type, 0, flags,
+ nevents = GetPointerEvents(xtest_evlist, dev, type, 0, flags,
firstValuator, numValuators, valuators);
break;
case ButtonPress:
case ButtonRelease:
- nevents = GetPointerEvents(events, dev, type, ev->u.u.detail,
+ nevents = GetPointerEvents(xtest_evlist, dev, type, ev->u.u.detail,
flags, firstValuator,
numValuators, valuators);
break;
case KeyPress:
case KeyRelease:
- nevents = GetKeyboardEvents(events, dev, type, ev->u.u.detail);
+ nevents = GetKeyboardEvents(xtest_evlist, dev, type, ev->u.u.detail);
break;
}
for (i = 0; i < nevents; i++)
- mieqProcessDeviceEvent(dev, (InternalEvent*)(events+i)->event, NULL);
+ mieqProcessDeviceEvent(dev, (InternalEvent*)(xtest_evlist+i)->event, NULL);
miPointerUpdateSprite(dev);
return client->noClientException;
@@ -549,3 +583,126 @@ SProcXTestDispatch (ClientPtr client)
return BadRequest;
}
}
+
+/**
+ * Allocate an virtual slave device for xtest events, this
+ * is a slave device to inputInfo master devices
+ */
+void InitXTestDevices(void)
+{
+ if(AllocXTestDevice(serverClient, "Virtual core",
+ &xtestpointer, &xtestkeyboard,
+ inputInfo.pointer, inputInfo.keyboard) != Success)
+ FatalError("Failed to allocate XTest devices");
+
+ if (ActivateDevice(xtestpointer, TRUE) != Success ||
+ ActivateDevice(xtestkeyboard, TRUE) != Success)
+ FatalError("Failed to activate XTest core devices.");
+ if (!EnableDevice(xtestpointer, TRUE) ||
+ !EnableDevice(xtestkeyboard, TRUE))
+ FatalError("Failed to enable XTest core devices.");
+
+ AttachDevice(NULL, xtestpointer, inputInfo.pointer);
+ AttachDevice(NULL, xtestkeyboard, inputInfo.keyboard);
+}
+
+/**
+ * Don't allow changing the XTest property.
+ */
+static int
+DeviceSetXTestProperty(DeviceIntPtr dev, Atom property,
+ XIPropertyValuePtr prop, BOOL checkonly)
+{
+ if (property == XIGetKnownProperty(XI_PROP_XTEST_DEVICE))
+ return BadAccess;
+
+ return Success;
+}
+
+/**
+ * Allocate a device pair that is initialised as a slave
+ * device with properties that identify the devices as belonging
+ * to XTest subsystem.
+ * This only creates the pair, Activate/Enable Device
+ * still need to be called.
+ */
+int AllocXTestDevice (ClientPtr client, char* name,
+ DeviceIntPtr* ptr, DeviceIntPtr* keybd,
+ DeviceIntPtr master_ptr, DeviceIntPtr master_keybd)
+{
+ int retval;
+ int len = strlen(name);
+ char *xtestname = xcalloc(len + 7, 1 );
+ char dummy = 1;
+
+ strncpy( xtestname, name, len);
+ strncat( xtestname, " XTEST", 6 );
+
+ retval = AllocDevicePair( client, xtestname, ptr, keybd, CorePointerProc, CoreKeyboardProc, FALSE);
+ if ( retval == Success ){
+ dixSetPrivate(&((*ptr)->devPrivates), XTestDevicePrivateKey, (void *)master_ptr->id);
+ dixSetPrivate(&((*keybd)->devPrivates), XTestDevicePrivateKey, (void *)master_keybd->id);
+ }
+
+ xfree( xtestname );
+
+ XIChangeDeviceProperty(*ptr, XIGetKnownProperty(XI_PROP_XTEST_DEVICE),
+ XA_INTEGER, 8, PropModeReplace, 1, &dummy,
+ FALSE);
+ XISetDevicePropertyDeletable(*ptr, XIGetKnownProperty(XI_PROP_XTEST_DEVICE), FALSE);
+ XIRegisterPropertyHandler(*ptr, DeviceSetXTestProperty, NULL, NULL);
+ XIChangeDeviceProperty(*keybd, XIGetKnownProperty(XI_PROP_XTEST_DEVICE),
+ XA_INTEGER, 8, PropModeReplace, 1, &dummy,
+ FALSE);
+ XISetDevicePropertyDeletable(*keybd, XIGetKnownProperty(XI_PROP_XTEST_DEVICE), FALSE);
+ XIRegisterPropertyHandler(*keybd, DeviceSetXTestProperty, NULL, NULL);
+
+ return retval;
+}
+
+/**
+ * If master is NULL, return TRUE if the given device is an xtest device or
+ * FALSE otherwise.
+ * If master is not NULL, return TRUE if the given device is this master's
+ * xtest device.
+ */
+BOOL
+IsXTestDevice(DeviceIntPtr dev, DeviceIntPtr master)
+{
+ int is_XTest = FALSE;
+ int mid;
+ void *tmp; /* shut up, gcc! */
+
+ if (IsMaster(dev))
+ return is_XTest;
+
+ tmp = dixLookupPrivate(&dev->devPrivates, XTestDevicePrivateKey);
+ mid = (int)tmp;
+
+ /* deviceid 0 is reserved for XIAllDevices, non-zero mid means XTest
+ * device */
+ if ((!master && mid) ||
+ (master && mid == master->id))
+ is_XTest = TRUE;
+
+ return is_XTest;
+}
+
+/**
+ * @return The X Test virtual device for the given master.
+ */
+DeviceIntPtr
+GetXTestDevice(DeviceIntPtr master)
+{
+ DeviceIntPtr it;
+
+ for (it = inputInfo.devices; it; it = it->next)
+ {
+ if (IsXTestDevice(it, master))
+ return it;
+ }
+
+ /* This only happens if master is a slave device. don't do that */
+ return NULL;
+}
+
diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index fcb61e476..04cd11a3f 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -42,8 +42,7 @@ SOFTWARE.
#include <X11/extensions/Xvproto.h>
#include "xvdix.h"
#ifdef MITSHM
-#define _XSHM_SERVER_
-#include <X11/extensions/shmstr.h>
+#include <X11/extensions/shmproto.h>
#endif
#include "xvdisp.h"
@@ -423,12 +422,12 @@ ProcXvQueryAdaptors(ClientPtr client)
pa = pxvs->pAdaptors;
while (na--)
{
- totalSize += (strlen(pa->name) + 3) & ~3;
+ totalSize += pad_to_int32(strlen(pa->name));
totalSize += pa->nFormats * sz_xvFormat;
pa++;
}
- rep.length = totalSize >> 2;
+ rep.length = bytes_to_int32(totalSize);
_WriteQueryAdaptorsReply(client, &rep);
@@ -498,11 +497,11 @@ ProcXvQueryEncodings(ClientPtr client)
totalSize = ne * sz_xvEncodingInfo;
while (ne--)
{
- totalSize += (strlen(pe->name) + 3) & ~3;
+ totalSize += pad_to_int32(strlen(pe->name));
pe++;
}
- rep.length = totalSize >> 2;
+ rep.length = bytes_to_int32(totalSize);
_WriteQueryEncodingsReply(client, &rep);
@@ -923,7 +922,7 @@ ProcXvQueryPortAttributes(ClientPtr client)
for(i = 0, pAtt = pPort->pAdaptor->pAttributes;
i < pPort->pAdaptor->nAttributes; i++, pAtt++)
{
- rep.text_size += (strlen(pAtt->name) + 1 + 3) & ~3L;
+ rep.text_size += pad_to_int32(strlen(pAtt->name) + 1);
}
rep.length = (pPort->pAdaptor->nAttributes * sz_xvAttributeInfo)
@@ -939,7 +938,7 @@ ProcXvQueryPortAttributes(ClientPtr client)
Info.flags = pAtt->flags;
Info.min = pAtt->min_value;
Info.max = pAtt->max_value;
- Info.size = (size + 3) & ~3L;
+ Info.size = pad_to_int32(size);
_WriteAttributeInfo(client, &Info);
@@ -999,7 +998,7 @@ ProcXvPutImage(ClientPtr client)
size = (*pPort->pAdaptor->ddQueryImageAttributes)(client,
pPort, pImage, &width, &height, NULL, NULL);
size += sizeof(xvPutImageReq);
- size = (size + 3) >> 2;
+ size = bytes_to_int32(size);
if((width < stuff->width) || (height < stuff->height))
return BadValue;
@@ -1203,7 +1202,7 @@ ProcXvListImageFormats(ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.num_formats = pPort->pAdaptor->nImages;
- rep.length = pPort->pAdaptor->nImages * sz_xvImageFormatInfo >> 2;
+ rep.length = bytes_to_int32(pPort->pAdaptor->nImages * sz_xvImageFormatInfo);
_WriteListImageFormatsReply(client, &rep);
diff --git a/Xext/xvmc.c b/Xext/xvmc.c
index 879a222bd..b7bb0fc1b 100644
--- a/Xext/xvmc.c
+++ b/Xext/xvmc.c
@@ -153,7 +153,7 @@ ProcXvMCListSurfaceTypes(ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.num = (adaptor) ? adaptor->num_surfaces : 0;
- rep.length = rep.num * sizeof(xvmcSurfaceInfo) >> 2;
+ rep.length = bytes_to_int32(rep.num * sizeof(xvmcSurfaceInfo));
WriteToClient(client, sizeof(xvmcListSurfaceTypesReply), (char*)&rep);
@@ -519,7 +519,7 @@ ProcXvMCListSubpictureTypes(ClientPtr client)
if(surface->compatible_subpictures)
rep.num = surface->compatible_subpictures->num_xvimages;
- rep.length = rep.num * sizeof(xvImageFormatInfo) >> 2;
+ rep.length = bytes_to_int32(rep.num * sizeof(xvImageFormatInfo));
WriteToClient(client, sizeof(xvmcListSubpictureTypesReply), (char*)&rep);
@@ -588,8 +588,8 @@ ProcXvMCGetDRInfo(ClientPtr client)
rep.major = pScreenPriv->major;
rep.minor = pScreenPriv->minor;
rep.patchLevel = pScreenPriv->patchLevel;
- rep.nameLen = (strlen(pScreenPriv->clientDriverName) + 4) >> 2;
- rep.busIDLen = (strlen(pScreenPriv->busID) + 4) >> 2;
+ rep.nameLen = bytes_to_int32(strlen(pScreenPriv->clientDriverName) + 1);
+ rep.busIDLen = bytes_to_int32(strlen(pScreenPriv->busID) + 1);
rep.length = rep.nameLen + rep.busIDLen;
rep.nameLen <<=2;
diff --git a/Xi/chgdctl.c b/Xi/chgdctl.c
index 89e5a2d93..901a0e419 100644
--- a/Xi/chgdctl.c
+++ b/Xi/chgdctl.c
@@ -142,7 +142,7 @@ ProcXChangeDeviceControl(ClientPtr client)
REQUEST(xChangeDeviceControlReq);
REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq);
- len = stuff->length - (sizeof(xChangeDeviceControlReq) >> 2);
+ len = stuff->length - bytes_to_int32(sizeof(xChangeDeviceControlReq));
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);
if (ret != Success)
goto out;
@@ -155,8 +155,8 @@ ProcXChangeDeviceControl(ClientPtr client)
switch (stuff->control) {
case DEVICE_RESOLUTION:
r = (xDeviceResolutionCtl *) & stuff[1];
- if ((len < (sizeof(xDeviceResolutionCtl) >> 2)) ||
- (len != (sizeof(xDeviceResolutionCtl) >> 2) + r->num_valuators)) {
+ if ((len < bytes_to_int32(sizeof(xDeviceResolutionCtl))) ||
+ (len != bytes_to_int32(sizeof(xDeviceResolutionCtl)) + r->num_valuators)) {
ret = BadLength;
goto out;
}
diff --git a/Xi/chgfctl.c b/Xi/chgfctl.c
index e193e1384..9189702c1 100644
--- a/Xi/chgfctl.c
+++ b/Xi/chgfctl.c
@@ -441,14 +441,14 @@ ProcXChangeFeedbackControl(ClientPtr client)
REQUEST(xChangeFeedbackControlReq);
REQUEST_AT_LEAST_SIZE(xChangeFeedbackControlReq);
- len = stuff->length - (sizeof(xChangeFeedbackControlReq) >> 2);
+ len = stuff->length - bytes_to_int32(sizeof(xChangeFeedbackControlReq));
rc = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);
if (rc != Success)
return rc;
switch (stuff->feedbackid) {
case KbdFeedbackClass:
- if (len != (sizeof(xKbdFeedbackCtl) >> 2))
+ if (len != bytes_to_int32(sizeof(xKbdFeedbackCtl)))
return BadLength;
for (k = dev->kbdfeed; k; k = k->next)
@@ -457,7 +457,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
(xKbdFeedbackCtl *) & stuff[1]);
break;
case PtrFeedbackClass:
- if (len != (sizeof(xPtrFeedbackCtl) >> 2))
+ if (len != bytes_to_int32(sizeof(xPtrFeedbackCtl)))
return BadLength;
for (p = dev->ptrfeed; p; p = p->next)
@@ -473,7 +473,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
if (client->swapped) {
swaps(&f->num_keysyms, n);
}
- if (len != ((sizeof(xStringFeedbackCtl) >> 2) + f->num_keysyms))
+ if (len != (bytes_to_int32(sizeof(xStringFeedbackCtl)) + f->num_keysyms))
return BadLength;
for (s = dev->stringfeed; s; s = s->next)
@@ -483,7 +483,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
break;
}
case IntegerFeedbackClass:
- if (len != (sizeof(xIntegerFeedbackCtl) >> 2))
+ if (len != bytes_to_int32(sizeof(xIntegerFeedbackCtl)))
return BadLength;
for (i = dev->intfeed; i; i = i->next)
@@ -492,7 +492,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
(xIntegerFeedbackCtl *)&stuff[1]);
break;
case LedFeedbackClass:
- if (len != (sizeof(xLedFeedbackCtl) >> 2))
+ if (len != bytes_to_int32(sizeof(xLedFeedbackCtl)))
return BadLength;
for (l = dev->leds; l; l = l->next)
@@ -501,7 +501,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
(xLedFeedbackCtl *) & stuff[1]);
break;
case BellFeedbackClass:
- if (len != (sizeof(xBellFeedbackCtl) >> 2))
+ if (len != bytes_to_int32(sizeof(xBellFeedbackCtl)))
return BadLength;
for (b = dev->bell; b; b = b->next)
diff --git a/Xi/chgkmap.c b/Xi/chgkmap.c
index 854c17f3b..e4b9e154c 100644
--- a/Xi/chgkmap.c
+++ b/Xi/chgkmap.c
@@ -107,7 +107,7 @@ ProcXChangeDeviceKeyMapping(ClientPtr client)
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);
if (ret != Success)
return ret;
- len = stuff->length - (sizeof(xChangeDeviceKeyMappingReq) >> 2);
+ len = stuff->length - bytes_to_int32(sizeof(xChangeDeviceKeyMappingReq));
ret = ChangeKeyMapping(client, dev, len, DeviceMappingNotify,
stuff->firstKeyCode, stuff->keyCodes,
diff --git a/Xi/chgprop.c b/Xi/chgprop.c
index d8e37a7c7..d24a24638 100644
--- a/Xi/chgprop.c
+++ b/Xi/chgprop.c
@@ -104,7 +104,7 @@ ProcXChangeDeviceDontPropagateList(ClientPtr client)
REQUEST(xChangeDeviceDontPropagateListReq);
REQUEST_AT_LEAST_SIZE(xChangeDeviceDontPropagateListReq);
- if (stuff->length != (sizeof(xChangeDeviceDontPropagateListReq) >> 2) +
+ if (stuff->length != bytes_to_int32(sizeof(xChangeDeviceDontPropagateListReq)) +
stuff->count)
return BadLength;
diff --git a/Xi/exevents.c b/Xi/exevents.c
index e54af094e..0211e72b7 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -76,6 +76,7 @@ SOFTWARE.
#include "xace.h"
#include "xiquerydevice.h" /* For List*Info */
#include "eventconvert.h"
+#include "eventstr.h"
#include <X11/extensions/XKBproto.h>
#include "xkbsrv.h"
@@ -130,6 +131,8 @@ IsPointerEvent(InternalEvent* event)
case ET_Motion:
/* XXX: enter/leave ?? */
return TRUE;
+ default:
+ break;
}
return FALSE;
}
@@ -678,91 +681,49 @@ void
XISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master, DeviceChangedEvent *dce)
{
xXIDeviceChangedEvent *dcce;
- int len = sizeof(xXIDeviceChangedEvent);
- int nkeys;
- char *ptr;
-
- if (dce->buttons.num_buttons)
- {
- len += sizeof(xXIButtonInfo);
- len += dce->buttons.num_buttons * sizeof(Atom); /* button names */
- len += ((((dce->buttons.num_buttons + 7)/8) + 3)/4) * 4;
- }
- if (dce->num_valuators)
- len += sizeof(xXIValuatorInfo) * dce->num_valuators;
-
- nkeys = (dce->keys.max_keycode > 0) ?
- dce->keys.max_keycode - dce->keys.min_keycode + 1 : 0;
- if (nkeys > 0)
- {
- len += sizeof(xXIKeyInfo);
- len += sizeof(CARD32) * nkeys; /* keycodes */
- }
+ int rc;
- dcce = xcalloc(1, len);
- if (!dcce)
+ rc = EventToXI2((InternalEvent*)dce, (xEvent**)&dcce);
+ if (rc != Success)
{
- ErrorF("[Xi] BadAlloc in SendDeviceChangedEvent.\n");
+ ErrorF("[Xi] event conversion from DCE failed with code %d\n", rc);
return;
}
- dcce->type = GenericEvent;
- dcce->extension = IReqCode;
- dcce->evtype = XI_DeviceChanged;
- dcce->time = GetTimeInMillis();
- dcce->deviceid = master->id;
- dcce->sourceid = device->id;
- dcce->reason = (dce->flags & DEVCHANGE_DEVICE_CHANGE) ? XIDeviceChange : XISlaveSwitch;
- dcce->num_classes = 0;
- dcce->length = (len - sizeof(xEvent))/4;
-
- ptr = (char*)&dcce[1];
- if (dce->buttons.num_buttons)
- {
- dcce->num_classes++;
- ptr += ListButtonInfo(device, (xXIButtonInfo*)ptr);
- }
-
- if (nkeys)
- {
- dcce->num_classes++;
- ptr += ListKeyInfo(device, (xXIKeyInfo*)ptr);
- }
-
- if (dce->num_valuators)
- {
- int i;
-
- dcce->num_classes += dce->num_valuators;
- for (i = 0; i < dce->num_valuators; i++)
- ptr += ListValuatorInfo(device, (xXIValuatorInfo*)ptr, i);
- }
-
/* we don't actually swap if there's a NullClient, swapping is done
* later when event is delivered. */
SendEventToAllWindows(master, XI_DeviceChangedMask, (xEvent*)dcce, 1);
+ xfree(dcce);
}
static void
ChangeMasterDeviceClasses(DeviceIntPtr device, DeviceChangedEvent *dce)
{
- DeviceIntPtr master = device->u.master;
+ DeviceIntPtr slave;
+ int rc;
- if (IsMaster(device))
+ /* For now, we don't have devices that change physically. */
+ if (!IsMaster(device))
return;
- if (!master) /* if device was set floating between SIGIO and now */
- return;
+ rc = dixLookupDevice(&slave, dce->sourceid, serverClient, DixReadAccess);
+
+ if (rc != Success)
+ return; /* Device has disappeared */
+ if (!slave->u.master)
+ return; /* set floating since the event */
- master = GetMaster(device,
- (dce->flags & DEVCHANGE_POINTER_EVENT) ? MASTER_POINTER : MASTER_KEYBOARD);
+ if (slave->u.master->id != dce->masterid)
+ return; /* not our slave anymore, don't care */
- master->public.devicePrivate = device->public.devicePrivate;
+ /* FIXME: we probably need to send a DCE for the new slave now */
+
+ device->public.devicePrivate = slave->public.devicePrivate;
/* FIXME: the classes may have changed since we generated the event. */
- DeepCopyDeviceClasses(device, master, dce);
- XISendDeviceChangedEvent(device, master, dce);
+ DeepCopyDeviceClasses(slave, device, dce);
+ XISendDeviceChangedEvent(slave, device, dce);
}
/**
@@ -853,7 +814,8 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent* event)
return DONT_PROCESS;
kptr = &k->down[key >> 3];
- if (*kptr & bit) /* don't allow ddx to generate multiple downs */
+ /* don't allow ddx to generate multiple downs, but repeats are okay */
+ if ((*kptr & bit) && !event->key_repeat)
return DONT_PROCESS;
if (device->valuator)
device->valuator->motionHintWindow = NullWindow;
@@ -986,7 +948,11 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
CHECKEVENT(ev);
- if (ev->any.type == ET_Raw)
+ if (ev->any.type == ET_RawKeyPress ||
+ ev->any.type == ET_RawKeyRelease ||
+ ev->any.type == ET_RawButtonPress ||
+ ev->any.type == ET_RawButtonRelease ||
+ ev->any.type == ET_RawMotion)
{
ProcessRawEvent((RawDeviceEvent*)ev, device);
return;
@@ -1026,10 +992,12 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
event->mods.base = state->base_mods;
event->mods.latched = state->latched_mods;
event->mods.locked = state->locked_mods;
+ event->mods.effective = state->mods;
event->group.base = state->base_group;
event->group.latched = state->latched_group;
event->group.locked = state->locked_group;
+ event->group.effective = state->group;
}
ret = UpdateDeviceState(device, event);
@@ -1059,6 +1027,8 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
event->corestate = state;
key = event->detail.key;
break;
+ default:
+ break;
}
#if 0
@@ -1101,6 +1071,7 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
* already */
return;
}
+ break;
case ET_ButtonRelease:
event->detail.button = b->map[key];
if (!event->detail.button) { /* there's no button 0 */
@@ -1113,6 +1084,8 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
device->deviceGrab.grab->type == DeviceButtonPress ||
device->deviceGrab.grab->type == XI_ButtonPress))
deactivateDeviceGrab = TRUE;
+ default:
+ break;
}
@@ -1247,20 +1220,20 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail,
mouse = (IsMaster(dev) || dev->u.master) ? GetMaster(dev, MASTER_POINTER) : dev;
/* XI 2 event */
- btlen = (mouse->button) ? (mouse->button->numButtons + 7)/8 : 0;
- btlen = (btlen + 3)/4;
+ btlen = (mouse->button) ? bits_to_bytes(mouse->button->numButtons) : 0;
+ btlen = bytes_to_int32(btlen);
len = sizeof(xXIFocusInEvent) + btlen * 4;
xi2event = xcalloc(1, len);
xi2event->type = GenericEvent;
xi2event->extension = IReqCode;
xi2event->evtype = type;
- xi2event->length = (len - sizeof(xEvent))/4;
+ xi2event->length = bytes_to_int32(len - sizeof(xEvent));
xi2event->buttons_len = btlen;
xi2event->detail = detail;
xi2event->time = currentTime.milliseconds;
xi2event->deviceid = dev->id;
- xi2event->sourceid = 0; /*XXX */
+ xi2event->sourceid = dev->id; /* a device doesn't change focus by itself */
xi2event->mode = mode;
xi2event->root_x = FP1616(mouse->spriteInfo->sprite->hot.x, 0);
xi2event->root_y = FP1616(mouse->spriteInfo->sprite->hot.y, 0);
@@ -1274,10 +1247,12 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail,
xi2event->mods.base_mods = dev->key->xkbInfo->state.base_mods;
xi2event->mods.latched_mods = dev->key->xkbInfo->state.latched_mods;
xi2event->mods.locked_mods = dev->key->xkbInfo->state.locked_mods;
+ xi2event->mods.effective_mods = dev->key->xkbInfo->state.mods;
xi2event->group.base_group = dev->key->xkbInfo->state.base_group;
xi2event->group.latched_group = dev->key->xkbInfo->state.latched_group;
xi2event->group.locked_group = dev->key->xkbInfo->state.locked_group;
+ xi2event->group.effective_group = dev->key->xkbInfo->state.group;
}
FixUpEventFromWindow(dev, (xEvent*)xi2event, pWin, None, FALSE);
@@ -1441,7 +1416,7 @@ GrabButton(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr modifier_device,
WindowPtr pWin, confineTo;
CursorPtr cursor;
GrabPtr grab;
- int rc, type;
+ int rc, type = -1;
Mask access_mode = DixGrabAccess;
rc = CheckGrabValues(client, param);
@@ -1499,7 +1474,7 @@ GrabKey(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr modifier_device,
GrabPtr grab;
KeyClassPtr k = dev->key;
Mask access_mode = DixGrabAccess;
- int rc, type;
+ int rc, type = -1;
rc = CheckGrabValues(client, param);
if (rc != Success)
@@ -2000,7 +1975,7 @@ CheckDeviceGrabAndHintWindow(WindowPtr pWin, int type,
DeviceIntPtr dev;
dixLookupDevice(&dev, xE->deviceid & DEVICE_BITS, serverClient,
- DixReadAccess);
+ DixGrabAccess);
if (!dev)
return;
@@ -2154,7 +2129,7 @@ SendEventToAllWindows(DeviceIntPtr dev, Mask mask, xEvent * ev, int count)
* @param len Number of bytes in mask.
* @param mask Event mask in the form of (1 << eventtype)
*/
-void
+int
XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client,
unsigned int len, unsigned char* mask)
{
@@ -2174,16 +2149,22 @@ XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client,
}
}
- if (!others && len)
+ len = min(len, sizeof(others->xi2mask[dev->id]));
+
+ if (len && !others)
{
- AddExtensionClient(win, client, 0, 0);
+ if (AddExtensionClient(win, client, 0, 0) != Success)
+ return BadAlloc;
others= wOtherInputMasks(win)->inputClients;
}
- if (!len)
+ if (others)
memset(others->xi2mask[dev->id], 0, sizeof(others->xi2mask[dev->id]));
- else
+
+ if (len)
memcpy(others->xi2mask[dev->id], mask, len);
RecalculateDeviceDeliverableEvents(win);
+
+ return Success;
}
diff --git a/Xi/extinit.c b/Xi/extinit.c
index 1376f4fca..84b999c0c 100644
--- a/Xi/extinit.c
+++ b/Xi/extinit.c
@@ -525,6 +525,8 @@ SReplyIDispatch(ClientPtr client, int len, xGrabDeviceReply * rep)
SRepXIGetProperty(client, len, (xXIGetPropertyReply *) rep);
else if (rep->RepType == X_XIGetSelectedEvents)
SRepXIGetSelectedEvents(client, len, (xXIGetSelectedEventsReply *) rep);
+ else if (rep->RepType == X_XIGetFocus)
+ SRepXIGetFocus(client, len, (xXIGetFocusReply *) rep);
else {
FatalError("XINPUT confused sending swapped reply");
}
@@ -676,20 +678,11 @@ SDeviceChangedEvent(xXIDeviceChangedEvent* from, xXIDeviceChangedEvent* to)
*to = *from;
memcpy(&to[1], &from[1], from->length * 4);
- swaps(&to->sequenceNumber, n);
- swapl(&to->length, n);
- swaps(&to->evtype, n);
- swaps(&to->deviceid, n);
- swapl(&to->time, n);
- swaps(&to->num_classes, n);
- swaps(&to->sourceid, n);
-
- /* now swap the actual classes */
any = (xXIAnyInfo*)&to[1];
for (i = 0; i < to->num_classes; i++)
{
- swaps(&any->type, n);
- swaps(&any->length, n);
+ int length = any->length;
+
switch(any->type)
{
case KeyClass:
@@ -704,8 +697,10 @@ SDeviceChangedEvent(xXIDeviceChangedEvent* from, xXIDeviceChangedEvent* to)
case ButtonClass:
{
xXIButtonInfo *bi = (xXIButtonInfo*)any;
+ Atom *labels = (Atom*)((char*)bi + sizeof(xXIButtonInfo) +
+ pad_to_int32(bits_to_bytes(bi->num_buttons)));
for (j = 0; j < bi->num_buttons; j++)
- swapl(&bi[1 + j], n);
+ swapl(&labels[j], n);
swaps(&bi->num_buttons, n);
}
break;
@@ -722,8 +717,22 @@ SDeviceChangedEvent(xXIDeviceChangedEvent* from, xXIDeviceChangedEvent* to)
}
break;
}
- any = (xXIAnyInfo*)((char*)any + any->length * 4);
+
+ swaps(&any->type, n);
+ swaps(&any->length, n);
+ swaps(&any->sourceid, n);
+
+ any = (xXIAnyInfo*)((char*)any + length * 4);
}
+
+ swaps(&to->sequenceNumber, n);
+ swapl(&to->length, n);
+ swaps(&to->evtype, n);
+ swaps(&to->deviceid, n);
+ swapl(&to->time, n);
+ swaps(&to->num_classes, n);
+ swaps(&to->sourceid, n);
+
}
static void SDeviceEvent(xXIDeviceEvent *from, xXIDeviceEvent *to)
@@ -733,14 +742,14 @@ static void SDeviceEvent(xXIDeviceEvent *from, xXIDeviceEvent *to)
char *ptr;
char *vmask;
- *to = *from;
- memcpy(&to[1], &from[1], from->length * 4);
+ memcpy(to, from, sizeof(xEvent) + from->length * 4);
swaps(&to->sequenceNumber, n);
swapl(&to->length, n);
swaps(&to->evtype, n);
swaps(&to->deviceid, n);
swapl(&to->time, n);
+ swapl(&to->detail, n);
swapl(&to->root, n);
swapl(&to->event, n);
swapl(&to->child, n);
@@ -754,11 +763,12 @@ static void SDeviceEvent(xXIDeviceEvent *from, xXIDeviceEvent *to)
swapl(&to->mods.base_mods, n);
swapl(&to->mods.latched_mods, n);
swapl(&to->mods.locked_mods, n);
+ swapl(&to->mods.effective_mods, n);
ptr = (char*)(&to[1]);
- ptr += from->buttons_len;
+ ptr += from->buttons_len * 4;
vmask = ptr; /* valuator mask */
- ptr += from->valuators_len;
+ ptr += from->valuators_len * 4;
for (i = 0; i < from->valuators_len * 32; i++)
{
if (BitIsOn(vmask, i))
@@ -809,8 +819,50 @@ static void SXIPropertyEvent(xXIPropertyEvent *from, xXIPropertyEvent *to)
swapl(&to->property, n);
}
+static void SRawEvent(xXIRawEvent *from, xXIRawEvent *to)
+{
+ char n;
+ int i;
+ FP3232 *values;
+ unsigned char *mask;
+
+ memcpy(to, from, sizeof(xEvent) + from->length * 4);
+
+ swaps(&to->sequenceNumber, n);
+ swapl(&to->length, n);
+ swaps(&to->evtype, n);
+ swaps(&to->deviceid, n);
+ swapl(&to->time, n);
+ swapl(&to->detail, n);
+
+
+ mask = (unsigned char*)&to[1];
+ values = (FP3232*)(mask + from->valuators_len * 4);
+
+ for (i = 0; i < from->valuators_len * 4 * 8; i++)
+ {
+ if (BitIsOn(mask, i))
+ {
+ /* for each bit set there are two FP3232 values on the wire, in
+ * the order abcABC for data and data_raw. Here we swap as if
+ * they were in aAbBcC order because it's easier and really
+ * doesn't matter.
+ */
+ swapl(&values->integral, n);
+ swapl(&values->frac, n);
+ values++;
+ swapl(&values->integral, n);
+ swapl(&values->frac, n);
+ values++;
+ }
+ }
+
+ swaps(&to->valuators_len, n);
+}
+
+
/** Event swapping function for XI2 events. */
-static void
+void
XI2EventSwap(xGenericEvent *from, xGenericEvent *to)
{
switch(from->evtype)
@@ -830,9 +882,23 @@ XI2EventSwap(xGenericEvent *from, xGenericEvent *to)
SXIPropertyEvent((xXIPropertyEvent*)from,
(xXIPropertyEvent*)to);
break;
- default:
+ case XI_Motion:
+ case XI_KeyPress:
+ case XI_KeyRelease:
+ case XI_ButtonPress:
+ case XI_ButtonRelease:
SDeviceEvent((xXIDeviceEvent*)from, (xXIDeviceEvent*)to);
break;
+ case XI_RawMotion:
+ case XI_RawKeyPress:
+ case XI_RawKeyRelease:
+ case XI_RawButtonPress:
+ case XI_RawButtonRelease:
+ SRawEvent((xXIRawEvent*)from, (xXIRawEvent*)to);
+ break;
+ default:
+ ErrorF("[Xi] Unknown event type to swap. This is a bug.\n");
+ break;
}
}
@@ -952,15 +1018,19 @@ FixExtensionEvents(ExtensionEntry * extEntry)
SetMaskForExtEvent(DeviceKeyPressMask, DeviceKeyPress);
AllowPropagateSuppress(DeviceKeyPressMask);
+ SetCriticalEvent(DeviceKeyPress);
SetMaskForExtEvent(DeviceKeyReleaseMask, DeviceKeyRelease);
AllowPropagateSuppress(DeviceKeyReleaseMask);
+ SetCriticalEvent(DeviceKeyRelease);
SetMaskForExtEvent(DeviceButtonPressMask, DeviceButtonPress);
AllowPropagateSuppress(DeviceButtonPressMask);
+ SetCriticalEvent(DeviceButtonPress);
SetMaskForExtEvent(DeviceButtonReleaseMask, DeviceButtonRelease);
AllowPropagateSuppress(DeviceButtonReleaseMask);
+ SetCriticalEvent(DeviceButtonRelease);
SetMaskForExtEvent(DeviceProximityMask, ProximityIn);
SetMaskForExtEvent(DeviceProximityMask, ProximityOut);
@@ -969,6 +1039,7 @@ FixExtensionEvents(ExtensionEntry * extEntry)
SetMaskForExtEvent(DevicePointerMotionMask, DeviceMotionNotify);
AllowPropagateSuppress(DevicePointerMotionMask);
+ SetCriticalEvent(DeviceMotionNotify);
SetEventInfo(DevicePointerMotionHintMask, _devicePointerMotionHint);
SetEventInfo(DeviceButton1MotionMask, _deviceButton1Motion);
diff --git a/Xi/getbmap.c b/Xi/getbmap.c
index 4a788c66b..e2d58972a 100644
--- a/Xi/getbmap.c
+++ b/Xi/getbmap.c
@@ -109,7 +109,7 @@ ProcXGetDeviceButtonMapping(ClientPtr client)
return BadMatch;
rep.nElts = b->numButtons;
- rep.length = (rep.nElts + (4 - 1)) / 4;
+ rep.length = bytes_to_int32(rep.nElts);
WriteReplyToClient(client, sizeof(xGetDeviceButtonMappingReply), &rep);
(void)WriteToClient(client, rep.nElts, (char *)&b->map[1]);
return Success;
diff --git a/Xi/getdctl.c b/Xi/getdctl.c
index abb4f9935..68181fa61 100644
--- a/Xi/getdctl.c
+++ b/Xi/getdctl.c
@@ -306,7 +306,7 @@ ProcXGetDeviceControl(ClientPtr client)
break;
}
- rep.length = (total_length + 3) >> 2;
+ rep.length = bytes_to_int32(total_length);
WriteReplyToClient(client, sizeof(xGetDeviceControlReply), &rep);
WriteToClient(client, total_length, savbuf);
xfree(savbuf);
diff --git a/Xi/getfctl.c b/Xi/getfctl.c
index 3a6dd4585..607765e98 100644
--- a/Xi/getfctl.c
+++ b/Xi/getfctl.c
@@ -358,7 +358,7 @@ ProcXGetFeedbackControl(ClientPtr client)
for (b = dev->bell; b; b = b->next)
CopySwapBellFeedback(client, b, &buf);
- rep.length = (total_length + 3) >> 2;
+ rep.length = bytes_to_int32(total_length);
WriteReplyToClient(client, sizeof(xGetFeedbackControlReply), &rep);
WriteToClient(client, total_length, savbuf);
xfree(savbuf);
diff --git a/Xi/getprop.c b/Xi/getprop.c
index dfa27f5cc..1f28a8a40 100644
--- a/Xi/getprop.c
+++ b/Xi/getprop.c
@@ -120,7 +120,7 @@ ProcXGetDeviceDontPropagateList(ClientPtr client)
if (count) {
rep.count = count;
buf = (XEventClass *) xalloc(rep.count * sizeof(XEventClass));
- rep.length = (rep.count * sizeof(XEventClass) + 3) >> 2;
+ rep.length = bytes_to_int32(rep.count * sizeof(XEventClass));
tbuf = buf;
for (i = 0; i < EMASKSIZE; i++)
diff --git a/Xi/getselev.c b/Xi/getselev.c
index ea9bd9ba5..90f6284e5 100644
--- a/Xi/getselev.c
+++ b/Xi/getselev.c
@@ -131,7 +131,7 @@ ProcXGetSelectedExtensionEvents(ClientPtr client)
total_length = (rep.all_clients_count + rep.this_client_count) *
sizeof(XEventClass);
- rep.length = (total_length + 3) >> 2;
+ rep.length = bytes_to_int32(total_length);
buf = (XEventClass *) xalloc(total_length);
tclient = buf;
diff --git a/Xi/getvers.c b/Xi/getvers.c
index c8eacc172..c8e9ebca6 100644
--- a/Xi/getvers.c
+++ b/Xi/getvers.c
@@ -96,8 +96,8 @@ ProcXGetExtensionVersion(ClientPtr client)
REQUEST(xGetExtensionVersionReq);
REQUEST_AT_LEAST_SIZE(xGetExtensionVersionReq);
- if (stuff->length != (sizeof(xGetExtensionVersionReq) +
- stuff->nbytes + 3) >> 2)
+ if (stuff->length != bytes_to_int32(sizeof(xGetExtensionVersionReq) +
+ stuff->nbytes))
return BadLength;
memset(&rep, 0, sizeof(xGetExtensionVersionReply));
diff --git a/Xi/grabdev.c b/Xi/grabdev.c
index adcd7e79f..925c9a6d2 100644
--- a/Xi/grabdev.c
+++ b/Xi/grabdev.c
@@ -84,7 +84,7 @@ SProcXGrabDevice(ClientPtr client)
swapl(&stuff->time, n);
swaps(&stuff->event_count, n);
- if (stuff->length != (sizeof(xGrabDeviceReq) >> 2) + stuff->event_count)
+ if (stuff->length != bytes_to_int32(sizeof(xGrabDeviceReq)) + stuff->event_count)
return BadLength;
SwapLongs((CARD32 *) (&stuff[1]), stuff->event_count);
@@ -110,7 +110,7 @@ ProcXGrabDevice(ClientPtr client)
REQUEST(xGrabDeviceReq);
REQUEST_AT_LEAST_SIZE(xGrabDeviceReq);
- if (stuff->length != (sizeof(xGrabDeviceReq) >> 2) + stuff->event_count)
+ if (stuff->length != bytes_to_int32(sizeof(xGrabDeviceReq)) + stuff->event_count)
return BadLength;
rep.repType = X_Reply;
@@ -181,10 +181,10 @@ CreateMaskFromList(ClientPtr client, XEventClass * list, int count,
for (i = 0; i < count; i++, list++) {
device = *list >> 8;
- if (device > 255) /* FIXME: we only use 7 bit for devices? */
+ if (device > 255)
return BadClass;
- rc = dixLookupDevice(&tdev, device, client, DixReadAccess);
+ rc = dixLookupDevice(&tdev, device, client, DixUseAccess);
if (rc != BadDevice && rc != Success)
return rc;
if (rc == BadDevice || (dev != NULL && tdev != dev))
diff --git a/Xi/grabdevb.c b/Xi/grabdevb.c
index 7cd5cc474..e235f5313 100644
--- a/Xi/grabdevb.c
+++ b/Xi/grabdevb.c
@@ -110,7 +110,7 @@ ProcXGrabDeviceButton(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xGrabDeviceButtonReq);
if (stuff->length !=
- (sizeof(xGrabDeviceButtonReq) >> 2) + stuff->event_count)
+ bytes_to_int32(sizeof(xGrabDeviceButtonReq)) + stuff->event_count)
return BadLength;
ret = dixLookupDevice(&dev, stuff->grabbed_device, client, DixGrabAccess);
@@ -119,14 +119,14 @@ ProcXGrabDeviceButton(ClientPtr client)
if (stuff->modifier_device != UseXKeyboard) {
ret = dixLookupDevice(&mdev, stuff->modifier_device, client,
- DixReadAccess);
+ DixUseAccess);
if (ret != Success)
return ret;
if (mdev->key == NULL)
return BadMatch;
} else {
mdev = PickKeyboard(client);
- ret = XaceHook(XACE_DEVICE_ACCESS, client, mdev, DixReadAccess);
+ ret = XaceHook(XACE_DEVICE_ACCESS, client, mdev, DixUseAccess);
if (ret != Success)
return ret;
}
diff --git a/Xi/grabdevk.c b/Xi/grabdevk.c
index 5ffecd25d..b34867b5f 100644
--- a/Xi/grabdevk.c
+++ b/Xi/grabdevk.c
@@ -107,7 +107,7 @@ ProcXGrabDeviceKey(ClientPtr client)
REQUEST(xGrabDeviceKeyReq);
REQUEST_AT_LEAST_SIZE(xGrabDeviceKeyReq);
- if (stuff->length != (sizeof(xGrabDeviceKeyReq) >> 2) + stuff->event_count)
+ if (stuff->length != bytes_to_int32(sizeof(xGrabDeviceKeyReq)) + stuff->event_count)
return BadLength;
ret = dixLookupDevice(&dev, stuff->grabbed_device, client, DixGrabAccess);
@@ -116,14 +116,14 @@ ProcXGrabDeviceKey(ClientPtr client)
if (stuff->modifier_device != UseXKeyboard) {
ret = dixLookupDevice(&mdev, stuff->modifier_device, client,
- DixReadAccess);
+ DixUseAccess);
if (ret != Success)
return ret;
if (mdev->key == NULL)
return BadMatch;
} else {
mdev = PickKeyboard(client);
- ret = XaceHook(XACE_DEVICE_ACCESS, client, mdev, DixReadAccess);
+ ret = XaceHook(XACE_DEVICE_ACCESS, client, mdev, DixUseAccess);
if (ret != Success)
return ret;
}
diff --git a/Xi/gtmotion.c b/Xi/gtmotion.c
index 55d45a363..8e91c5a47 100644
--- a/Xi/gtmotion.c
+++ b/Xi/gtmotion.c
@@ -136,7 +136,7 @@ ProcXGetDeviceMotionEvents(ClientPtr client)
(ScreenPtr) NULL, FALSE);
}
if (rep.nEvents > 0) {
- length = (rep.nEvents * size + 3) >> 2;
+ length = bytes_to_int32(rep.nEvents * size);
rep.length = length;
}
nEvents = rep.nEvents;
diff --git a/Xi/listdev.c b/Xi/listdev.c
index 95c1532b4..98ef7aa43 100644
--- a/Xi/listdev.c
+++ b/Xi/listdev.c
@@ -61,7 +61,6 @@ SOFTWARE.
#include <X11/extensions/XIproto.h>
#include "XIstubs.h"
#include "extnsionst.h"
-#include "exglobals.h" /* FIXME */
#include "exevents.h"
#include "xace.h"
#include "xkbsrv.h"
@@ -306,6 +305,25 @@ ListDeviceInfo(ClientPtr client, DeviceIntPtr d, xDeviceInfoPtr dev,
CopySwapClasses(client, d, &dev->num_classes, classbuf);
}
+/***********************************************************************
+ *
+ * This procedure checks if a device should be left off the list.
+ *
+ */
+
+static Bool
+ShouldSkipDevice(ClientPtr client, DeviceIntPtr d)
+{
+ /* don't send master devices other than VCP/VCK */
+ if (!IsMaster(d) || d == inputInfo.pointer || d == inputInfo.keyboard)
+ {
+ int rc = XaceHook(XACE_DEVICE_ACCESS, client, d, DixGetAttrAccess);
+ if (rc == Success)
+ return FALSE;
+ }
+ return TRUE;
+}
+
/***********************************************************************
*
@@ -323,12 +341,10 @@ ProcXListInputDevices(ClientPtr client)
xListInputDevicesReply rep;
int numdevs = 0;
int namesize = 1; /* need 1 extra byte for strcpy */
- int rc, size = 0;
+ int i = 0, size = 0;
int total_length;
- char *devbuf;
- char *classbuf;
- char *namebuf;
- char *savbuf;
+ char *devbuf, *classbuf, *namebuf, *savbuf;
+ Bool *skip;
xDeviceInfo *dev;
DeviceIntPtr d;
@@ -343,63 +359,60 @@ ProcXListInputDevices(ClientPtr client)
AddOtherInputDevices();
- for (d = inputInfo.devices; d; d = d->next) {
- if (IsMaster(d) &&
- d != inputInfo.pointer &&
- d != inputInfo.keyboard)
- continue; /* don't send master devices other than VCP/VCK */
+ /* allocate space for saving skip value */
+ skip = xcalloc(sizeof(Bool), inputInfo.numDevices);
+ if (!skip)
+ return BadAlloc;
+
+ /* figure out which devices to skip */
+ numdevs = 0;
+ for (d = inputInfo.devices; d; d = d->next, i++) {
+ skip[i] = ShouldSkipDevice(client, d);
+ if (skip[i])
+ continue;
- rc = XaceHook(XACE_DEVICE_ACCESS, client, d, DixGetAttrAccess);
- if (rc != Success)
- return rc;
SizeDeviceInfo(d, &namesize, &size);
numdevs++;
}
- for (d = inputInfo.off_devices; d; d = d->next) {
- if (IsMaster(d) &&
- d != inputInfo.pointer &&
- d != inputInfo.keyboard)
- continue; /* don't send master devices other than VCP/VCK */
+ for (d = inputInfo.off_devices; d; d = d->next, i++) {
+ skip[i] = ShouldSkipDevice(client, d);
+ if (skip[i])
+ continue;
- rc = XaceHook(XACE_DEVICE_ACCESS, client, d, DixGetAttrAccess);
- if (rc != Success)
- return rc;
SizeDeviceInfo(d, &namesize, &size);
numdevs++;
}
+ /* allocate space for reply */
total_length = numdevs * sizeof(xDeviceInfo) + size + namesize;
devbuf = (char *)xcalloc(1, total_length);
classbuf = devbuf + (numdevs * sizeof(xDeviceInfo));
namebuf = classbuf + size;
savbuf = devbuf;
+ /* fill in and send reply */
+ i = 0;
dev = (xDeviceInfoPtr) devbuf;
- for (d = inputInfo.devices; d; d = d->next)
- {
- if (IsMaster(d) &&
- d != inputInfo.pointer &&
- d != inputInfo.keyboard)
- continue; /* don't count master devices other than VCP/VCK */
+ for (d = inputInfo.devices; d; d = d->next, i++) {
+ if (skip[i])
+ continue;
ListDeviceInfo(client, d, dev++, &devbuf, &classbuf, &namebuf);
}
- for (d = inputInfo.off_devices; d; d = d->next)
- {
- if (IsMaster(d) &&
- d != inputInfo.pointer &&
- d != inputInfo.keyboard)
- continue; /* don't count master devices other than VCP/VCK */
+ for (d = inputInfo.off_devices; d; d = d->next, i++) {
+ if (skip[i])
+ continue;
ListDeviceInfo(client, d, dev++, &devbuf, &classbuf, &namebuf);
}
rep.ndevices = numdevs;
- rep.length = (total_length + 3) >> 2;
+ rep.length = bytes_to_int32(total_length);
WriteReplyToClient(client, sizeof(xListInputDevicesReply), &rep);
WriteToClient(client, total_length, savbuf);
xfree(savbuf);
+ xfree(skip);
return Success;
}
diff --git a/Xi/opendev.c b/Xi/opendev.c
index 46d55a820..3844d25a2 100644
--- a/Xi/opendev.c
+++ b/Xi/opendev.c
@@ -150,7 +150,7 @@ ProcXOpenDevice(ClientPtr client)
}
evbase[j].class = OtherClass;
evbase[j++].event_type_base = event_base[OtherClass];
- rep.length = (j * sizeof(xInputClassInfo) + 3) >> 2;
+ rep.length = bytes_to_int32(j * sizeof(xInputClassInfo));
rep.num_classes = j;
WriteReplyToClient(client, sizeof(xOpenDeviceReply), &rep);
WriteToClient(client, j * sizeof(xInputClassInfo), (char *)evbase);
diff --git a/Xi/queryst.c b/Xi/queryst.c
index c6858e4e0..60ec32ec9 100644
--- a/Xi/queryst.c
+++ b/Xi/queryst.c
@@ -161,7 +161,7 @@ ProcXQueryDeviceState(ClientPtr client)
}
rep.num_classes = num_classes;
- rep.length = (total_length + 3) >> 2;
+ rep.length = bytes_to_int32(total_length);
WriteReplyToClient(client, sizeof(xQueryDeviceStateReply), &rep);
if (total_length > 0)
WriteToClient(client, total_length, savbuf);
diff --git a/Xi/selectev.c b/Xi/selectev.c
index 013fdc930..031e602ad 100644
--- a/Xi/selectev.c
+++ b/Xi/selectev.c
@@ -154,7 +154,7 @@ ProcXSelectExtensionEvent(ClientPtr client)
REQUEST(xSelectExtensionEventReq);
REQUEST_AT_LEAST_SIZE(xSelectExtensionEventReq);
- if (stuff->length != (sizeof(xSelectExtensionEventReq) >> 2) + stuff->count)
+ if (stuff->length != bytes_to_int32(sizeof(xSelectExtensionEventReq)) + stuff->count)
return BadLength;
ret = dixLookupWindow(&pWin, stuff->window, client, DixReceiveAccess);
diff --git a/Xi/sendexev.c b/Xi/sendexev.c
index 63b45ee49..8629dd202 100644
--- a/Xi/sendexev.c
+++ b/Xi/sendexev.c
@@ -89,8 +89,8 @@ SProcXSendExtensionEvent(ClientPtr client)
swapl(&stuff->destination, n);
swaps(&stuff->count, n);
- if (stuff->length != (sizeof(xSendExtensionEventReq) >> 2) + stuff->count +
- (stuff->num_events * (sizeof(xEvent) >> 2)))
+ if (stuff->length != bytes_to_int32(sizeof(xSendExtensionEventReq)) + stuff->count +
+ bytes_to_int32(stuff->num_events * sizeof(xEvent)))
return BadLength;
eventP = (xEvent *) & stuff[1];
@@ -126,8 +126,8 @@ ProcXSendExtensionEvent(ClientPtr client)
REQUEST(xSendExtensionEventReq);
REQUEST_AT_LEAST_SIZE(xSendExtensionEventReq);
- if (stuff->length != (sizeof(xSendExtensionEventReq) >> 2) + stuff->count +
- (stuff->num_events * (sizeof(xEvent) >> 2)))
+ if (stuff->length != bytes_to_int32(sizeof(xSendExtensionEventReq)) + stuff->count +
+ (stuff->num_events * bytes_to_int32(sizeof(xEvent))))
return BadLength;
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixWriteAccess);
diff --git a/Xi/setbmap.c b/Xi/setbmap.c
index e7b8d4ac0..37c40e408 100644
--- a/Xi/setbmap.c
+++ b/Xi/setbmap.c
@@ -94,8 +94,8 @@ ProcXSetDeviceButtonMapping(ClientPtr client)
REQUEST(xSetDeviceButtonMappingReq);
REQUEST_AT_LEAST_SIZE(xSetDeviceButtonMappingReq);
- if (stuff->length != (sizeof(xSetDeviceButtonMappingReq) +
- stuff->map_length + 3) >> 2)
+ if (stuff->length !=
+ bytes_to_int32(sizeof(xSetDeviceButtonMappingReq) + stuff->map_length))
return BadLength;
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);
diff --git a/Xi/setdval.c b/Xi/setdval.c
index fe5f31691..b384f0d3c 100644
--- a/Xi/setdval.c
+++ b/Xi/setdval.c
@@ -100,7 +100,7 @@ ProcXSetDeviceValuators(ClientPtr client)
rep.status = Success;
rep.sequenceNumber = client->sequence;
- if (stuff->length != (sizeof(xSetDeviceValuatorsReq) >> 2) +
+ if (stuff->length != bytes_to_int32(sizeof(xSetDeviceValuatorsReq)) +
stuff->num_valuators)
return BadLength;
diff --git a/Xi/setmmap.c b/Xi/setmmap.c
index ffcc7f3ce..cbe5dc8c5 100644
--- a/Xi/setmmap.c
+++ b/Xi/setmmap.c
@@ -96,8 +96,8 @@ ProcXSetDeviceModifierMapping(ClientPtr client)
REQUEST(xSetDeviceModifierMappingReq);
REQUEST_AT_LEAST_SIZE(xSetDeviceModifierMappingReq);
- if (stuff->length != ((sizeof(xSetDeviceModifierMappingReq) >> 2) +
- (stuff->numKeyPerModifier << 1)))
+ if (stuff->length != bytes_to_int32(sizeof(xSetDeviceModifierMappingReq)) +
+ (stuff->numKeyPerModifier << 1))
return BadLength;
rep.repType = X_Reply;
diff --git a/Xi/stubs.c b/Xi/stubs.c
index 229394b93..400e937d1 100644
--- a/Xi/stubs.c
+++ b/Xi/stubs.c
@@ -153,7 +153,7 @@ AddOtherInputDevices(void)
void
OpenInputDevice(DeviceIntPtr dev, ClientPtr client, int *status)
{
- *status = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixReadAccess);
+ *status = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixUseAccess);
}
/****************************************************************************
diff --git a/Xi/xiallowev.h b/Xi/xiallowev.h
index 97a0f251e..3a417b9b1 100644
--- a/Xi/xiallowev.h
+++ b/Xi/xiallowev.h
@@ -23,10 +23,14 @@
* Author: Peter Hutterer
*/
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
#ifndef XIALLOWEV_H
-#define XIALLOWEV_H
+#define XIALLOWEV_H 1
int ProcXIAllowEvents(ClientPtr client);
int SProcXIAllowEvents(ClientPtr client);
-#endif
+#endif /* XIALLOWEV_H */
diff --git a/Xi/xichangecursor.c b/Xi/xichangecursor.c
index 7517d2c2e..f071e8406 100644
--- a/Xi/xichangecursor.c
+++ b/Xi/xichangecursor.c
@@ -60,6 +60,9 @@ SProcXIChangeCursor(ClientPtr client)
REQUEST(xXIChangeCursorReq);
swaps(&stuff->length, n);
+ swapl(&stuff->win, n);
+ swapl(&stuff->cursor, n);
+ swaps(&stuff->deviceid, n);
REQUEST_SIZE_MATCH(xXIChangeCursorReq);
return (ProcXIChangeCursor(client));
}
@@ -78,6 +81,9 @@ int ProcXIChangeCursor(ClientPtr client)
if (rc != Success)
return rc;
+ if (!IsMaster(pDev) || !IsPointerDevice(pDev))
+ return BadDevice;
+
if (stuff->win != None)
{
rc = dixLookupWindow(&pWin, stuff->win, client, DixSetAttrAccess);
@@ -95,7 +101,7 @@ int ProcXIChangeCursor(ClientPtr client)
else
{
rc = dixLookupResourceByType((pointer *)&pCursor, stuff->cursor,
- RT_CURSOR, client, DixReadAccess);
+ RT_CURSOR, client, DixUseAccess);
if (rc != Success)
return (rc == BadValue) ? BadCursor : rc;
}
diff --git a/Xi/xichangehierarchy.c b/Xi/xichangehierarchy.c
index 5401554ac..1a06e4555 100644
--- a/Xi/xichangehierarchy.c
+++ b/Xi/xichangehierarchy.c
@@ -54,8 +54,6 @@
#include "xichangehierarchy.h"
-extern DevPrivateKey XTstDevicePrivateKey;
-
/**
* Send the current state of the device hierarchy to all clients.
*/
@@ -114,7 +112,7 @@ void XISendDeviceHierarchyEvent(int flags[MAXDEVICES])
}
}
- ev->length = (ev->num_info * sizeof(xXIHierarchyInfo))/4;
+ ev->length = bytes_to_int32(ev->num_info * sizeof(xXIHierarchyInfo));
dummyDev.id = XIAllDevices;
SendEventToAllWindows(&dummyDev, (XI_HierarchyChangedMask >> 8), (xEvent*)ev, 1);
@@ -143,7 +141,7 @@ int SProcXIChangeHierarchy(ClientPtr client)
int
ProcXIChangeHierarchy(ClientPtr client)
{
- DeviceIntPtr ptr, keybd, xtstptr, xtstkeybd;
+ DeviceIntPtr ptr, keybd, XTestptr, XTestkeybd;
xXIAnyHierarchyChangeInfo *any;
int required_len = sizeof(xXIChangeHierarchyReq);
char n;
@@ -178,7 +176,9 @@ ProcXIChangeHierarchy(ClientPtr client)
strncpy(name, (char*)&c[1], c->name_len);
- rc = AllocDevicePair(client, name, &ptr, &keybd, TRUE);
+ rc = AllocDevicePair(client, name, &ptr, &keybd,
+ CorePointerProc, CoreKeyboardProc,
+ TRUE);
if (rc != Success)
{
xfree(name);
@@ -188,8 +188,9 @@ ProcXIChangeHierarchy(ClientPtr client)
if (!c->send_core)
ptr->coreEvents = keybd->coreEvents = FALSE;
- /* Allocate virtual slave devices for xtest events */
- rc = AllocXtstDevice(client, name, &xtstptr, &xtstkeybd);
+ /* Allocate virtual slave devices for xtest events */
+ rc = AllocXTestDevice(client, name, &XTestptr, &XTestkeybd,
+ ptr, keybd);
if (rc != Success)
{
@@ -202,10 +203,10 @@ ProcXIChangeHierarchy(ClientPtr client)
flags[ptr->id] |= XIMasterAdded;
flags[keybd->id] |= XIMasterAdded;
- ActivateDevice(xtstptr, FALSE);
- ActivateDevice(xtstkeybd, FALSE);
- flags[xtstptr->id] |= XISlaveAdded;
- flags[xtstkeybd->id] |= XISlaveAdded;
+ ActivateDevice(XTestptr, FALSE);
+ ActivateDevice(XTestkeybd, FALSE);
+ flags[XTestptr->id] |= XISlaveAdded;
+ flags[XTestkeybd->id] |= XISlaveAdded;
if (c->enable)
{
@@ -214,18 +215,18 @@ ProcXIChangeHierarchy(ClientPtr client)
flags[ptr->id] |= XIDeviceEnabled;
flags[keybd->id] |= XIDeviceEnabled;
- EnableDevice(xtstptr, FALSE);
- EnableDevice(xtstkeybd, FALSE);
- flags[xtstptr->id] |= XIDeviceEnabled;
- flags[xtstkeybd->id] |= XIDeviceEnabled;
+ EnableDevice(XTestptr, FALSE);
+ EnableDevice(XTestkeybd, FALSE);
+ flags[XTestptr->id] |= XIDeviceEnabled;
+ flags[XTestkeybd->id] |= XIDeviceEnabled;
}
/* Attach the XTest virtual devices to the newly
created master device */
- AttachDevice(NULL, xtstptr, ptr);
- AttachDevice(NULL, xtstkeybd, keybd);
- flags[xtstptr->id] |= XISlaveAttached;
- flags[xtstkeybd->id] |= XISlaveAttached;
+ AttachDevice(NULL, XTestptr, ptr);
+ AttachDevice(NULL, XTestkeybd, keybd);
+ flags[XTestptr->id] |= XISlaveAttached;
+ flags[XTestkeybd->id] |= XISlaveAttached;
xfree(name);
}
@@ -233,7 +234,6 @@ ProcXIChangeHierarchy(ClientPtr client)
case XIRemoveMaster:
{
xXIRemoveMasterInfo* r = (xXIRemoveMasterInfo*)any;
- DeviceIntPtr xtstdevice;
if (r->return_mode != XIAttachToMaster &&
r->return_mode != XIFloating)
@@ -259,77 +259,33 @@ ProcXIChangeHierarchy(ClientPtr client)
goto unwind;
}
- for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next )
- if( !IsMaster(xtstdevice) && xtstdevice->u.master == ptr &&
- dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey ))
- break;
- rc = dixLookupDevice(&xtstptr, xtstdevice->id, client,
+ ptr = GetMaster(ptr, MASTER_POINTER);
+ rc = dixLookupDevice(&ptr,
+ ptr->id,
+ client,
+ DixDestroyAccess);
+ if (rc != Success)
+ goto unwind;
+ keybd = GetMaster(ptr, MASTER_KEYBOARD);
+ rc = dixLookupDevice(&keybd,
+ keybd->id,
+ client,
DixDestroyAccess);
if (rc != Success)
goto unwind;
- /* find keyboards to destroy */
- if (IsPointerDevice(ptr))
- {
- rc = dixLookupDevice(&keybd,
- ptr->spriteInfo->paired->id,
- client,
- DixDestroyAccess);
- if (rc != Success)
- goto unwind;
-
- }
- else
- {
- keybd = ptr;
- rc = dixLookupDevice(&ptr,
- keybd->spriteInfo->paired->id,
- client,
- DixDestroyAccess);
- if (rc != Success)
- goto unwind;
-
- }
-
- /* handle xtst pointer / keyboard slave devices */
- if ( IsPointerDevice(xtstptr))
- {
- /* Search the matching keyboard */
- for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next )
- if( !IsMaster(xtstdevice) &&
- xtstdevice->u.master == keybd &&
- IsKeyboardDevice(xtstdevice) &&
- dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey ))
- break;
-
- rc = dixLookupDevice(&xtstkeybd,
- xtstdevice->id,
- client,
- DixDestroyAccess);
-
- if (rc != Success)
- goto unwind;
- }
- else
- {
- xtstkeybd = xtstptr;
- /* Search the matching pointer */
- for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next )
- if( !IsMaster(xtstdevice) &&
- xtstdevice->u.master == ptr &&
- IsPointerDevice(xtstdevice) &&
- dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey )
- )
- break;
- rc = dixLookupDevice(&xtstptr,
- xtstdevice->id,
- client,
- DixDestroyAccess);
+ XTestptr = GetXTestDevice(ptr);
+ rc = dixLookupDevice(&XTestptr, XTestptr->id, client,
+ DixDestroyAccess);
+ if (rc != Success)
+ goto unwind;
- if (rc != Success)
- goto unwind;
- }
+ XTestkeybd = GetXTestDevice(keybd);
+ rc = dixLookupDevice(&XTestkeybd, XTestkeybd->id, client,
+ DixDestroyAccess);
+ if (rc != Success)
+ goto unwind;
/* Disabling sends the devices floating, reattach them if
* desired. */
@@ -340,7 +296,7 @@ ProcXIChangeHierarchy(ClientPtr client)
newkeybd;
rc = dixLookupDevice(&newptr, r->return_pointer,
- client, DixWriteAccess);
+ client, DixAddAccess);
if (rc != Success)
goto unwind;
@@ -352,7 +308,7 @@ ProcXIChangeHierarchy(ClientPtr client)
}
rc = dixLookupDevice(&newkeybd, r->return_keyboard,
- client, DixWriteAccess);
+ client, DixAddAccess);
if (rc != Success)
goto unwind;
@@ -385,26 +341,26 @@ ProcXIChangeHierarchy(ClientPtr client)
/* can't disable until we removed pairing */
keybd->spriteInfo->paired = NULL;
ptr->spriteInfo->paired = NULL;
- xtstptr->spriteInfo->paired = NULL;
- xtstkeybd->spriteInfo->paired = NULL;
+ XTestptr->spriteInfo->paired = NULL;
+ XTestkeybd->spriteInfo->paired = NULL;
- /* disable the remove the devices, xtst devices must be done first
+ /* disable the remove the devices, XTest devices must be done first
else the sprites they rely on will be destroyed */
- DisableDevice(xtstptr, FALSE);
- DisableDevice(xtstkeybd, FALSE);
+ DisableDevice(XTestptr, FALSE);
+ DisableDevice(XTestkeybd, FALSE);
DisableDevice(keybd, FALSE);
DisableDevice(ptr, FALSE);
- flags[xtstptr->id] |= XIDeviceDisabled | XISlaveDetached;
- flags[xtstkeybd->id] |= XIDeviceDisabled | XISlaveDetached;
+ flags[XTestptr->id] |= XIDeviceDisabled | XISlaveDetached;
+ flags[XTestkeybd->id] |= XIDeviceDisabled | XISlaveDetached;
flags[keybd->id] |= XIDeviceDisabled;
flags[ptr->id] |= XIDeviceDisabled;
- RemoveDevice(xtstptr, FALSE);
- RemoveDevice(xtstkeybd, FALSE);
+ RemoveDevice(XTestptr, FALSE);
+ RemoveDevice(XTestkeybd, FALSE);
RemoveDevice(keybd, FALSE);
RemoveDevice(ptr, FALSE);
- flags[xtstptr->id] |= XISlaveRemoved;
- flags[xtstkeybd->id] |= XISlaveRemoved;
+ flags[XTestptr->id] |= XISlaveRemoved;
+ flags[XTestkeybd->id] |= XISlaveRemoved;
flags[keybd->id] |= XIMasterRemoved;
flags[ptr->id] |= XIMasterRemoved;
}
@@ -412,10 +368,9 @@ ProcXIChangeHierarchy(ClientPtr client)
case XIDetachSlave:
{
xXIDetachSlaveInfo* c = (xXIDetachSlaveInfo*)any;
- DeviceIntPtr *xtstdevice;
rc = dixLookupDevice(&ptr, c->deviceid, client,
- DixWriteAccess);
+ DixManageAccess);
if (rc != Success)
goto unwind;
@@ -426,11 +381,8 @@ ProcXIChangeHierarchy(ClientPtr client)
goto unwind;
}
- xtstdevice = dixLookupPrivate( &ptr->devPrivates,
- XTstDevicePrivateKey );
-
- /* Don't allow changes to Xtst Devices, these are fixed */
- if( xtstdevice )
+ /* Don't allow changes to XTest Devices, these are fixed */
+ if (IsXTestDevice(ptr, NULL))
{
client->errorValue = c->deviceid;
rc = BadDevice;
@@ -445,10 +397,9 @@ ProcXIChangeHierarchy(ClientPtr client)
{
xXIAttachSlaveInfo* c = (xXIAttachSlaveInfo*)any;
DeviceIntPtr newmaster;
- DeviceIntPtr *xtstdevice;
rc = dixLookupDevice(&ptr, c->deviceid, client,
- DixWriteAccess);
+ DixManageAccess);
if (rc != Success)
goto unwind;
@@ -459,11 +410,8 @@ ProcXIChangeHierarchy(ClientPtr client)
goto unwind;
}
- xtstdevice = dixLookupPrivate( &ptr->devPrivates,
- XTstDevicePrivateKey );
-
- /* Don't allow changes to Xtst Devices, these are fixed */
- if( xtstdevice )
+ /* Don't allow changes to XTest Devices, these are fixed */
+ if (IsXTestDevice(ptr, NULL))
{
client->errorValue = c->deviceid;
rc = BadDevice;
@@ -471,7 +419,7 @@ ProcXIChangeHierarchy(ClientPtr client)
}
rc = dixLookupDevice(&newmaster, c->new_master,
- client, DixWriteAccess);
+ client, DixAddAccess);
if (rc != Success)
goto unwind;
if (!IsMaster(newmaster))
diff --git a/Xi/xichangehierarchy.h b/Xi/xichangehierarchy.h
index b46cfb4e2..483c6cd72 100644
--- a/Xi/xichangehierarchy.h
+++ b/Xi/xichangehierarchy.h
@@ -41,4 +41,4 @@ int ProcXIChangeHierarchy(ClientPtr /* client */);
void XISendDeviceHierarchyEvent(int flags[]);
-#endif
+#endif /* CHDEVHIER_H */
diff --git a/Xi/xigetclientpointer.c b/Xi/xigetclientpointer.c
index 859d3fd00..401e89fb4 100644
--- a/Xi/xigetclientpointer.c
+++ b/Xi/xigetclientpointer.c
@@ -68,7 +68,7 @@ int ProcXIGetClientPointer(ClientPtr client)
if (stuff->win != None)
{
rc = dixLookupClient(&winclient, stuff->win, client,
- DixWriteAccess);
+ DixGetAttrAccess);
if (rc != Success)
return BadWindow;
diff --git a/Xi/xigrabdev.c b/Xi/xigrabdev.c
index 95beb832b..24ededcb1 100644
--- a/Xi/xigrabdev.c
+++ b/Xi/xigrabdev.c
@@ -39,6 +39,7 @@
#include <X11/extensions/XI2proto.h>
#include "exglobals.h" /* BadDevice */
+#include "exevents.h"
#include "xigrabdev.h"
int
@@ -66,6 +67,7 @@ ProcXIGrabDevice(ClientPtr client)
int ret = Success;
uint8_t status;
GrabMask mask;
+ int mask_len;
REQUEST(xXIGrabDeviceReq);
REQUEST_AT_LEAST_SIZE(xXIGrabDeviceReq);
@@ -77,8 +79,13 @@ ProcXIGrabDevice(ClientPtr client)
if (!IsMaster(dev))
stuff->paired_device_mode = GrabModeAsync;
+ if (XICheckInvalidMaskBits((unsigned char*)&stuff[1],
+ stuff->mask_len * 4) != Success)
+ return BadValue;
+
+ mask_len = min(sizeof(mask.xi2mask[stuff->deviceid]), stuff->mask_len * 4);
memset(mask.xi2mask, 0, sizeof(mask.xi2mask));
- memcpy(mask.xi2mask, (char*)&stuff[1], stuff->mask_len * 4);
+ memcpy(mask.xi2mask, (char*)&stuff[1], mask_len);
ret = GrabDevice(client, dev, stuff->grab_mode,
stuff->paired_device_mode,
diff --git a/Xi/xigrabdev.h b/Xi/xigrabdev.h
index 61369978e..08309c932 100644
--- a/Xi/xigrabdev.h
+++ b/Xi/xigrabdev.h
@@ -23,8 +23,12 @@
* Author: Peter Hutterer
*/
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
#ifndef XIGRABDEV_H
-#define XIGRABDEV_H
+#define XIGRABDEV_H 1
int ProcXIGrabDevice(ClientPtr client);
int SProcXIGrabDevice(ClientPtr client);
@@ -34,4 +38,4 @@ int SProcXIUngrabDevice(ClientPtr client);
void SRepXIGrabDevice(ClientPtr client, int size, xXIGrabDeviceReply * rep);
-#endif
+#endif /* XIGRABDEV_H */
diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c
index df0f5bedd..41a56b14e 100644
--- a/Xi/xipassivegrab.c
+++ b/Xi/xipassivegrab.c
@@ -86,6 +86,7 @@ ProcXIPassiveGrabDevice(ClientPtr client)
GrabMask mask;
GrabParameters param;
void *tmp;
+ int mask_len;
REQUEST(xXIPassiveGrabDeviceReq);
REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq);
@@ -102,7 +103,7 @@ ProcXIPassiveGrabDevice(ClientPtr client)
}
if (stuff->grab_type != XIGrabtypeButton &&
- stuff->grab_type != XIGrabtypeKeysym &&
+ stuff->grab_type != XIGrabtypeKeycode &&
stuff->grab_type != XIGrabtypeEnter &&
stuff->grab_type != XIGrabtypeFocusIn)
{
@@ -117,18 +118,13 @@ ProcXIPassiveGrabDevice(ClientPtr client)
return BadValue;
}
- if ((stuff->mask_len * 4) > XI2LASTEVENT)
- {
- unsigned char *bits = (unsigned char*)&stuff[1];
- for (i = XI2LASTEVENT; i < stuff->mask_len * 4; i++)
- {
- if (BitIsOn(bits, i))
- return BadValue;
- }
- }
+ if (XICheckInvalidMaskBits((unsigned char*)&stuff[1],
+ stuff->mask_len * 4) != Success)
+ return BadValue;
+ mask_len = min(sizeof(mask.xi2mask[stuff->deviceid]), stuff->mask_len * 4);
memset(mask.xi2mask, 0, sizeof(mask.xi2mask));
- memcpy(mask.xi2mask[stuff->deviceid], &stuff[1], stuff->mask_len * 4);
+ memcpy(mask.xi2mask[stuff->deviceid], &stuff[1], mask_len * 4);
rep.repType = X_Reply;
rep.RepType = X_XIPassiveGrabDevice;
@@ -180,7 +176,7 @@ ProcXIPassiveGrabDevice(ClientPtr client)
status = GrabButton(client, dev, mod_dev, stuff->detail,
&param, GRABTYPE_XI2, &mask);
break;
- case XIGrabtypeKeysym:
+ case XIGrabtypeKeycode:
status = GrabKey(client, dev, mod_dev, stuff->detail,
&param, GRABTYPE_XI2, &mask);
break;
@@ -265,7 +261,7 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
return rc;
if (stuff->grab_type != XIGrabtypeButton &&
- stuff->grab_type != XIGrabtypeKeysym &&
+ stuff->grab_type != XIGrabtypeKeycode &&
stuff->grab_type != XIGrabtypeEnter &&
stuff->grab_type != XIGrabtypeFocusIn)
{
@@ -295,7 +291,7 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
switch(stuff->grab_type)
{
case XIGrabtypeButton: tempGrab.type = XI_ButtonPress; break;
- case XIGrabtypeKeysym: tempGrab.type = XI_KeyPress; break;
+ case XIGrabtypeKeycode: tempGrab.type = XI_KeyPress; break;
case XIGrabtypeEnter: tempGrab.type = XI_Enter; break;
case XIGrabtypeFocusIn: tempGrab.type = XI_FocusIn; break;
}
diff --git a/Xi/xipassivegrab.h b/Xi/xipassivegrab.h
index 84fb5eb84..079e7c61b 100644
--- a/Xi/xipassivegrab.h
+++ b/Xi/xipassivegrab.h
@@ -23,8 +23,12 @@
* Author: Peter Hutterer
*/
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
#ifndef XIPASSIVEGRAB_H
-#define XIPASSIVEGRAB_H
+#define XIPASSIVEGRAB_H 1
int SProcXIPassiveUngrabDevice(ClientPtr client);
int ProcXIPassiveUngrabDevice(ClientPtr client);
@@ -32,4 +36,4 @@ void SRepXIPassiveGrabDevice(ClientPtr client, int size, xXIPassiveGrabDeviceRep
int ProcXIPassiveGrabDevice(ClientPtr client);
int SProcXIPassiveGrabDevice(ClientPtr client);
-#endif
+#endif /* XIPASSIVEGRAB_H */
diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c
index cd4946026..024dc444b 100644
--- a/Xi/xiproperty.c
+++ b/Xi/xiproperty.c
@@ -51,6 +51,7 @@ static struct dev_properties
char *name;
} dev_properties[] = {
{0, XI_PROP_ENABLED},
+ {0, XI_PROP_XTEST_DEVICE},
{0, XATOM_FLOAT},
{0, ACCEL_PROP_PROFILE_NUMBER},
{0, ACCEL_PROP_CONSTANT_DECELERATION},
@@ -858,7 +859,7 @@ ProcXListDeviceProperties (ClientPtr client)
REQUEST(xListDevicePropertiesReq);
REQUEST_SIZE_MATCH(xListDevicePropertiesReq);
- rc = dixLookupDevice (&dev, stuff->deviceid, client, DixReadAccess);
+ rc = dixLookupDevice (&dev, stuff->deviceid, client, DixListPropAccess);
if (rc != Success)
return rc;
@@ -894,7 +895,7 @@ ProcXChangeDeviceProperty (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xChangeDevicePropertyReq);
UpdateCurrentTime();
- rc = dixLookupDevice (&dev, stuff->deviceid, client, DixWriteAccess);
+ rc = dixLookupDevice (&dev, stuff->deviceid, client, DixSetPropAccess);
if (rc != Success)
return rc;
@@ -902,7 +903,7 @@ ProcXChangeDeviceProperty (ClientPtr client)
stuff->format, stuff->mode, stuff->nUnits);
len = stuff->nUnits;
- if (len > ((0xffffffff - sizeof(xChangeDevicePropertyReq)) >> 2))
+ if (len > (bytes_to_int32(0xffffffff - sizeof(xChangeDevicePropertyReq))))
return BadLength;
totalSize = len * (stuff->format/8);
@@ -922,7 +923,7 @@ ProcXDeleteDeviceProperty (ClientPtr client)
REQUEST_SIZE_MATCH(xDeleteDevicePropertyReq);
UpdateCurrentTime();
- rc = dixLookupDevice (&dev, stuff->deviceid, client, DixWriteAccess);
+ rc = dixLookupDevice (&dev, stuff->deviceid, client, DixSetPropAccess);
if (rc != Success)
return rc;
@@ -951,8 +952,8 @@ ProcXGetDeviceProperty (ClientPtr client)
if (stuff->delete)
UpdateCurrentTime();
rc = dixLookupDevice (&dev, stuff->deviceid, client,
- stuff->delete ? DixWriteAccess :
- DixReadAccess);
+ stuff->delete ? DixSetPropAccess :
+ DixGetPropAccess);
if (rc != Success)
return rc;
@@ -971,7 +972,7 @@ ProcXGetDeviceProperty (ClientPtr client)
reply.format = format;
reply.bytesAfter = bytes_after;
reply.propertyType = type;
- reply.length = (length + 3) >> 2;
+ reply.length = bytes_to_int32(length);
if (stuff->delete && (reply.bytesAfter == 0))
send_property_event(dev, stuff->property, XIPropertyDeleted);
@@ -1102,7 +1103,7 @@ ProcXIListProperties(ClientPtr client)
REQUEST(xXIListPropertiesReq);
REQUEST_SIZE_MATCH(xXIListPropertiesReq);
- rc = dixLookupDevice (&dev, stuff->deviceid, client, DixReadAccess);
+ rc = dixLookupDevice (&dev, stuff->deviceid, client, DixListPropAccess);
if (rc != Success)
return rc;
@@ -1138,14 +1139,14 @@ ProcXIChangeProperty(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xXIChangePropertyReq);
UpdateCurrentTime();
- rc = dixLookupDevice (&dev, stuff->deviceid, client, DixWriteAccess);
+ rc = dixLookupDevice (&dev, stuff->deviceid, client, DixSetPropAccess);
if (rc != Success)
return rc;
rc = check_change_property(client, stuff->property, stuff->type,
stuff->format, stuff->mode, stuff->num_items);
len = stuff->num_items;
- if (len > ((0xffffffff - sizeof(xXIChangePropertyReq)) >> 2))
+ if (len > bytes_to_int32(0xffffffff - sizeof(xXIChangePropertyReq)))
return BadLength;
totalSize = len * (stuff->format/8);
@@ -1165,7 +1166,7 @@ ProcXIDeleteProperty(ClientPtr client)
REQUEST_SIZE_MATCH(xXIDeletePropertyReq);
UpdateCurrentTime();
- rc = dixLookupDevice (&dev, stuff->deviceid, client, DixWriteAccess);
+ rc = dixLookupDevice (&dev, stuff->deviceid, client, DixSetPropAccess);
if (rc != Success)
return rc;
@@ -1195,8 +1196,8 @@ ProcXIGetProperty(ClientPtr client)
if (stuff->delete)
UpdateCurrentTime();
rc = dixLookupDevice (&dev, stuff->deviceid, client,
- stuff->delete ? DixWriteAccess :
- DixReadAccess);
+ stuff->delete ? DixSetPropAccess :
+ DixGetPropAccess);
if (rc != Success)
return rc;
@@ -1214,7 +1215,7 @@ ProcXIGetProperty(ClientPtr client)
reply.format = format;
reply.bytes_after = bytes_after;
reply.type = type;
- reply.length = (length + 3)/4;
+ reply.length = bytes_to_int32(length);
if (length && stuff->delete && (reply.bytes_after == 0))
send_property_event(dev, stuff->property, XIPropertyDeleted);
diff --git a/Xi/xiproperty.h b/Xi/xiproperty.h
index bc4bbaed9..69b41fafd 100644
--- a/Xi/xiproperty.h
+++ b/Xi/xiproperty.h
@@ -23,8 +23,12 @@
* Author: Peter Hutterer
*/
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
#ifndef XIPROPERTY_H
-#define XIPROPERTY_H
+#define XIPROPERTY_H 1
int ProcXListDeviceProperties (ClientPtr client);
int ProcXChangeDeviceProperty (ClientPtr client);
diff --git a/Xi/xiquerydevice.c b/Xi/xiquerydevice.c
index 6aa168521..68d91fa87 100644
--- a/Xi/xiquerydevice.c
+++ b/Xi/xiquerydevice.c
@@ -40,9 +40,11 @@
#include "xkbsrv.h"
#include "xserver-properties.h"
#include "exevents.h"
+#include "xace.h"
#include "xiquerydevice.h"
+static Bool ShouldSkipDevice(ClientPtr client, int deviceid, DeviceIntPtr d);
static int ListDeviceInfo(DeviceIntPtr dev, xXIDeviceInfo* info);
static int SizeDeviceInfo(DeviceIntPtr dev);
static void SwapDeviceInfo(DeviceIntPtr dev, xXIDeviceInfo* info);
@@ -65,8 +67,9 @@ ProcXIQueryDevice(ClientPtr client)
xXIQueryDeviceReply rep;
DeviceIntPtr dev = NULL;
int rc = Success;
- int len = 0;
+ int i = 0, len = 0;
char *info, *ptr;
+ Bool *skip = NULL;
REQUEST(xXIQueryDeviceReq);
REQUEST_SIZE_MATCH(xXIQueryDeviceReq);
@@ -79,28 +82,27 @@ ProcXIQueryDevice(ClientPtr client)
client->errorValue = stuff->deviceid;
return rc;
}
- }
-
- if (dev)
len += SizeDeviceInfo(dev);
+ }
else
{
- len = 0;
- for (dev = inputInfo.devices; dev; dev = dev->next)
+ skip = xcalloc(sizeof(Bool), inputInfo.numDevices);
+ if (!skip)
+ return BadAlloc;
+
+ for (dev = inputInfo.devices; dev; dev = dev->next, i++)
{
- if (stuff->deviceid == XIAllDevices ||
- (stuff->deviceid == XIAllMasterDevices && IsMaster(dev)))
+ skip[i] = ShouldSkipDevice(client, stuff->deviceid, dev);
+ if (!skip[i])
len += SizeDeviceInfo(dev);
}
- for (dev = inputInfo.off_devices; dev; dev = dev->next)
+ for (dev = inputInfo.off_devices; dev; dev = dev->next, i++)
{
- if (stuff->deviceid == XIAllDevices ||
- (stuff->deviceid == XIAllMasterDevices && IsMaster(dev)))
+ skip[i] = ShouldSkipDevice(client, stuff->deviceid, dev);
+ if (!skip[i])
len += SizeDeviceInfo(dev);
}
-
- dev = NULL;
}
info = xcalloc(1, len);
@@ -124,10 +126,10 @@ ProcXIQueryDevice(ClientPtr client)
rep.num_devices = 1;
} else
{
- for (dev = inputInfo.devices; dev; dev = dev->next)
+ i = 0;
+ for (dev = inputInfo.devices; dev; dev = dev->next, i++)
{
- if (stuff->deviceid == XIAllDevices ||
- (stuff->deviceid == XIAllMasterDevices && IsMaster(dev)))
+ if (!skip[i])
{
len = ListDeviceInfo(dev, (xXIDeviceInfo*)info);
if (client->swapped)
@@ -137,10 +139,9 @@ ProcXIQueryDevice(ClientPtr client)
}
}
- for (dev = inputInfo.off_devices; dev; dev = dev->next)
+ for (dev = inputInfo.off_devices; dev; dev = dev->next, i++)
{
- if (stuff->deviceid == XIAllDevices ||
- (stuff->deviceid == XIAllMasterDevices && IsMaster(dev)))
+ if (!skip[i])
{
len = ListDeviceInfo(dev, (xXIDeviceInfo*)info);
if (client->swapped)
@@ -154,6 +155,7 @@ ProcXIQueryDevice(ClientPtr client)
WriteReplyToClient(client, sizeof(xXIQueryDeviceReply), &rep);
WriteToClient(client, rep.length * 4, ptr);
xfree(ptr);
+ xfree(skip);
return rc;
}
@@ -172,6 +174,21 @@ SRepXIQueryDevice(ClientPtr client, int size, xXIQueryDeviceReply *rep)
}
+/**
+ * @return Whether the device should be included in the returned list.
+ */
+static Bool
+ShouldSkipDevice(ClientPtr client, int deviceid, DeviceIntPtr dev)
+{
+ /* if all devices are not being queried, only master devices are */
+ if (deviceid == XIAllDevices || IsMaster(dev))
+ {
+ int rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixGetAttrAccess);
+ if (rc == Success)
+ return FALSE;
+ }
+ return TRUE;
+}
/**
* @return The number of bytes needed to store this device's xXIDeviceInfo
@@ -183,7 +200,7 @@ SizeDeviceInfo(DeviceIntPtr dev)
int len = sizeof(xXIDeviceInfo);
/* 4-padded name */
- len += (((strlen(dev->name) + 3)/4)*4);
+ len += pad_to_int32(strlen(dev->name));
return len + SizeDeviceClasses(dev);
@@ -201,7 +218,7 @@ SizeDeviceClasses(DeviceIntPtr dev)
{
len += sizeof(xXIButtonInfo);
len += dev->button->numButtons * sizeof(Atom);
- len += ((((dev->button->numButtons + 7)/8) + 3)/4) * 4;
+ len += pad_to_int32(bits_to_bytes(dev->button->numButtons));
}
if (dev->key)
@@ -229,11 +246,12 @@ ListButtonInfo(DeviceIntPtr dev, xXIButtonInfo* info)
int mask_len;
int i;
- mask_len = (((dev->button->numButtons + 7)/8) + 3)/4; /* 4-byte units*/
+ mask_len = bytes_to_int32(bits_to_bytes(dev->button->numButtons));
info->type = ButtonClass;
info->num_buttons = dev->button->numButtons;
- info->length = sizeof(xXIButtonInfo)/4 + mask_len + info->num_buttons;
+ info->length = bytes_to_int32(sizeof(xXIButtonInfo)) +
+ info->num_buttons + mask_len;
info->sourceid = dev->button->sourceid;
bits = (unsigned char*)&info[1];
@@ -383,7 +401,7 @@ ListDeviceInfo(DeviceIntPtr dev, xXIDeviceInfo* info)
info->enabled = dev->enabled;
total_len = sizeof(xXIDeviceInfo);
- len = ((info->name_len + 3)/4) * 4;
+ len = pad_to_int32(info->name_len);
memset(any, 0, len);
strncpy(any, dev->name, info->name_len);
any += len;
@@ -439,7 +457,7 @@ SwapDeviceInfo(DeviceIntPtr dev, xXIDeviceInfo* info)
int i;
/* Skip over name */
- any += (((info->name_len + 3)/4) * 4);
+ any += pad_to_int32(info->name_len);
for (i = 0; i < info->num_classes; i++)
{
diff --git a/Xi/xiquerypointer.c b/Xi/xiquerypointer.c
index 033e9cb8d..ea640fcd9 100644
--- a/Xi/xiquerypointer.c
+++ b/Xi/xiquerypointer.c
@@ -68,6 +68,8 @@ SProcXIQueryPointer(ClientPtr client)
REQUEST(xXIQueryPointerReq);
swaps(&stuff->length, n);
+ swaps(&stuff->deviceid, n);
+ swapl(&stuff->win, n);
return (ProcXIQueryPointer(client));
}
@@ -82,21 +84,26 @@ ProcXIQueryPointer(ClientPtr client)
SpritePtr pSprite;
XkbStatePtr state;
char *buttons = NULL;
+ int buttons_size = 0; /* size of buttons array */
REQUEST(xXIQueryPointerReq);
REQUEST_SIZE_MATCH(xXIQueryPointerReq);
rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixReadAccess);
if (rc != Success)
+ {
+ client->errorValue = stuff->deviceid;
return rc;
+ }
- if (pDev->valuator == NULL)
+ if (pDev->valuator == NULL || IsKeyboardDevice(pDev) ||
+ (!IsMaster(pDev) && pDev->u.master)) /* no attached devices */
{
client->errorValue = stuff->deviceid;
return BadDevice;
}
- rc = dixLookupWindow(&pWin, stuff->win, client, DixReadAccess);
+ rc = dixLookupWindow(&pWin, stuff->win, client, DixGetAttrAccess);
if (rc != Success)
{
SendErrorToClient(client, IReqCode, X_XIQueryPointer,
@@ -107,33 +114,42 @@ ProcXIQueryPointer(ClientPtr client)
if (pDev->valuator->motionHintWindow)
MaybeStopHint(pDev, client);
- kbd = GetPairedDevice(pDev);
+ if (IsMaster(pDev))
+ kbd = GetPairedDevice(pDev);
+ else
+ kbd = (pDev->key) ? pDev : NULL;
pSprite = pDev->spriteInfo->sprite;
+
+ memset(&rep, 0, sizeof(rep));
rep.repType = X_Reply;
rep.RepType = X_XIQueryPointer;
- rep.length = 5;
+ rep.length = 6;
rep.sequenceNumber = client->sequence;
rep.root = (GetCurrentRootWindow(pDev))->drawable.id;
rep.root_x = FP1616((root_x = pSprite->hot.x), 0);
rep.root_y = FP1616((root_y = pSprite->hot.y), 0);
rep.child = None;
- state = &kbd->key->xkbInfo->prev_state;
- rep.mods.base_mods = state->base_mods;
- rep.mods.latched_mods = state->latched_mods;
- rep.mods.locked_mods = state->locked_mods;
-
- rep.group.base_group = state->base_group;
- rep.group.latched_group = state->latched_group;
- rep.group.locked_group = state->locked_group;
+ if (kbd)
+ {
+ state = &kbd->key->xkbInfo->prev_state;
+ rep.mods.base_mods = state->base_mods;
+ rep.mods.latched_mods = state->latched_mods;
+ rep.mods.locked_mods = state->locked_mods;
+
+ rep.group.base_group = state->base_group;
+ rep.group.latched_group = state->latched_group;
+ rep.group.locked_group = state->locked_group;
+ }
if (pDev->button)
{
int i, down;
- rep.buttons_len = (((pDev->button->numButtons + 7)/8) + 3)/4;
+ rep.buttons_len = bytes_to_int32(bits_to_bytes(pDev->button->numButtons));
rep.length += rep.buttons_len;
- buttons = xcalloc(rep.buttons_len, 4);
+ buttons_size = rep.buttons_len * 4;
+ buttons = xcalloc(1, buttons_size);
if (!buttons)
return BadAlloc;
@@ -186,7 +202,7 @@ ProcXIQueryPointer(ClientPtr client)
WriteReplyToClient(client, sizeof(xXIQueryPointerReply), &rep);
if (buttons)
- WriteToClient(client, rep.buttons_len * 4, buttons);
+ WriteToClient(client, buttons_size, buttons);
xfree(buttons);
@@ -208,6 +224,14 @@ SRepXIQueryPointer(ClientPtr client, int size,
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
+ swapl(&rep->root, n);
+ swapl(&rep->child, n);
+ swapl(&rep->root_x, n);
+ swapl(&rep->root_y, n);
+ swapl(&rep->win_x, n);
+ swapl(&rep->win_y, n);
+ swaps(&rep->buttons_len, n);
+
WriteToClient(client, size, (char *)rep);
}
diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c
index a8763a2a9..672edab3b 100644
--- a/Xi/xiselectev.c
+++ b/Xi/xiselectev.c
@@ -36,6 +36,25 @@
#include "xiselectev.h"
+/**
+ * Check the given mask (in len bytes) for invalid mask bits.
+ * Invalid mask bits are any bits above XI2LastEvent.
+ *
+ * @return BadValue if at least one invalid bit is set or Success otherwise.
+ */
+int XICheckInvalidMaskBits(unsigned char *mask, int len)
+{
+ if (len >= XIMaskLen(XI2LASTEVENT))
+ {
+ int i;
+ for (i = XI2LASTEVENT + 1; i < len * 8; i++)
+ if (BitIsOn(mask, i))
+ return BadValue;
+ }
+
+ return Success;
+}
+
int
SProcXISelectEvents(ClientPtr client)
{
@@ -54,7 +73,7 @@ SProcXISelectEvents(ClientPtr client)
{
swaps(&evmask->deviceid, n);
swaps(&evmask->mask_len, n);
- evmask = (xXIEventMask*)(((char*)evmask) + evmask->mask_len * 4);
+ evmask = (xXIEventMask*)(((char*)&evmask[1]) + evmask->mask_len * 4);
}
return (ProcXISelectEvents(client));
@@ -63,12 +82,13 @@ SProcXISelectEvents(ClientPtr client)
int
ProcXISelectEvents(ClientPtr client)
{
- int rc, num_masks, i;
+ int rc, num_masks;
WindowPtr win;
DeviceIntPtr dev;
DeviceIntRec dummy;
xXIEventMask *evmask;
int *types = NULL;
+ int len;
REQUEST(xXISelectEventsReq);
REQUEST_AT_LEAST_SIZE(xXISelectEventsReq);
@@ -80,14 +100,21 @@ ProcXISelectEvents(ClientPtr client)
if (rc != Success)
return rc;
+ len = sz_xXISelectEventsReq;
+
/* check request validity */
evmask = (xXIEventMask*)&stuff[1];
num_masks = stuff->num_masks;
while(num_masks--)
{
+ len += sizeof(xXIEventMask) + evmask->mask_len * 4;
+
+ if (bytes_to_int32(len) > stuff->length)
+ return BadLength;
+
if (evmask->deviceid != XIAllDevices &&
evmask->deviceid != XIAllMasterDevices)
- rc = dixLookupDevice(&dev, evmask->deviceid, client, DixReadAccess);
+ rc = dixLookupDevice(&dev, evmask->deviceid, client, DixUseAccess);
else {
/* XXX: XACE here? */
}
@@ -102,20 +129,29 @@ ProcXISelectEvents(ClientPtr client)
return BadValue;
}
- if ((evmask->mask_len * 4) >= (XI2LASTEVENT + 8)/8)
+ /* Raw events may only be selected on root windows */
+ if (win->parent && evmask->mask_len >= 1)
{
unsigned char *bits = (unsigned char*)&evmask[1];
- for (i = XI2LASTEVENT + 1; i < evmask->mask_len * 4; i++)
- {
- if (BitIsOn(bits, i))
- return BadValue;
- }
+ if (BitIsOn(bits, XI_RawKeyPress) ||
+ BitIsOn(bits, XI_RawKeyRelease) ||
+ BitIsOn(bits, XI_RawButtonPress) ||
+ BitIsOn(bits, XI_RawButtonRelease) ||
+ BitIsOn(bits, XI_RawMotion))
+ return BadValue;
}
+ if (XICheckInvalidMaskBits((unsigned char*)&evmask[1],
+ evmask->mask_len * 4) != Success)
+ return BadValue;
+
evmask = (xXIEventMask*)(((unsigned char*)evmask) + evmask->mask_len * 4);
evmask++;
}
+ if (bytes_to_int32(len) != stuff->length)
+ return BadLength;
+
/* Set masks on window */
evmask = (xXIEventMask*)&stuff[1];
num_masks = stuff->num_masks;
@@ -127,8 +163,10 @@ ProcXISelectEvents(ClientPtr client)
dummy.id = evmask->deviceid;
dev = &dummy;
} else
- dixLookupDevice(&dev, evmask->deviceid, client, DixReadAccess);
- XISetEventMask(dev, win, client, evmask->mask_len * 4, (unsigned char*)&evmask[1]);
+ dixLookupDevice(&dev, evmask->deviceid, client, DixUseAccess);
+ if (XISetEventMask(dev, win, client, evmask->mask_len * 4,
+ (unsigned char*)&evmask[1]) != Success)
+ return BadAlloc;
evmask = (xXIEventMask*)(((unsigned char*)evmask) + evmask->mask_len * 4);
evmask++;
}
@@ -169,7 +207,7 @@ ProcXIGetSelectedEvents(ClientPtr client)
REQUEST(xXIGetSelectedEventsReq);
REQUEST_SIZE_MATCH(xXIGetSelectedEventsReq);
- rc = dixLookupWindow(&win, stuff->win, client, DixReceiveAccess);
+ rc = dixLookupWindow(&win, stuff->win, client, DixGetAttrAccess);
if (rc != Success)
return rc;
@@ -196,7 +234,7 @@ ProcXIGetSelectedEvents(ClientPtr client)
return Success;
}
- buffer = xcalloc(MAXDEVICES, sizeof(xXIEventMask) + ((XI2MASKSIZE + 3)/4) * 4);
+ buffer = xcalloc(MAXDEVICES, sizeof(xXIEventMask) + pad_to_int32(XI2MASKSIZE));
if (!buffer)
return BadAlloc;
@@ -208,7 +246,7 @@ ProcXIGetSelectedEvents(ClientPtr client)
if (i > 2)
{
- rc = dixLookupDevice(&dev, i, client, DixReadAccess);
+ rc = dixLookupDevice(&dev, i, client, DixGetAttrAccess);
if (rc != Success)
continue;
}
diff --git a/Xi/xiselectev.h b/Xi/xiselectev.h
index 5efc6487a..21ec9371b 100644
--- a/Xi/xiselectev.h
+++ b/Xi/xiselectev.h
@@ -27,9 +27,14 @@
#include <dix-config.h>
#endif
+#ifndef XISELECTEVENTS_H
+#define XISELECTEVENTS_H 1
+
int SProcXISelectEvents(ClientPtr client);
int ProcXISelectEvents(ClientPtr client);
int SProcXIGetSelectedEvents(ClientPtr client);
int ProcXIGetSelectedEvents(ClientPtr client);
void SRepXIGetSelectedEvents(ClientPtr client,
int len, xXIGetSelectedEventsReply *rep);
+
+#endif /* _XISELECTEVENTS_H_ */
diff --git a/Xi/xisetclientpointer.c b/Xi/xisetclientpointer.c
index afc13d676..09db8ff75 100644
--- a/Xi/xisetclientpointer.c
+++ b/Xi/xisetclientpointer.c
@@ -72,7 +72,7 @@ ProcXISetClientPointer(ClientPtr client)
REQUEST_SIZE_MATCH(xXISetClientPointerReq);
- rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixWriteAccess);
+ rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixManageAccess);
if (rc != Success)
{
client->errorValue = stuff->deviceid;
@@ -90,7 +90,7 @@ ProcXISetClientPointer(ClientPtr client)
if (stuff->win != None)
{
rc = dixLookupClient(&targetClient, stuff->win, client,
- DixWriteAccess);
+ DixManageAccess);
if (rc != Success)
return BadWindow;
@@ -98,10 +98,11 @@ ProcXISetClientPointer(ClientPtr client)
} else
targetClient = client;
- if (!SetClientPointer(targetClient, pDev))
+ rc = SetClientPointer(targetClient, pDev);
+ if (rc != Success)
{
client->errorValue = stuff->deviceid;
- return BadDevice;
+ return rc;
}
return Success;
diff --git a/Xi/xisetdevfocus.c b/Xi/xisetdevfocus.c
index 32f7e597b..059424e41 100644
--- a/Xi/xisetdevfocus.c
+++ b/Xi/xisetdevfocus.c
@@ -118,3 +118,13 @@ ProcXIGetFocus(ClientPtr client)
WriteReplyToClient(client, sizeof(xXIGetFocusReply), &rep);
return Success;
}
+
+void
+SRepXIGetFocus(ClientPtr client, int len, xXIGetFocusReply *rep)
+{
+ char n;
+ swaps(&rep->sequenceNumber, n);
+ swapl(&rep->length, n);
+ swapl(&rep->focus, n);
+ WriteToClient(client, len, (char *)rep);
+}
diff --git a/Xi/xisetdevfocus.h b/Xi/xisetdevfocus.h
index 5ec1fa2cf..2c3243d86 100644
--- a/Xi/xisetdevfocus.h
+++ b/Xi/xisetdevfocus.h
@@ -23,6 +23,10 @@
* Author: Peter Hutterer
*/
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
#ifndef XISETDEVFOCUS_H
#define XISETDEVFOCUS_H 1
@@ -32,4 +36,5 @@ int ProcXISetFocus(ClientPtr client);
int SProcXIGetFocus(ClientPtr client);
int ProcXIGetFocus(ClientPtr client);
+void SRepXIGetFocus(ClientPtr client, int len, xXIGetFocusReply* rep);
#endif /* XISETDEVFOCUS_H */
diff --git a/Xi/xiwarppointer.c b/Xi/xiwarppointer.c
index f1f07c7dd..758e1650e 100644
--- a/Xi/xiwarppointer.c
+++ b/Xi/xiwarppointer.c
@@ -63,6 +63,15 @@ SProcXIWarpPointer(ClientPtr client)
REQUEST(xXIWarpPointerReq);
swaps(&stuff->length, n);
+ swapl(&stuff->src_win, n);
+ swapl(&stuff->dst_win, n);
+ swapl(&stuff->src_x, n);
+ swapl(&stuff->src_y, n);
+ swaps(&stuff->src_width, n);
+ swaps(&stuff->src_height, n);
+ swapl(&stuff->dst_x, n);
+ swapl(&stuff->dst_y, n);
+ swaps(&stuff->deviceid, n);
return (ProcXIWarpPointer(client));
}
@@ -75,6 +84,8 @@ ProcXIWarpPointer(ClientPtr client)
DeviceIntPtr pDev;
SpritePtr pSprite;
ScreenPtr newScreen;
+ int src_x, src_y;
+ int dst_x, dst_y;
REQUEST(xXIWarpPointerReq);
REQUEST_SIZE_MATCH(xXIWarpPointerReq);
@@ -84,13 +95,24 @@ ProcXIWarpPointer(ClientPtr client)
rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixWriteAccess);
if (rc != Success)
+ {
+ client->errorValue = stuff->deviceid;
return rc;
+ }
+
+ if ((!IsMaster(pDev) && pDev->u.master) ||
+ (IsMaster(pDev) && !IsPointerDevice(pDev)))
+ {
+ client->errorValue = stuff->deviceid;
+ return BadDevice;
+ }
if (stuff->dst_win != None)
{
- rc = dixLookupWindow(&dest, stuff->dst_win, client, DixReadAccess);
+ rc = dixLookupWindow(&dest, stuff->dst_win, client, DixGetAttrAccess);
if (rc != Success)
{
+ client->errorValue = stuff->dst_win;
return rc;
}
}
@@ -99,26 +121,32 @@ ProcXIWarpPointer(ClientPtr client)
x = pSprite->hotPhys.x;
y = pSprite->hotPhys.y;
+ src_x = stuff->src_x / (double)(1 << 16);
+ src_y = stuff->src_y / (double)(1 << 16);
+ dst_x = stuff->dst_x / (double)(1 << 16);
+ dst_y = stuff->dst_y / (double)(1 << 16);
+
if (stuff->src_win != None)
{
int winX, winY;
WindowPtr src;
- rc = dixLookupWindow(&src, stuff->src_win, client, DixReadAccess);
+ rc = dixLookupWindow(&src, stuff->src_win, client, DixGetAttrAccess);
if (rc != Success)
{
+ client->errorValue = stuff->src_win;
return rc;
}
winX = src->drawable.x;
winY = src->drawable.y;
if (src->drawable.pScreen != pSprite->hotPhys.pScreen ||
- x < winX + stuff->src_x ||
- y < winY + stuff->src_y ||
+ x < winX + src_x ||
+ y < winY + src_y ||
(stuff->src_width != 0 &&
- winX + stuff->src_x + (int)stuff->src_width < 0) ||
+ winX + src_x + (int)stuff->src_width < 0) ||
(stuff->src_height != 0 &&
- winY + stuff->src_y + (int)stuff->src_height < y) ||
+ winY + src_y + (int)stuff->src_height < y) ||
!PointInWindowIsVisible(src, x, y))
return Success;
}
@@ -131,8 +159,8 @@ ProcXIWarpPointer(ClientPtr client)
} else
newScreen = pSprite->hotPhys.pScreen;
- x += stuff->dst_x;
- y += stuff->dst_y;
+ x += dst_x;
+ y += dst_y;
if (x < 0)
x = 0;
diff --git a/composite/compext.c b/composite/compext.c
index c0d486a2c..84cab264e 100644
--- a/composite/compext.c
+++ b/composite/compext.c
@@ -764,9 +764,14 @@ CompositeExtensionInit (void)
if (!dixRequestPrivate(CompositeClientPrivateKey,
sizeof(CompositeClientRec)))
return;
+
if (!AddCallback (&ClientStateCallback, CompositeClientCallback, 0))
return;
+ for (s = 0; s < screenInfo.numScreens; s++)
+ if (!compScreenInit (screenInfo.screens[s]))
+ return;
+
extEntry = AddExtension (COMPOSITE_NAME, 0, 0,
ProcCompositeDispatch, SProcCompositeDispatch,
NULL, StandardMinorOpcode);
@@ -774,9 +779,6 @@ CompositeExtensionInit (void)
return;
CompositeReqCode = (CARD8) extEntry->base;
- for (s = 0; s < screenInfo.numScreens; s++)
- if (!compScreenInit (screenInfo.screens[s]))
- return;
miRegisterRedirectBorderClipProc (compSetRedirectBorderClip,
compGetRedirectBorderClip);
diff --git a/composite/compinit.c b/composite/compinit.c
index ac2bf927b..3ebb388ea 100644
--- a/composite/compinit.c
+++ b/composite/compinit.c
@@ -242,6 +242,7 @@ static CompAlternateVisual altVisuals[] = {
{ 24, PICT_r8g8b8 },
#endif
{ 32, PICT_a8r8g8b8 },
+ { 32, PICT_b8g8r8a8 },
};
static const int NUM_COMP_ALTERNATE_VISUALS = sizeof(altVisuals) /
@@ -276,7 +277,8 @@ compAddAlternateVisual(ScreenPtr pScreen, CompScreenPtr cs,
return TRUE;
pPictFormat = PictureMatchFormat (pScreen, alt->depth, alt->format);
- if (!pPictFormat)
+ if (!pPictFormat ||
+ pPictFormat->direct.red != pScreen->visuals[0].offsetRed)
return FALSE;
vid = xalloc(sizeof(VisualID));
diff --git a/config/hal.c b/config/hal.c
index 731d9b8fc..28f55a02f 100644
--- a/config/hal.c
+++ b/config/hal.c
@@ -474,13 +474,13 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
char **devices;
int num_devices, i;
+ if (info->hal_ctx)
+ return TRUE; /* already registered, pretend we did something */
+
info->system_bus = connection;
dbus_error_init(&error);
- if (info->hal_ctx)
- return TRUE; /* already registered, pretend we did something */
-
info->hal_ctx = libhal_ctx_new();
if (!info->hal_ctx) {
LogMessage(X_ERROR, "config/hal: couldn't create HAL context\n");
@@ -489,19 +489,19 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
if (!libhal_ctx_set_dbus_connection(info->hal_ctx, info->system_bus)) {
LogMessage(X_ERROR, "config/hal: couldn't associate HAL context with bus\n");
- goto out_ctx;
+ goto out_err;
}
if (!libhal_ctx_init(info->hal_ctx, &error)) {
LogMessage(X_ERROR, "config/hal: couldn't initialise context: %s (%s)\n",
error.name ? error.name : "unknown error",
error.message ? error.message : "null");
- goto out_ctx;
+ goto out_err;
}
if (!libhal_device_property_watch_all(info->hal_ctx, &error)) {
LogMessage(X_ERROR, "config/hal: couldn't watch all properties: %s (%s)\n",
error.name ? error.name : "unknown error",
error.message ? error.message : "null");
- goto out_ctx2;
+ goto out_ctx;
}
libhal_ctx_set_device_added(info->hal_ctx, device_added);
libhal_ctx_set_device_removed(info->hal_ctx, device_removed);
@@ -509,6 +509,12 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
devices = libhal_find_device_by_capability(info->hal_ctx, "input",
&num_devices, &error);
/* FIXME: Get default devices if error is set. */
+ if (dbus_error_is_set(&error)) {
+ LogMessage(X_ERROR, "config/hal: couldn't find input device: %s (%s)\n",
+ error.name ? error.name : "unknown error",
+ error.message ? error.message : "null");
+ goto out_ctx;
+ }
for (i = 0; i < num_devices; i++)
device_added(info->hal_ctx, devices[i]);
libhal_free_string_array(devices);
@@ -517,16 +523,23 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
return TRUE;
-out_ctx2:
- if (!libhal_ctx_shutdown(info->hal_ctx, &error))
- LogMessage(X_WARNING, "config/hal: couldn't shut down context: %s (%s)\n",
- error.name ? error.name : "unknown error",
- error.message ? error.message : "null");
out_ctx:
- libhal_ctx_free(info->hal_ctx);
+ dbus_error_free(&error);
+
+ if (!libhal_ctx_shutdown(info->hal_ctx, &error)) {
+ LogMessage(X_WARNING, "config/hal: couldn't shut down context: %s (%s)\n",
+ error.name ? error.name : "unknown error",
+ error.message ? error.message : "null");
+ dbus_error_free(&error);
+ }
+
out_err:
dbus_error_free(&error);
+ if (info->hal_ctx) {
+ libhal_ctx_free(info->hal_ctx);
+ }
+
info->hal_ctx = NULL;
info->system_bus = NULL;
diff --git a/configure.ac b/configure.ac
index f9a967c72..6345fd994 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ dnl
dnl Process this file with autoconf to create configure.
AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.6.99.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+AC_INIT([xorg-server], 1.6.99.900, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
RELEASE_DATE="(unreleased)"
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([dist-bzip2 foreign])
@@ -523,10 +523,15 @@ AC_ARG_WITH(apple-application-name,AS_HELP_STRING([--with-apple-application-name
[ APPLE_APPLICATION_NAME="${withval}" ],
[ APPLE_APPLICATION_NAME="X11" ])
AC_SUBST([APPLE_APPLICATION_NAME])
-AC_ARG_WITH(apple-application-id,AS_HELP_STRING([--with-apple-application-id=VALUE], [CFBundleIdentification for the .app (default: org.x.X11)]),
- [ APPLE_APPLICATION_ID="${withval}" ],
- [ APPLE_APPLICATION_ID="org.x.X11" ])
-AC_SUBST([APPLE_APPLICATION_ID])
+AC_ARG_WITH(launchd-id-prefix, AS_HELP_STRING([--with-launchd-id-prefix=PATH], [Prefix to use for launchd identifiers (default: org.x)]),
+ [ LAUNCHD_ID_PREFIX="${withval}" ],
+ [ LAUNCHD_ID_PREFIX="org.x" ])
+AC_SUBST([LAUNCHD_ID_PREFIX])
+AC_DEFINE_UNQUOTED(LAUNCHD_ID_PREFIX, "$LAUNCHD_ID_PREFIX", [Prefix to use for launchd identifiers])
+AC_ARG_ENABLE(sparkle,AS_HELP_STRING([--enable-sparkle], [Enable updating of X11.app using the Sparkle Framework (default: disabled)]),
+ [ XQUARTZ_SPARKLE="${enableval}" ],
+ [ XQUARTZ_SPARKLE="no" ])
+AC_SUBST([XQUARTZ_SPARKLE])
AC_ARG_ENABLE(builddocs, AS_HELP_STRING([--enable-builddocs], [Build docs (default: disabled)]),
[BUILDDOCS=$enableval],
[BUILDDOCS=no])
@@ -582,12 +587,16 @@ AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS exten
AC_ARG_ENABLE(config-dbus, AS_HELP_STRING([--enable-config-dbus], [Build D-BUS API support (default: no)]), [CONFIG_DBUS_API=$enableval], [CONFIG_DBUS_API=no])
AC_ARG_ENABLE(config-hal, AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto])
AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
+AC_ARG_ENABLE(xaa, AS_HELP_STRING([--enable-xaa], [Build XAA (default: enabled)]), [XAA=$enableval], [XAA=yes])
+AC_ARG_ENABLE(vgahw, AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes])
+AC_ARG_ENABLE(vbe, AS_HELP_STRING([--enable-vbe], [Build Xorg with VBE module (default: enabled)]), [VBE=$enableval], [VBE=yes])
+AC_ARG_ENABLE(int10-module, AS_HELP_STRING([--enable-int10-module], [Build Xorg with int10 module (default: enabled)]), [INT10MODULE=$enableval], [INT10MODULE=yes])
dnl DDXes.
AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: no)]), [DMX=$enableval], [DMX=no])
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: no)]), [XNEST=$enableval], [XNEST=no])
+AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: yes)]), [XNEST=$enableval], [XNEST=yes])
AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto])
AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no])
AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto])
@@ -700,8 +709,8 @@ 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 >= 1.2.99.3] [renderproto >= 0.9.3] [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto [xextproto >= 7.0.3] [xproto >= 7.0.13] [xtrans >= 1.2.2] bigreqsproto resourceproto fontsproto [inputproto >= 1.9.99.12] [kbproto >= 1.0.3]"
-REQUIRED_LIBS="xfont xau fontenc [pixman-1 >= 0.15.12]"
+REQUIRED_MODULES="[randrproto >= 1.2.99.3] [renderproto >= 0.11] [fixesproto >= 4.0] [damageproto >= 1.1] [xcmiscproto >= 1.2.0] [xextproto >= 7.0.99.3] [xproto >= 7.0.13] [xtrans >= 1.2.2] [bigreqsproto >= 1.1.0] resourceproto fontsproto [inputproto >= 1.9.99.902] [kbproto >= 1.0.3]"
+REQUIRED_LIBS="xfont xau [pixman-1 >= 0.15.20]"
dnl HAVE_DBUS is true if we actually have the D-Bus library, whereas
dnl CONFIG_DBUS_API is true if we want to enable the D-Bus config
@@ -840,7 +849,7 @@ fi
AM_CONDITIONAL(RECORD, [test "x$RECORD" = xyes])
if test "x$RECORD" = xyes; then
AC_DEFINE(XRECORD, 1, [Support Record extension])
- REQUIRED_MODULES="$REQUIRED_MODULES recordproto"
+ REQUIRED_MODULES="$REQUIRED_MODULES [recordproto >= 1.13.99.1]"
RECORD_LIB='$(top_builddir)/record/librecord.la'
fi
@@ -910,7 +919,7 @@ fi
if test "x$DRI2" = xyes; then
save_CFLAGS=$CFLAGS
- CFLAGS="$GL_CFLAGS $LIBDRM_CFLAGS -Wall"
+ CFLAGS="$GL_CFLAGS $LIBDRM_CFLAGS"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <GL/gl.h>
#include <GL/internal/dri_interface.h>
#ifndef __DRI_DRI2
@@ -934,7 +943,7 @@ AM_CONDITIONAL(XINERAMA, [test "x$XINERAMA" = xyes])
if test "x$XINERAMA" = xyes; then
AC_DEFINE(XINERAMA, 1, [Support Xinerama extension])
AC_DEFINE(PANORAMIX, 1, [Internal define for Xinerama])
- REQUIRED_MODULES="$REQUIRED_MODULES xineramaproto xinerama"
+ REQUIRED_MODULES="$REQUIRED_MODULES xineramaproto"
fi
AM_CONDITIONAL(XACE, [test "x$XACE" = xyes])
@@ -982,7 +991,7 @@ fi
AM_CONDITIONAL(XF86BIGFONT, [test "x$XF86BIGFONT" = xyes])
if test "x$XF86BIGFONT" = xyes; then
AC_DEFINE(XF86BIGFONT, 1, [Support XF86 Big font extension])
- REQUIRED_MODULES="$REQUIRED_MODULES xf86bigfontproto"
+ REQUIRED_MODULES="$REQUIRED_MODULES [xf86bigfontproto >= 1.2.0]"
fi
AM_CONDITIONAL(DPMSExtension, [test "x$DPMSExtension" = xyes])
@@ -1021,6 +1030,10 @@ XI_LIB='$(top_builddir)/Xi/libXi.la'
XI_INC='-I$(top_srcdir)/Xi'
AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes)
+AM_CONDITIONAL(XAA, test "x$XAA" = xyes)
+AM_CONDITIONAL(VGAHW, test "x$VGAHW" = xyes)
+AM_CONDITIONAL(VBE, test "x$VBE" = xyes)
+AM_CONDITIONAL(INT10MODULE, test "x$INT10MODULE" = xyes)
AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
@@ -1325,7 +1338,7 @@ if test "x$XORG" = xyes; then
XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
- XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $SELINUX_LIB"
+ XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB"
dnl ==================================================================
dnl symbol visibility
@@ -1375,9 +1388,11 @@ if test "x$XORG" = xyes; then
LIBS=$PCIACCESS_LIBS
AC_CHECK_FUNCS([pci_system_init_dev_mem])
AC_CHECK_FUNCS([pci_device_enable])
+ AC_CHECK_FUNCS([pci_device_is_boot_vga])
+ AC_CHECK_FUNCS([pci_device_vgaarb_init])
LIBS=$SAVE_LIBS
CFLAGS=$SAVE_CFLAGS
- XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $DLOPEN_LIBS $GLX_SYS_LIBS"
+ XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $DLOPEN_LIBS $GLX_SYS_LIBS $SELINUX_LIB"
XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
case $host_os in
@@ -1430,9 +1445,8 @@ if test "x$XORG" = xyes; then
# use libpciaccess for PCI
xorg_bus_bsdpci="yes"
AC_CHECK_HEADERS([sys/kd.h])
- # This really should be tests for specific features, but the #ifdef's
- # were done as a simple version check in XFree86 4.x and haven't been
- # fixed yet
+ AC_CHECK_HEADERS([sys/vt.h], [solaris_vt=yes], [solaris_vt=no])
+ # Check for minimum supported release
AC_MSG_CHECKING([Solaris version])
OS_MINOR=`echo ${host_os}|sed -e 's/^.*solaris2\.//' -e s'/\..*$//'`
if test "${OS_MINOR}" -ge 7 ; then
@@ -1440,8 +1454,8 @@ if test "x$XORG" = xyes; then
else
AC_MSG_RESULT(Solaris `echo ${host_os}|sed -e 's/^.*solaris//`)
fi
- if test "${OS_MINOR}" -ge 8 ; then
- AC_DEFINE(__SOL8__,1,[Solaris 8 or later])
+ if test "${OS_MINOR}" -lt 8 ; then
+ AC_MSG_ERROR([This release no longer supports Solaris versions older than Solaris 8.])
fi
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
if test "x$SUNCC" = "xyes"; then
@@ -1459,11 +1473,7 @@ if test "x$XORG" = xyes; then
else
SOLARIS_INOUT_ARCH="ia32"
fi
- if test "${OS_MINOR}" -lt 8 ; then
- solaris_usl_console="yes"
- else
- XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
- fi
+ XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
;;
*)
AC_MSG_ERROR([Unsupported Solaris platform. Only SPARC & x86 \
@@ -1504,21 +1514,21 @@ if test "x$XORG" = xyes; then
XORG_OS_PCI=$XORG_OS
fi
if test "x$DGA" = xauto; then
- PKG_CHECK_MODULES(DGA, xf86dgaproto, [DGA=yes], [DGA=no])
+ PKG_CHECK_MODULES(DGA, [xf86dgaproto >= 2.0.99.1], [DGA=yes], [DGA=no])
fi
if test "x$DGA" = xyes; then
- XORG_MODULES="$XORG_MODULES xf86dgaproto"
+ XORG_MODULES="$XORG_MODULES [xf86dgaproto >= 2.0.99.1]"
PKG_CHECK_MODULES(DGA, xf86dgaproto)
AC_DEFINE(DGA, 1, [Support DGA extension])
AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
fi
if test "x$XF86VIDMODE" = xauto; then
- PKG_CHECK_MODULES(XF86VIDMODE, xf86vidmodeproto, [XF86VIDMODE=yes], [XF86VIDMODE=no])
+ PKG_CHECK_MODULES(XF86VIDMODE, [xf86vidmodeproto >= 2.2.99.1], [XF86VIDMODE=yes], [XF86VIDMODE=no])
fi
if test "x$XF86VIDMODE" = xyes; then
XORG_MODULES="$XORG_MODULES xf86vidmodeproto"
- PKG_CHECK_MODULES(XF86VIDMODE, xf86vidmodeproto)
+ PKG_CHECK_MODULES(XF86VIDMODE, [xf86vidmodeproto >= 2.2.99.1])
AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension])
fi
@@ -1555,7 +1565,6 @@ if test "x$XORG" = xyes; then
AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
- AC_DEFINE(WITH_VGAHW, 1, [Building vgahw module])
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])
@@ -1563,6 +1572,9 @@ if test "x$XORG" = xyes; then
AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default log location])
AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
+ if test "x$VGAHW" = xyes; then
+ AC_DEFINE(WITH_VGAHW, 1, [Building vgahw module])
+ fi
driverdir="$moduledir/drivers"
AC_SUBST([moduledir])
@@ -1581,12 +1593,10 @@ if test "x$XORG" = xyes; then
abi_videodrv=`extract_abi VIDEODRV`
abi_xinput=`extract_abi XINPUT`
abi_extension=`extract_abi EXTENSION`
- abi_font=`extract_abi FONT`
AC_SUBST([abi_ansic])
AC_SUBST([abi_videodrv])
AC_SUBST([abi_xinput])
AC_SUBST([abi_extension])
- AC_SUBST([abi_font])
fi
AM_CONDITIONAL([XORG], [test "x$XORG" = xyes])
AM_CONDITIONAL([XORG_BUS_LINUXPCI], [test "x$xorg_bus_linuxpci" = xyes])
@@ -1595,8 +1605,8 @@ AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
AM_CONDITIONAL([LINUX_IA64], [test "x$linux_ia64" = xyes])
AM_CONDITIONAL([LINUX_ALPHA], [test "x$linux_alpha" = xyes])
AM_CONDITIONAL([LNXACPI], [test "x$linux_acpi" = xyes])
-AM_CONDITIONAL([SOLARIS_USL_CONSOLE], [test "x$solaris_usl_console" = xyes])
AM_CONDITIONAL([SOLARIS_ASM_INLINE], [test "x$solaris_asm_inline" = xyes])
+AM_CONDITIONAL([SOLARIS_VT], [test "x$solaris_vt" = xyes])
AM_CONDITIONAL([DGA], [test "x$DGA" = xyes])
AM_CONDITIONAL([XF86VIDMODE], [test "x$XF86VIDMODE" = xyes])
@@ -1615,6 +1625,7 @@ fi
AC_MSG_RESULT([$XWIN])
if test "x$XWIN" = xyes; then
+ PKG_CHECK_EXISTS([windowswmproto], [WINDOWSWM=yes], [WINDOWSWM=no])
AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
AC_CHECK_TOOL(WINDRES, windres)
case $host_os in
@@ -1623,7 +1634,7 @@ if test "x$XWIN" = xyes; then
PKG_CHECK_MODULES([XWINMODULES],[x11 xdmcp xau xfont])
AC_DEFINE(HAS_DEVWINDOWS,1,[Cygwin has /dev/windows for signaling new win32 messages])
AC_DEFINE(ROOTLESS,1,[Build Rootless code])
- CFLAGS="$CFLAGS -DFD_SETSIZE=256"
+ CFLAGS="$CFLAGS -DFD_SETSIZE=256 -DROOTLESS_WORKAROUND"
;;
mingw*)
XWIN_SERVER_NAME=Xming
@@ -1656,7 +1667,7 @@ if test "x$XWIN" = xyes; then
fi
AM_CONDITIONAL(XWIN, [test "x$XWIN" = xyes])
AM_CONDITIONAL(XWIN_MULTIWINDOW, [test "x$XWIN" = xyes])
-AM_CONDITIONAL(XWIN_MULTIWINDOWEXTWM, [test "x$XWIN" = xyes && false])
+AM_CONDITIONAL(XWIN_MULTIWINDOWEXTWM, [test "x$XWIN" = xyes && test "x$WINDOWSWM" = xyes])
AM_CONDITIONAL(XWIN_CLIPBOARD, [test "x$XWIN" = xyes])
AM_CONDITIONAL(XWIN_GLX_WINDOWS, [test "x$XWIN" = xyes && false])
AM_CONDITIONAL(XWIN_NATIVEGDI, [test "x$XWIN" = xyes && false])
@@ -1676,7 +1687,11 @@ if test "x$XQUARTZ" = xyes; then
CFLAGS="${CFLAGS} -DROOTLESS_WORKAROUND -DROOTLESS_SAFEALPHA -DNO_ALLOCA"
- PKG_CHECK_MODULES(XPBPROXY, [applewmproto >= 1.2] [applewm >= 1.2] xfixes fixesproto x11)
+ PKG_CHECK_MODULES(XPBPROXY, [applewmproto >= 1.4] [applewm >= 1.4] xfixes fixesproto x11)
+
+ if test "x$XQUARTZ_SPARKLE" = xyes ; then
+ AC_DEFINE(XQUARTZ_SPARKLE,1,[Support application updating through sparkle.])
+ fi
if test "x$STANDALONE_XPBPROXY" = xyes ; then
AC_DEFINE(STANDALONE_XPBPROXY,1,[Build a standalone xpbproxy])
@@ -1694,9 +1709,8 @@ AC_SUBST([OBJCLINK])
AC_SUBST([OBJCFLAGS])
# internal, undocumented automake func follows :(
_AM_DEPENDENCIES([OBJC])
-AM_CONDITIONAL(HAVE_XPLUGIN, [test "x$ac_cv_lib_Xplugin_xp_init" = xyes])
-AM_CONDITIONAL(HAVE_AGL_FRAMEWORK, [test "x$xorg_cv_AGL_framework" = xyes])
AM_CONDITIONAL(XQUARTZ, [test "x$XQUARTZ" = xyes])
+AM_CONDITIONAL(XQUARTZ_SPARKLE, [test "x$XQUARTZ_SPARKLE" != "xno"])
AM_CONDITIONAL(STANDALONE_XPBPROXY, [test "x$STANDALONE_XPBPROXY" = xyes])
dnl DMX DDX
@@ -2003,5 +2017,6 @@ hw/kdrive/linux/Makefile
hw/kdrive/sdl/Makefile
hw/kdrive/src/Makefile
test/Makefile
+test/xi2/Makefile
xorg-server.pc
])
diff --git a/dbe/dbe.c b/dbe/dbe.c
index b8f61e742..a4f853d80 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -741,7 +741,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
- rep.length = length >> 2;
+ rep.length = bytes_to_int32(length);
rep.m = count;
if (client->swapped)
diff --git a/dbe/dbestruct.h b/dbe/dbestruct.h
index e067f3761..002ffbeb2 100644
--- a/dbe/dbestruct.h
+++ b/dbe/dbestruct.h
@@ -37,10 +37,24 @@
/* INCLUDES */
#define NEED_DBE_PROTOCOL
-#include <X11/extensions/Xdbeproto.h>
+#include <X11/extensions/dbeproto.h>
#include "windowstr.h"
#include "privates.h"
+typedef struct
+{
+ VisualID visual; /* one visual ID that supports double-buffering */
+ int depth; /* depth of visual in bits */
+ int perflevel; /* performance level of visual */
+}
+XdbeVisualInfo;
+
+typedef struct
+{
+ int count; /* number of items in visual_depth */
+ XdbeVisualInfo *visinfo; /* list of visuals & depths for scrn */
+}
+XdbeScreenVisualInfo;
/* DEFINES */
diff --git a/dix/Makefile.am b/dix/Makefile.am
index ab702f790..13e5dedd7 100644
--- a/dix/Makefile.am
+++ b/dix/Makefile.am
@@ -18,7 +18,6 @@ libdix_la_SOURCES = \
enterleave.c \
enterleave.h \
events.c \
- eventconvert.h \
eventconvert.c \
extension.c \
ffs.c \
diff --git a/dix/deprecated.c b/dix/deprecated.c
index 8123886ca..21d0f574d 100644
--- a/dix/deprecated.c
+++ b/dix/deprecated.c
@@ -162,22 +162,4 @@ LookupIDByClass(XID id, RESTYPE classes)
return val;
}
-/* replaced by dixLookupResourceBy{Type,Class} */
-_X_EXPORT int
-dixLookupResource (pointer *result, XID id, RESTYPE rtype,
- ClientPtr client, Mask mode)
-{
- Bool istype = ((rtype & TypeMask) && (rtype != RC_ANY)) || (rtype == RT_NONE);
-
- static int warn = 1;
- if (warn > 0 && --warn)
- ErrorF("Warning: dixLookupResource() "
- "is deprecated. Please convert your driver/module "
- "to use dixLookupResourceByType/dixLookupResourceByClass().\n");
- if (istype)
- return dixLookupResourceByType (result, id, rtype, client, mode);
- else
- return dixLookupResourceByClass (result, id, rtype, client, mode);
-}
-
/* end deprecated functions */
diff --git a/dix/devices.c b/dix/devices.c
index b237e03b1..0be3d58ab 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -72,6 +72,7 @@ SOFTWARE.
#include "swaprep.h"
#include "dixevents.h"
#include "mipointer.h"
+#include "eventstr.h"
#include <X11/extensions/XI.h>
#include <X11/extensions/XI2.h>
@@ -93,21 +94,7 @@ DevPrivateKey CoreDevicePrivateKey = &CoreDevicePrivateKeyIndex;
/* Used to store classes currently not in use by an MD */
static int UnusedClassesPrivateKeyIndex;
DevPrivateKey UnusedClassesPrivateKey = &UnusedClassesPrivateKeyIndex;
-/* Used to store if a device is an XTest Virtual device */
-static int XTstDevicePrivateKeyIndex;
-DevPrivateKey XTstDevicePrivateKey = &XTstDevicePrivateKeyIndex;
-/**
- * vxtstpointer
- * is the virtual pointer for XTest. It is the first slave
- * device of the VCP.
- * vxtstkeyboard
- * is the virtual keyboard for XTest. It is the first slave
- * device of the VCK
- *
- * Neither of these devices can be deleted.
- */
-DeviceIntPtr vxtstpointer, vxtstkeyboard;
static void RecalculateMasterButtons(DeviceIntPtr slave);
@@ -447,6 +434,8 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent)
}
OsReleaseSignals();
+ LeaveWindow(dev);
+ SetFocusOut(dev);
*prev = dev->next;
dev->next = inputInfo.off_devices;
@@ -528,7 +517,7 @@ CoreKeyboardCtl(DeviceIntPtr pDev, KeybdCtrl *ctrl)
/**
* Device control function for the Virtual Core Keyboard.
*/
-static int
+int
CoreKeyboardProc(DeviceIntPtr pDev, int what)
{
@@ -557,7 +546,7 @@ CoreKeyboardProc(DeviceIntPtr pDev, int what)
/**
* Device control function for the Virtual Core Pointer.
*/
-static int
+int
CorePointerProc(DeviceIntPtr pDev, int what)
{
#define NBUTTONS 7
@@ -624,6 +613,7 @@ InitCoreDevices(void)
{
if (AllocDevicePair(serverClient, "Virtual core",
&inputInfo.pointer, &inputInfo.keyboard,
+ CorePointerProc, CoreKeyboardProc,
TRUE) != Success)
FatalError("Failed to allocate core devices");
@@ -634,24 +624,7 @@ InitCoreDevices(void)
!EnableDevice(inputInfo.keyboard, TRUE))
FatalError("Failed to enable core devices.");
- /*
- Allocate an virtual slave device for xtest events, this
- is a slave device to inputInfo master devices
- */
- if(AllocXtstDevice(serverClient, "Virtual core",
- &vxtstpointer,
- &vxtstkeyboard) != Success)
- FatalError("Failed to allocate XTst devices");
-
- if (ActivateDevice(vxtstpointer, TRUE) != Success ||
- ActivateDevice(vxtstkeyboard, TRUE) != Success)
- FatalError("Failed to activate xtst core devices.");
- if (!EnableDevice(vxtstpointer, TRUE) ||
- !EnableDevice(vxtstkeyboard, TRUE))
- FatalError("Failed to enable xtst core devices.");
-
- AttachDevice(NULL, vxtstpointer, inputInfo.pointer);
- AttachDevice(NULL, vxtstkeyboard, inputInfo.keyboard);
+ InitXTestDevices();
}
/**
@@ -1172,6 +1145,8 @@ InitButtonClassDeviceStruct(DeviceIntPtr dev, int numButtons, Atom* labels,
butc->sourceid = dev->id;
for (i = 1; i <= numButtons; i++)
butc->map[i] = map[i];
+ for (i = numButtons + 1; i < MAP_LENGTH; i++)
+ butc->map[i] = i;
memcpy(butc->labels, labels, numButtons * sizeof(Atom));
dev->button = butc;
return TRUE;
@@ -1225,7 +1200,7 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, Atom *labels,
dev->last.numValuators = numAxes;
if (IsMaster(dev) || /* do not accelerate master or xtest devices */
- dixLookupPrivate(&dev->devPrivates, XTstDevicePrivateKey ))
+ IsXTestDevice(dev, NULL))
InitPointerAccelerationScheme(dev, PtrAccelNoOp);
else
InitPointerAccelerationScheme(dev, PtrAccelDefault);
@@ -1530,7 +1505,7 @@ ProcSetModifierMapping(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xSetModifierMappingReq);
if (client->req_len != ((stuff->numKeyPerModifier << 1) +
- (sizeof (xSetModifierMappingReq) >> 2)))
+ bytes_to_int32(sizeof(xSetModifierMappingReq))))
return BadLength;
rep.type = X_Reply;
@@ -1589,7 +1564,7 @@ ProcChangeKeyboardMapping(ClientPtr client)
int rc;
REQUEST_AT_LEAST_SIZE(xChangeKeyboardMappingReq);
- len = client->req_len - (sizeof(xChangeKeyboardMappingReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xChangeKeyboardMappingReq));
if (len != (stuff->keyCodes * stuff->keySymsPerKeyCode))
return BadLength;
@@ -1648,7 +1623,8 @@ ProcSetPointerMapping(ClientPtr client)
REQUEST(xSetPointerMappingReq);
REQUEST_AT_LEAST_SIZE(xSetPointerMappingReq);
- if (client->req_len != (sizeof(xSetPointerMappingReq)+stuff->nElts+3) >> 2)
+ if (client->req_len !=
+ bytes_to_int32(sizeof(xSetPointerMappingReq) + stuff->nElts))
return BadLength;
rep.type = X_Reply;
rep.length = 0;
@@ -2227,7 +2203,7 @@ ProcGetMotionEvents(ClientPtr client)
nEvents++;
}
}
- rep.length = nEvents * (sizeof(xTimecoord) >> 2);
+ rep.length = nEvents * bytes_to_int32(sizeof(xTimecoord));
rep.nEvents = nEvents;
WriteReplyToClient(client, sizeof(xGetMotionEventsReply), &rep);
if (nEvents)
@@ -2389,11 +2365,6 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master)
InitializeSprite(dev, currentRoot);
dev->spriteInfo->spriteOwner = FALSE;
dev->spriteInfo->paired = dev;
-
- /* Floating an SD makes it appear to XI 1 clients */
- SendDevicePresenceEvent(dev->id, DeviceAdded);
- if (dev->enabled)
- SendDevicePresenceEvent(dev->id, DeviceEnabled);
} else
{
dev->spriteInfo->sprite = master->spriteInfo->sprite;
@@ -2401,14 +2372,6 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master)
dev->spriteInfo->spriteOwner = FALSE;
RecalculateMasterButtons(master);
-
- if (!oldmaster)
- {
- /* Attaching a floating SD makes it disappear to XI 1 clients */
- if (dev->enabled)
- SendDevicePresenceEvent(dev->id, DeviceDisabled);
- SendDevicePresenceEvent(dev->id, DeviceRemoved);
- }
}
/* If we were connected to master device before, this MD may need to
@@ -2498,15 +2461,18 @@ GetMaster(DeviceIntPtr dev, int which)
*/
int
AllocDevicePair (ClientPtr client, char* name,
- DeviceIntPtr* ptr, DeviceIntPtr* keybd,
- Bool master)
+ DeviceIntPtr* ptr,
+ DeviceIntPtr* keybd,
+ DeviceProc ptr_proc,
+ DeviceProc keybd_proc,
+ Bool master)
{
DeviceIntPtr pointer;
DeviceIntPtr keyboard;
ClassesPtr classes;
*ptr = *keybd = NULL;
- pointer = AddInputDevice(client, CorePointerProc, TRUE);
+ pointer = AddInputDevice(client, ptr_proc, TRUE);
if (!pointer)
return BadAlloc;
@@ -2526,7 +2492,7 @@ AllocDevicePair (ClientPtr client, char* name,
pointer->last.slave = NULL;
pointer->type = (master) ? MASTER_POINTER : SLAVE;
- keyboard = AddInputDevice(client, CoreKeyboardProc, TRUE);
+ keyboard = AddInputDevice(client, keybd_proc, TRUE);
if (!keyboard)
{
RemoveDevice(pointer, FALSE);
@@ -2562,30 +2528,3 @@ AllocDevicePair (ClientPtr client, char* name,
return Success;
}
-/**
- * Allocate a device pair that is initialised as a slave
- * device with properties that identify the devices as belonging
- * to XTest subsystem.
- * This only creates the pair, Activate/Enable Device
- * still need to be called.
- */
-int AllocXtstDevice (ClientPtr client, char* name,
- DeviceIntPtr* ptr, DeviceIntPtr* keybd)
-{
- int retval;
- int len = strlen(name);
- char *xtstname = xcalloc(len + 6, 1 );
-
- strncpy( xtstname, name, len);
- strncat( xtstname, " Xtst", 5 );
-
- retval = AllocDevicePair( client, xtstname, ptr, keybd, FALSE);
- if ( retval == Success ){
- dixSetPrivate(&((*ptr)->devPrivates), XTstDevicePrivateKey, (void *)True );
- dixSetPrivate(&((*keybd)->devPrivates), XTstDevicePrivateKey,(void *)True);
- }
-
- xfree( xtstname );
-
- return retval;
-}
diff --git a/dix/dispatch.c b/dix/dispatch.c
index 53daee21d..b9768d7b4 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -246,6 +246,7 @@ long SmartScheduleSlice = SMART_SCHEDULE_DEFAULT_INTERVAL;
long SmartScheduleInterval = SMART_SCHEDULE_DEFAULT_INTERVAL;
long SmartScheduleMaxSlice = SMART_SCHEDULE_MAX_SLICE;
long SmartScheduleTime;
+int SmartScheduleLatencyLimited = 0;
static ClientPtr SmartLastClient;
static int SmartLastIndex[SMART_MAX_PRIORITY-SMART_MIN_PRIORITY+1];
@@ -316,7 +317,7 @@ SmartScheduleClient (int *clientReady, int nready)
/*
* Adjust slice
*/
- if (nready == 1)
+ if (nready == 1 && SmartScheduleLatencyLimited == 0)
{
/*
* If it's been a long time since another client
@@ -336,6 +337,23 @@ SmartScheduleClient (int *clientReady, int nready)
return best;
}
+void
+EnableLimitedSchedulingLatency(void)
+{
+ ++SmartScheduleLatencyLimited;
+ SmartScheduleSlice = SmartScheduleInterval;
+}
+
+void
+DisableLimitedSchedulingLatency(void)
+{
+ --SmartScheduleLatencyLimited;
+
+ /* protect against bugs */
+ if (SmartScheduleLatencyLimited < 0)
+ SmartScheduleLatencyLimited = 0;
+}
+
#define MAJOROP ((xReq *)client->requestBuffer)->reqType
void
@@ -355,6 +373,7 @@ Dispatch(void)
if (!clientReady)
return;
+ SmartScheduleSlice = SmartScheduleInterval;
while (!dispatchException)
{
if (*icheck[0] != *icheck[1])
@@ -459,6 +478,7 @@ Dispatch(void)
KillAllClients();
xfree(clientReady);
dispatchException &= ~DE_RESET;
+ SmartScheduleLatencyLimited = 0;
}
#undef MAJOROP
@@ -517,7 +537,7 @@ CreateConnectionBlock(void)
QueryMinMaxKeyCodes(&setup.minKeyCode, &setup.maxKeyCode);
lenofblock = sizeof(xConnSetup) +
- ((setup.nbytesVendor + 3) & ~3) +
+ pad_to_int32(setup.nbytesVendor) +
(setup.numFormats * sizeof(xPixmapFormat)) +
(setup.numRoots * sizeof(xWindowRoot));
ConnectionInfo = xalloc(lenofblock);
@@ -642,7 +662,7 @@ ProcCreateWindow(ClientPtr client)
rc = dixLookupWindow(&pParent, stuff->parent, client, DixAddAccess);
if (rc != Success)
return rc;
- len = client->req_len - (sizeof(xCreateWindowReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xCreateWindowReq));
if (Ones(stuff->mask) != len)
return BadLength;
if (!stuff->width || !stuff->height)
@@ -685,7 +705,7 @@ ProcChangeWindowAttributes(ClientPtr client)
rc = dixLookupWindow(&pWin, stuff->window, client, access_mode);
if (rc != Success)
return rc;
- len = client->req_len - (sizeof(xChangeWindowAttributesReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xChangeWindowAttributesReq));
if (len != Ones(stuff->valueMask))
return BadLength;
result = ChangeWindowAttributes(pWin,
@@ -889,7 +909,7 @@ ProcConfigureWindow(ClientPtr client)
DixManageAccess|DixSetAttrAccess);
if (rc != Success)
return rc;
- len = client->req_len - (sizeof(xConfigureWindowReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xConfigureWindowReq));
if (Ones((Mask)stuff->mask) != len)
return BadLength;
result = ConfigureWindow(pWin, (Mask)stuff->mask, (XID *) &stuff[1],
@@ -1017,7 +1037,7 @@ ProcQueryTree(ClientPtr client)
}
reply.nChildren = numChildren;
- reply.length = (numChildren * sizeof(Window)) >> 2;
+ reply.length = bytes_to_int32(numChildren * sizeof(Window));
WriteReplyToClient(client, sizeof(xQueryTreeReply), &reply);
if (numChildren)
@@ -1074,7 +1094,7 @@ ProcGetAtomName(ClientPtr client)
len = strlen(str);
memset(&reply, 0, sizeof(xGetAtomNameReply));
reply.type = X_Reply;
- reply.length = (len + 3) >> 2;
+ reply.length = bytes_to_int32(len);
reply.sequenceNumber = client->sequence;
reply.nameLength = len;
WriteReplyToClient(client, sizeof(xGetAtomNameReply), &reply);
@@ -1347,7 +1367,7 @@ ProcQueryFont(ClientPtr client)
}
reply->type = X_Reply;
- reply->length = (rlength - sizeof(xGenericReply)) >> 2;
+ reply->length = bytes_to_int32(rlength - sizeof(xGenericReply));
reply->sequenceNumber = client->sequence;
QueryFont( pFont, reply, nprotoxcistructs);
@@ -1381,7 +1401,7 @@ ProcQueryTextExtents(ClientPtr client)
if (rc != Success)
return (rc == BadValue) ? BadFont: rc;
- length = client->req_len - (sizeof(xQueryTextExtentsReq) >> 2);
+ length = client->req_len - bytes_to_int32(sizeof(xQueryTextExtentsReq));
length = length << 1;
if (stuff->oddLength)
{
@@ -1549,7 +1569,7 @@ ProcCreateGC(ClientPtr client)
if (rc != Success)
return rc;
- len = client->req_len - (sizeof(xCreateGCReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xCreateGCReq));
if (len != Ones(stuff->mask))
return BadLength;
pGC = (GC *)CreateGC(pDraw, stuff->mask, (XID *) &stuff[1], &error,
@@ -1574,7 +1594,7 @@ ProcChangeGC(ClientPtr client)
if (result != Success)
return result;
- len = client->req_len - (sizeof(xChangeGCReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xChangeGCReq));
if (len != Ones(stuff->mask))
return BadLength;
@@ -1824,7 +1844,7 @@ ProcPolyPoint(ClientPtr client)
return BadValue;
}
VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess);
- npoint = ((client->req_len << 2) - sizeof(xPolyPointReq)) >> 2;
+ npoint = bytes_to_int32((client->req_len << 2) - sizeof(xPolyPointReq));
if (npoint)
(*pGC->ops->PolyPoint)(pDraw, pGC, stuff->coordMode, npoint,
(xPoint *) &stuff[1]);
@@ -1847,7 +1867,7 @@ ProcPolyLine(ClientPtr client)
return BadValue;
}
VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess);
- npoint = ((client->req_len << 2) - sizeof(xPolyLineReq)) >> 2;
+ npoint = bytes_to_int32((client->req_len << 2) - sizeof(xPolyLineReq));
if (npoint > 1)
(*pGC->ops->Polylines)(pDraw, pGC, stuff->coordMode, npoint,
(DDXPointPtr) &stuff[1]);
@@ -1935,7 +1955,7 @@ ProcFillPoly(ClientPtr client)
}
VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess);
- things = ((client->req_len << 2) - sizeof(xFillPolyReq)) >> 2;
+ things = bytes_to_int32((client->req_len << 2) - sizeof(xFillPolyReq));
if (things)
(*pGC->ops->FillPolygon) (pDraw, pGC, stuff->shape,
stuff->coordMode, things,
@@ -2079,8 +2099,8 @@ ProcPutImage(ClientPtr client)
tmpImage = (char *)&stuff[1];
lengthProto = length;
- if (((((lengthProto * stuff->height) + (unsigned)3) >> 2) +
- (sizeof(xPutImageReq) >> 2)) != client->req_len)
+ if ((bytes_to_int32(lengthProto * stuff->height) +
+ bytes_to_int32(sizeof(xPutImageReq))) != client->req_len)
return BadLength;
ReformatImage (tmpImage, lengthProto * stuff->height,
@@ -2099,9 +2119,11 @@ DoGetImage(ClientPtr client, int format, Drawable drawable,
int x, int y, int width, int height,
Mask planemask, xGetImageReply **im_return)
{
- DrawablePtr pDraw;
+ DrawablePtr pDraw, pBoundingDraw;
int nlines, linesPerBuf, rc;
- int linesDone;
+ int linesDone;
+ /* coordinates relative to the bounding drawable */
+ int relx, rely;
long widthBytesLine, length;
Mask plane = 0;
char *pBuf;
@@ -2118,35 +2140,59 @@ DoGetImage(ClientPtr client, int format, Drawable drawable,
return rc;
memset(&xgi, 0, sizeof(xGetImageReply));
+
+ relx = x;
+ rely = y;
+
if(pDraw->type == DRAWABLE_WINDOW)
{
- if( /* check for being viewable */
- !((WindowPtr) pDraw)->realized ||
- /* check for being on screen */
- pDraw->x + x < 0 ||
- pDraw->x + x + width > pDraw->pScreen->width ||
- pDraw->y + y < 0 ||
- pDraw->y + y + height > pDraw->pScreen->height ||
- /* check for being inside of border */
- x < - wBorderWidth((WindowPtr)pDraw) ||
- x + width > wBorderWidth((WindowPtr)pDraw) + (int)pDraw->width ||
- y < -wBorderWidth((WindowPtr)pDraw) ||
- y + height > wBorderWidth ((WindowPtr)pDraw) + (int)pDraw->height
- )
- return(BadMatch);
- xgi.visual = wVisual (((WindowPtr) pDraw));
+ WindowPtr pWin = (WindowPtr)pDraw;
+
+ /* "If the drawable is a window, the window must be viewable ... or a
+ * BadMatch error results" */
+ if (!pWin->viewable)
+ return BadMatch;
+
+ relx += pDraw->x;
+ rely += pDraw->y;
+
+ if (pDraw->pScreen->GetWindowPixmap) {
+ PixmapPtr pPix = (*pDraw->pScreen->GetWindowPixmap) (pWin);
+
+ pBoundingDraw = &pPix->drawable;
+#ifdef COMPOSITE
+ relx -= pPix->screen_x;
+ rely -= pPix->screen_y;
+#endif
+ }
+ else
+ {
+ pBoundingDraw = (DrawablePtr)WindowTable[pDraw->pScreen->myNum];
+ }
+
+ xgi.visual = wVisual (pWin);
}
else
{
- if(x < 0 ||
- x+width > (int)pDraw->width ||
- y < 0 ||
- y+height > (int)pDraw->height
- )
- return(BadMatch);
+ pBoundingDraw = pDraw;
xgi.visual = None;
}
+ /* "If the drawable is a pixmap, the given rectangle must be wholly
+ * contained within the pixmap, or a BadMatch error results. If the
+ * drawable is a window [...] it must be the case that if there were no
+ * inferiors or overlapping windows, the specified rectangle of the window
+ * would be fully visible on the screen and wholly contained within the
+ * outside edges of the window, or a BadMatch error results."
+ *
+ * We relax the window case slightly to mean that the rectangle must exist
+ * within the bounds of the window's backing pixmap. In particular, this
+ * means that a GetImage request may succeed or fail with BadMatch depending
+ * on whether any of its ancestor windows are redirected. */
+ if(relx < 0 || relx + width > (int)pBoundingDraw->width ||
+ rely < 0 || rely + height > (int)pBoundingDraw->height)
+ return BadMatch;
+
xgi.type = X_Reply;
xgi.sequenceNumber = client->sequence;
xgi.depth = pDraw->depth;
@@ -2180,7 +2226,7 @@ DoGetImage(ClientPtr client, int format, Drawable drawable,
*(xGetImageReply *)pBuf = xgi;
pBuf += sz_xGetImageReply;
} else {
- xgi.length = (xgi.length + 3) >> 2;
+ xgi.length = bytes_to_int32(xgi.length);
if (widthBytesLine == 0 || height == 0)
linesPerBuf = 0;
else if (widthBytesLine >= IMAGE_BUFSIZE)
@@ -2742,7 +2788,7 @@ ProcAllocColorCells (ClientPtr client)
#endif
{
accr.type = X_Reply;
- accr.length = length >> 2;
+ accr.length = bytes_to_int32(length);
accr.sequenceNumber = client->sequence;
accr.nPixels = npixels;
accr.nMasks = nmasks;
@@ -2806,7 +2852,7 @@ ProcAllocColorPlanes(ClientPtr client)
else
return rc;
}
- acpr.length = length >> 2;
+ acpr.length = bytes_to_int32(length);
#ifdef PANORAMIX
if (noPanoramiXExtension || !pcmp->pScreen->myNum)
#endif
@@ -2841,7 +2887,7 @@ ProcFreeColors(ClientPtr client)
if(pcmp->flags & AllAllocated)
return(BadAccess);
- count = ((client->req_len << 2)- sizeof(xFreeColorsReq)) >> 2;
+ count = bytes_to_int32((client->req_len << 2) - sizeof(xFreeColorsReq));
rc = FreeColors(pcmp, client->index, count,
(Pixel *)&stuff[1], (Pixel)stuff->planeMask);
if (client->noClientException != Success)
@@ -2944,7 +2990,7 @@ ProcQueryColors(ClientPtr client)
xrgb *prgbs;
xQueryColorsReply qcr;
- count = ((client->req_len << 2) - sizeof(xQueryColorsReq)) >> 2;
+ count = bytes_to_int32((client->req_len << 2) - sizeof(xQueryColorsReq));
prgbs = xcalloc(1, count * sizeof(xrgb));
if(!prgbs && count)
return(BadAlloc);
@@ -2961,7 +3007,7 @@ ProcQueryColors(ClientPtr client)
}
memset(&qcr, 0, sizeof(xQueryColorsReply));
qcr.type = X_Reply;
- qcr.length = (count * sizeof(xrgb)) >> 2;
+ qcr.length = bytes_to_int32(count * sizeof(xrgb));
qcr.sequenceNumber = client->sequence;
qcr.nColors = count;
WriteReplyToClient(client, sizeof(xQueryColorsReply), &qcr);
@@ -3331,7 +3377,7 @@ ProcListHosts(ClientPtr client)
reply.type = X_Reply;
reply.sequenceNumber = client->sequence;
reply.nHosts = nHosts;
- reply.length = len >> 2;
+ reply.length = bytes_to_int32(len);
WriteReplyToClient(client, sizeof(xListHostsReply), &reply);
if (nHosts)
{
@@ -3464,7 +3510,7 @@ ProcGetFontPath(ClientPtr client)
reply.type = X_Reply;
reply.sequenceNumber = client->sequence;
- reply.length = (stringLens + numpaths + 3) >> 2;
+ reply.length = bytes_to_int32(stringLens + numpaths);
reply.nPaths = numpaths;
WriteReplyToClient(client, sizeof(xGetFontPathReply), &reply);
@@ -3693,7 +3739,7 @@ ClientPtr NextAvailableClient(pointer ospriv)
return (ClientPtr)NULL;
}
data.reqType = 1;
- data.length = (sz_xReq + sz_xConnClientPrefix) >> 2;
+ data.length = bytes_to_int32(sz_xReq + sz_xConnClientPrefix);
if (!InsertFakeRequest(client, (char *)&data, sz_xReq))
{
FreeClientResources(client);
@@ -3733,8 +3779,8 @@ ProcInitialConnection(ClientPtr client)
SwapConnClientPrefix(prefix);
}
stuff->reqType = 2;
- stuff->length += ((prefix->nbytesAuthProto + (unsigned)3) >> 2) +
- ((prefix->nbytesAuthString + (unsigned)3) >> 2);
+ stuff->length += bytes_to_int32(prefix->nbytesAuthProto) +
+ bytes_to_int32(prefix->nbytesAuthString);
if (client->swapped)
{
swaps(&stuff->length, whichbyte);
@@ -3758,7 +3804,7 @@ SendConnSetup(ClientPtr client, char *reason)
csp.success = xFalse;
csp.lengthReason = strlen(reason);
- csp.length = (csp.lengthReason + (unsigned)3) >> 2;
+ csp.length = bytes_to_int32(csp.lengthReason);
csp.majorVersion = X_PROTOCOL;
csp.minorVersion = X_PROTOCOL_REVISION;
if (client->swapped)
@@ -3849,7 +3895,7 @@ ProcEstablishConnection(ClientPtr client)
prefix = (xConnClientPrefix *)((char *)stuff + sz_xReq);
auth_proto = (char *)prefix + sz_xConnClientPrefix;
- auth_string = auth_proto + ((prefix->nbytesAuthProto + 3) & ~3);
+ auth_string = auth_proto + pad_to_int32(prefix->nbytesAuthProto);
if ((prefix->majorVersion != X_PROTOCOL) ||
(prefix->minorVersion != X_PROTOCOL_REVISION))
reason = "Protocol version mismatch";
diff --git a/dix/dixfonts.c b/dix/dixfonts.c
index 8b6e7a329..7d7ae71de 100644
--- a/dix/dixfonts.c
+++ b/dix/dixfonts.c
@@ -792,7 +792,7 @@ finish:
memset(&reply, 0, sizeof(xListFontsReply));
reply.type = X_Reply;
- reply.length = (stringLens + nnames + 3) >> 2;
+ reply.length = bytes_to_int32(stringLens + nnames);
reply.nFonts = nnames;
reply.sequenceNumber = client->sequence;
@@ -817,7 +817,7 @@ finish:
}
}
nnames = reply.nFonts;
- reply.length = (stringLens + nnames + 3) >> 2;
+ reply.length = bytes_to_int32(stringLens + nnames);
client->pSwapReplyFunc = ReplySwapVector[X_ListFonts];
WriteSwappedDataToClient(client, sizeof(xListFontsReply), &reply);
(void) WriteToClient(client, stringLens + nnames, bufferStart);
@@ -1057,9 +1057,9 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c)
namelen = strlen(name);
}
reply->type = X_Reply;
- reply->length = (sizeof *reply - sizeof(xGenericReply) +
+ reply->length = bytes_to_int32(sizeof *reply - sizeof(xGenericReply) +
pFontInfo->nprops * sizeof(xFontProp) +
- namelen + 3) >> 2;
+ namelen);
reply->sequenceNumber = client->sequence;
reply->nameLength = namelen;
reply->minBounds = pFontInfo->ink_minbounds;
@@ -1097,8 +1097,8 @@ finish:
bzero((char *) &finalReply, sizeof(xListFontsWithInfoReply));
finalReply.type = X_Reply;
finalReply.sequenceNumber = client->sequence;
- finalReply.length = (sizeof(xListFontsWithInfoReply)
- - sizeof(xGenericReply)) >> 2;
+ finalReply.length = bytes_to_int32(sizeof(xListFontsWithInfoReply)
+ - sizeof(xGenericReply));
WriteSwappedDataToClient(client, length, &finalReply);
bail:
if (c->slept)
diff --git a/dix/enterleave.c b/dix/enterleave.c
index 488a94388..c08cc3100 100644
--- a/dix/enterleave.c
+++ b/dix/enterleave.c
@@ -166,8 +166,8 @@ EnterWindow(DeviceIntPtr dev, WindowPtr win, int mode)
/**
* Unset the presence flag for dev to mark that it is not in 'win' anymore.
*/
-static void
-LeaveWindow(DeviceIntPtr dev, WindowPtr win, int mode)
+void
+LeaveWindow(DeviceIntPtr dev)
{
PointerWindows[dev->id] = NULL;
}
@@ -185,7 +185,7 @@ SetFocusIn(DeviceIntPtr dev, WindowPtr win)
* Unset the presence flag for dev to mark that it is not in 'win' anymore.
*/
void
-SetFocusOut(DeviceIntPtr dev, WindowPtr win)
+SetFocusOut(DeviceIntPtr dev)
{
FocusWindows[dev->id] = NULL;
}
@@ -215,11 +215,10 @@ CommonAncestor(
* Send enter notifies to all windows between 'ancestor' and 'child' (excluding
* both). Events are sent running up the window hierarchy. This function
* recurses.
- *
- * @param core If TRUE, core events are sent, otherwise XI events will be sent.
*/
static void
DeviceEnterNotifies(DeviceIntPtr dev,
+ int sourceid,
WindowPtr ancestor,
WindowPtr child,
int mode,
@@ -229,8 +228,8 @@ DeviceEnterNotifies(DeviceIntPtr dev,
if (ancestor == parent)
return;
- DeviceEnterNotifies(dev, ancestor, parent, mode, detail);
- DeviceEnterLeaveEvent(dev, XI_Enter, mode, detail, parent,
+ DeviceEnterNotifies(dev, sourceid, ancestor, parent, mode, detail);
+ DeviceEnterLeaveEvent(dev, sourceid, XI_Enter, mode, detail, parent,
child->drawable.id);
}
@@ -325,6 +324,7 @@ CoreLeaveNotifies(DeviceIntPtr dev,
*/
static void
DeviceLeaveNotifies(DeviceIntPtr dev,
+ int sourceid,
WindowPtr child,
WindowPtr ancestor,
int mode,
@@ -336,7 +336,7 @@ DeviceLeaveNotifies(DeviceIntPtr dev,
return;
for (win = child->parent; win != ancestor; win = win->parent)
{
- DeviceEnterLeaveEvent(dev, XI_Leave, mode, detail, win,
+ DeviceEnterLeaveEvent(dev, sourceid, XI_Leave, mode, detail, win,
child->drawable.id);
child = win;
}
@@ -550,7 +550,7 @@ CoreEnterLeaveEvents(DeviceIntPtr dev,
if (!IsMaster(dev))
return;
- LeaveWindow(dev, from, mode);
+ LeaveWindow(dev);
if (IsParent(from, to))
CoreEnterLeaveToDescendant(dev, from, to, mode);
@@ -564,30 +564,31 @@ CoreEnterLeaveEvents(DeviceIntPtr dev,
static void
DeviceEnterLeaveEvents(DeviceIntPtr dev,
+ int sourceid,
WindowPtr from,
WindowPtr to,
int mode)
{
if (IsParent(from, to))
{
- DeviceEnterLeaveEvent(dev, XI_Leave, mode, NotifyInferior, from, None);
- DeviceEnterNotifies(dev, from, to, mode, NotifyVirtual);
- DeviceEnterLeaveEvent(dev, XI_Enter, mode, NotifyAncestor, to, None);
+ DeviceEnterLeaveEvent(dev, sourceid, XI_Leave, mode, NotifyInferior, from, None);
+ DeviceEnterNotifies(dev, sourceid, from, to, mode, NotifyVirtual);
+ DeviceEnterLeaveEvent(dev, sourceid, XI_Enter, mode, NotifyAncestor, to, None);
}
else if (IsParent(to, from))
{
- DeviceEnterLeaveEvent(dev, XI_Leave, mode, NotifyAncestor, from, None);
- DeviceLeaveNotifies(dev, from, to, mode, NotifyVirtual);
- DeviceEnterLeaveEvent(dev, XI_Enter, mode, NotifyInferior, to, None);
+ DeviceEnterLeaveEvent(dev, sourceid, XI_Leave, mode, NotifyAncestor, from, None);
+ DeviceLeaveNotifies(dev, sourceid, from, to, mode, NotifyVirtual);
+ DeviceEnterLeaveEvent(dev, sourceid, XI_Enter, mode, NotifyInferior, to, None);
}
else
{ /* neither from nor to is descendent of the other */
WindowPtr common = CommonAncestor(to, from);
/* common == NullWindow ==> different screens */
- DeviceEnterLeaveEvent(dev, XI_Leave, mode, NotifyNonlinear, from, None);
- DeviceLeaveNotifies(dev, from, common, mode, NotifyNonlinearVirtual);
- DeviceEnterNotifies(dev, common, to, mode, NotifyNonlinearVirtual);
- DeviceEnterLeaveEvent(dev, XI_Enter, mode, NotifyNonlinear, to, None);
+ DeviceEnterLeaveEvent(dev, sourceid, XI_Leave, mode, NotifyNonlinear, from, None);
+ DeviceLeaveNotifies(dev, sourceid, from, common, mode, NotifyNonlinearVirtual);
+ DeviceEnterNotifies(dev, sourceid, common, to, mode, NotifyNonlinearVirtual);
+ DeviceEnterLeaveEvent(dev, sourceid, XI_Enter, mode, NotifyNonlinear, to, None);
}
}
@@ -600,6 +601,7 @@ DeviceEnterLeaveEvents(DeviceIntPtr dev,
*/
void
DoEnterLeaveEvents(DeviceIntPtr pDev,
+ int sourceid,
WindowPtr fromWin,
WindowPtr toWin,
int mode)
@@ -612,7 +614,7 @@ DoEnterLeaveEvents(DeviceIntPtr pDev,
if (mode != XINotifyPassiveGrab && mode != XINotifyPassiveUngrab)
CoreEnterLeaveEvents(pDev, fromWin, toWin, mode);
- DeviceEnterLeaveEvents(pDev, fromWin, toWin, mode);
+ DeviceEnterLeaveEvents(pDev, sourceid, fromWin, toWin, mode);
}
/**
@@ -1221,7 +1223,7 @@ CoreFocusEvents(DeviceIntPtr dev,
if (!IsMaster(dev))
return;
- SetFocusOut(dev, from);
+ SetFocusOut(dev);
if (((to == NullWindow) || (to == PointerRootWin)) &&
((from == NullWindow) || (from == PointerRootWin)))
diff --git a/dix/enterleave.h b/dix/enterleave.h
index edca38664..471f4efaa 100644
--- a/dix/enterleave.h
+++ b/dix/enterleave.h
@@ -33,6 +33,7 @@
extern void DoEnterLeaveEvents(
DeviceIntPtr pDev,
+ int sourceid,
WindowPtr fromWin,
WindowPtr toWin,
int mode
@@ -64,6 +65,7 @@ extern void CoreEnterLeaveEvent(DeviceIntPtr mouse,
WindowPtr pWin,
Window child);
extern void DeviceEnterLeaveEvent(DeviceIntPtr mouse,
+ int sourceid,
int type,
int mode,
int detail,
@@ -74,6 +76,7 @@ extern void EnterWindow(DeviceIntPtr dev,
WindowPtr win,
int mode);
+extern void LeaveWindow(DeviceIntPtr dev);
extern void CoreFocusEvent(DeviceIntPtr kbd,
int type,
@@ -90,6 +93,5 @@ extern void DeviceFocusEvent(DeviceIntPtr kbd,
extern void SetFocusIn(DeviceIntPtr kbd,
WindowPtr win);
-extern void SetFocusOut(DeviceIntPtr dev,
- WindowPtr win);
+extern void SetFocusOut(DeviceIntPtr dev);
#endif /* _ENTERLEAVE_H_ */
diff --git a/dix/eventconvert.c b/dix/eventconvert.c
index ac2b0c310..21eed40e1 100644
--- a/dix/eventconvert.c
+++ b/dix/eventconvert.c
@@ -42,7 +42,7 @@
#include "dix.h"
#include "inputstr.h"
#include "misc.h"
-#include "events.h"
+#include "eventstr.h"
#include "exglobals.h"
#include "eventconvert.h"
#include "xiquerydevice.h"
@@ -52,9 +52,38 @@
static int countValuators(DeviceEvent *ev, int *first);
static int getValuatorEvents(DeviceEvent *ev, deviceValuator *xv);
static int eventToKeyButtonPointer(DeviceEvent *ev, xEvent **xi, int *count);
-static int eventToClassesChanged(DeviceChangedEvent *ev, xEvent **dcce);
+static int eventToDeviceChanged(DeviceChangedEvent *ev, xEvent **dcce);
static int eventToDeviceEvent(DeviceEvent *ev, xEvent **xi);
static int eventToRawEvent(RawDeviceEvent *ev, xEvent **xi);
+
+/* Do not use, read comments below */
+BOOL EventIsKeyRepeat(xEvent *event);
+
+/**
+ * Hack to allow detectable autorepeat for core and XI1 events.
+ * The sequence number is unused until we send to the client and can be
+ * misused to store data. More or less, anyway.
+ *
+ * Do not use this. It may change any time without warning, eat your babies
+ * and piss on your cat.
+ */
+static void
+EventSetKeyRepeatFlag(xEvent *event, BOOL on)
+{
+ event->u.u.sequenceNumber = on;
+}
+
+/**
+ * Check if the event was marked as a repeat event before.
+ * NOTE: This is a nasty hack and should NOT be used by anyone else but
+ * TryClientEvents.
+ */
+BOOL
+EventIsKeyRepeat(xEvent *event)
+{
+ return !!event->u.u.sequenceNumber;
+}
+
/**
* Convert the given event to the respective core event.
*
@@ -90,11 +119,16 @@ EventToCore(InternalEvent *event, xEvent *core)
core->u.keyButtonPointer.rootX = e->root_x;
core->u.keyButtonPointer.rootY = e->root_y;
core->u.keyButtonPointer.state = e->corestate;
+ EventSetKeyRepeatFlag(core, (e->type == ET_KeyPress && e->key_repeat));
}
break;
case ET_ProximityIn:
case ET_ProximityOut:
- case ET_Raw:
+ case ET_RawKeyPress:
+ case ET_RawKeyRelease:
+ case ET_RawButtonPress:
+ case ET_RawButtonRelease:
+ case ET_RawMotion:
return BadMatch;
default:
/* XXX: */
@@ -135,10 +169,16 @@ EventToXI(InternalEvent *ev, xEvent **xi, int *count)
case ET_ProximityOut:
return eventToKeyButtonPointer((DeviceEvent*)ev, xi, count);
case ET_DeviceChanged:
- case ET_Raw:
+ case ET_RawKeyPress:
+ case ET_RawKeyRelease:
+ case ET_RawButtonPress:
+ case ET_RawButtonRelease:
+ case ET_RawMotion:
*count = 0;
*xi = NULL;
return BadMatch;
+ default:
+ break;
}
ErrorF("[dix] EventToXI: Not implemented for %d \n", ev->any.type);
@@ -181,10 +221,15 @@ EventToXI2(InternalEvent *ev, xEvent **xi)
*xi = NULL;
return BadMatch;
case ET_DeviceChanged:
- return eventToClassesChanged((DeviceChangedEvent*)ev, xi);
- case ET_Raw:
+ return eventToDeviceChanged((DeviceChangedEvent*)ev, xi);
+ case ET_RawKeyPress:
+ case ET_RawKeyRelease:
+ case ET_RawButtonPress:
+ case ET_RawButtonRelease:
+ case ET_RawMotion:
return eventToRawEvent((RawDeviceEvent*)ev, xi);
-
+ default:
+ break;
}
ErrorF("[dix] EventToXI2: Not implemented for %d \n", ev->any.type);
@@ -222,6 +267,8 @@ eventToKeyButtonPointer(DeviceEvent *ev, xEvent **xi, int *count)
kbp->root_y = ev->root_y;
kbp->deviceid = ev->deviceid;
kbp->state = ev->corestate;
+ EventSetKeyRepeatFlag((xEvent*)kbp,
+ (ev->type == ET_KeyPress && ev->key_repeat));
if (num_events > 1)
kbp->deviceid |= MORE_EVENTS;
@@ -235,6 +282,8 @@ eventToKeyButtonPointer(DeviceEvent *ev, xEvent **xi, int *count)
case ET_KeyRelease: kbp->type = DeviceKeyRelease; break;
case ET_ProximityIn: kbp->type = ProximityIn; break;
case ET_ProximityOut: kbp->type = ProximityOut; break;
+ default:
+ break;
}
if (num_events > 1)
@@ -323,38 +372,135 @@ getValuatorEvents(DeviceEvent *ev, deviceValuator *xv)
return (num_valuators + 5) / 6;
}
+
static int
-eventToClassesChanged(DeviceChangedEvent *ev, xEvent **xi)
+appendKeyInfo(DeviceChangedEvent *dce, xXIKeyInfo* info)
{
- int len = sizeof(xEvent);
- DeviceIntPtr slave;
- int rc;
- xXIDeviceChangedEvent *dce;
+ uint32_t *kc;
+ int i;
- rc = dixLookupDevice(&slave, ev->new_slaveid,
- serverClient, DixReadAccess);
+ info->type = XIKeyClass;
+ info->num_keycodes = dce->keys.max_keycode - dce->keys.min_keycode + 1;
+ info->length = sizeof(xXIKeyInfo)/4 + info->num_keycodes;
+ info->sourceid = dce->sourceid;
- if (rc != Success)
- return rc;
+ kc = (uint32_t*)&info[1];
+ for (i = 0; i < info->num_keycodes; i++)
+ *kc++ = i + dce->keys.min_keycode;
- len += SizeDeviceClasses(slave);
+ return info->length * 4;
+}
- *xi = xcalloc(1, len);
- if (!(*xi))
+static int
+appendButtonInfo(DeviceChangedEvent *dce, xXIButtonInfo *info)
+{
+ unsigned char *bits;
+ int mask_len;
+
+ mask_len = bytes_to_int32(bits_to_bytes(dce->buttons.num_buttons));
+
+ info->type = XIButtonClass;
+ info->num_buttons = dce->buttons.num_buttons;
+ info->length = bytes_to_int32(sizeof(xXIButtonInfo)) +
+ info->num_buttons + mask_len;
+ info->sourceid = dce->sourceid;
+
+ bits = (unsigned char*)&info[1];
+ memset(bits, 0, mask_len * 4);
+ /* FIXME: is_down? */
+
+ bits += mask_len * 4;
+ memcpy(bits, dce->buttons.names, dce->buttons.num_buttons * sizeof(Atom));
+
+ return info->length * 4;
+}
+
+static int
+appendValuatorInfo(DeviceChangedEvent *dce, xXIValuatorInfo *info, int axisnumber)
+{
+ info->type = XIValuatorClass;
+ info->length = sizeof(xXIValuatorInfo)/4;
+ info->label = dce->valuators[axisnumber].name;
+ info->min.integral = dce->valuators[axisnumber].min;
+ info->min.frac = 0;
+ info->max.integral = dce->valuators[axisnumber].max;
+ info->max.frac = 0;
+ /* FIXME: value */
+ info->value.integral = 0;
+ info->value.frac = 0;
+ info->resolution = dce->valuators[axisnumber].resolution;
+ info->number = axisnumber;
+ info->mode = dce->valuators[axisnumber].mode; /* Server doesn't have per-axis mode yet */
+ info->sourceid = dce->sourceid;
+
+ return info->length * 4;
+}
+
+static int
+eventToDeviceChanged(DeviceChangedEvent *dce, xEvent **xi)
+{
+ xXIDeviceChangedEvent *dcce;
+ int len = sizeof(xXIDeviceChangedEvent);
+ int nkeys;
+ char *ptr;
+
+ if (dce->buttons.num_buttons)
+ {
+ len += sizeof(xXIButtonInfo);
+ len += dce->buttons.num_buttons * sizeof(Atom); /* button names */
+ len += pad_to_int32(bits_to_bytes(dce->buttons.num_buttons));
+ }
+ if (dce->num_valuators)
+ len += sizeof(xXIValuatorInfo) * dce->num_valuators;
+
+ nkeys = (dce->keys.max_keycode > 0) ?
+ dce->keys.max_keycode - dce->keys.min_keycode + 1 : 0;
+ if (nkeys > 0)
+ {
+ len += sizeof(xXIKeyInfo);
+ len += sizeof(CARD32) * nkeys; /* keycodes */
+ }
+
+ dcce = xcalloc(1, len);
+ if (!dcce)
+ {
+ ErrorF("[Xi] BadAlloc in SendDeviceChangedEvent.\n");
return BadAlloc;
+ }
+
+ dcce->type = GenericEvent;
+ dcce->extension = IReqCode;
+ dcce->evtype = XI_DeviceChanged;
+ dcce->time = dce->time;
+ dcce->deviceid = dce->deviceid;
+ dcce->sourceid = dce->sourceid;
+ dcce->reason = (dce->flags & DEVCHANGE_DEVICE_CHANGE) ? XIDeviceChange : XISlaveSwitch;
+ dcce->num_classes = 0;
+ dcce->length = bytes_to_int32(len - sizeof(xEvent));
+
+ ptr = (char*)&dcce[1];
+ if (dce->buttons.num_buttons)
+ {
+ dcce->num_classes++;
+ ptr += appendButtonInfo(dce, (xXIButtonInfo*)ptr);
+ }
+
+ if (nkeys)
+ {
+ dcce->num_classes++;
+ ptr += appendKeyInfo(dce, (xXIKeyInfo*)ptr);
+ }
- dce = (xXIDeviceChangedEvent*)(*xi);
- dce->type = GenericEvent;
- dce->extension = IReqCode;
- dce->evtype = XI_DeviceChanged;
- dce->time = GetTimeInMillis();
- dce->sourceid = slave->id;
- dce->reason = XISlaveSwitch;
- dce->length = (len - sizeof(xEvent))/4;
+ if (dce->num_valuators)
+ {
+ int i;
+
+ dcce->num_classes += dce->num_valuators;
+ for (i = 0; i < dce->num_valuators; i++)
+ ptr += appendValuatorInfo(dce, (xXIValuatorInfo*)ptr, i);
+ }
- /* FIXME: this should come from the event, not from the device. See
- * CreateClassesChangedEvent */
- ListDeviceClasses(slave, (char*)&dce[1], &dce->num_classes);
+ *xi = (xEvent*)dcce;
return Success;
}
@@ -389,13 +535,13 @@ eventToDeviceEvent(DeviceEvent *ev, xEvent **xi)
/* FIXME: this should just send the buttons we have, not MAX_BUTTONs. Same
* with MAX_VALUATORS below */
/* btlen is in 4 byte units */
- btlen = (((MAX_BUTTONS + 7)/8) + 3)/4;
+ btlen = bytes_to_int32(bits_to_bytes(MAX_BUTTONS));
len += btlen * 4; /* buttonmask len */
vallen = count_bits(ev->valuators.mask, sizeof(ev->valuators.mask)/sizeof(ev->valuators.mask[0]));
len += vallen * 2 * sizeof(uint32_t); /* axisvalues */
- vallen = (((MAX_VALUATORS + 7)/8) + 3)/4;
+ vallen = bytes_to_int32(bits_to_bytes(MAX_VALUATORS));
len += vallen * 4; /* valuators mask */
*xi = xcalloc(1, len);
@@ -404,7 +550,7 @@ eventToDeviceEvent(DeviceEvent *ev, xEvent **xi)
xde->extension = IReqCode;
xde->evtype = GetXI2Type((InternalEvent*)ev);
xde->time = ev->time;
- xde->length = (len - sizeof(xEvent) + 3)/4;
+ xde->length = bytes_to_int32(len - sizeof(xEvent));
xde->detail = ev->detail.button;
xde->root = ev->root;
xde->buttons_len = btlen;
@@ -414,13 +560,18 @@ eventToDeviceEvent(DeviceEvent *ev, xEvent **xi)
xde->root_x = FP1616(ev->root_x, ev->root_x_frac);
xde->root_y = FP1616(ev->root_y, ev->root_y_frac);
+ if (ev->key_repeat)
+ xde->flags |= XIKeyRepeat;
+
xde->mods.base_mods = ev->mods.base;
xde->mods.latched_mods = ev->mods.latched;
xde->mods.locked_mods = ev->mods.locked;
+ xde->mods.effective_mods = ev->mods.effective;
xde->group.base_group = ev->group.base;
xde->group.latched_group = ev->group.latched;
xde->group.locked_group = ev->group.locked;
+ xde->group.effective_group = ev->group.effective;
ptr = (char*)&xde[1];
for (i = 0; i < sizeof(ev->buttons) * 8; i++)
@@ -454,10 +605,10 @@ eventToRawEvent(RawDeviceEvent *ev, xEvent **xi)
char *ptr;
FP3232 *axisval;
- nvals = count_bits(ev->valuators.mask, sizeof(ev->valuators.mask)/sizeof(ev->valuators.mask[0]));
- len += nvals * (2 * sizeof(uint32_t)) * 2; /* 8 byte per valuator, once
- raw, once processed */
- vallen = (((MAX_VALUATORS + 7)/8) + 3)/4;
+ nvals = count_bits(ev->valuators.mask, sizeof(ev->valuators.mask));
+ len += nvals * sizeof(FP3232) * 2; /* 8 byte per valuator, once
+ raw, once processed */
+ vallen = bytes_to_int32(bits_to_bytes(MAX_VALUATORS));
len += vallen * 4; /* valuators mask */
*xi = xcalloc(1, len);
@@ -466,8 +617,7 @@ eventToRawEvent(RawDeviceEvent *ev, xEvent **xi)
raw->extension = IReqCode;
raw->evtype = GetXI2Type((InternalEvent*)ev);
raw->time = ev->time;
- raw->length = (len - sizeof(xEvent) + 3)/4;
- raw->eventtype = ev->subtype;
+ raw->length = bytes_to_int32(len - sizeof(xEvent));
raw->detail = ev->detail.button;
raw->deviceid = ev->deviceid;
raw->valuators_len = vallen;
@@ -505,6 +655,8 @@ GetCoreType(InternalEvent *event)
case ET_ButtonRelease: coretype = ButtonRelease; break;
case ET_KeyPress: coretype = KeyPress; break;
case ET_KeyRelease: coretype = KeyRelease; break;
+ default:
+ break;
}
return coretype;
}
@@ -526,6 +678,8 @@ GetXIType(InternalEvent *event)
case ET_KeyRelease: xitype = DeviceKeyRelease; break;
case ET_ProximityIn: xitype = ProximityIn; break;
case ET_ProximityOut: xitype = ProximityOut; break;
+ default:
+ break;
}
return xitype;
}
@@ -550,7 +704,11 @@ GetXI2Type(InternalEvent *event)
case ET_Leave: xi2type = XI_Leave; break;
case ET_Hierarchy: xi2type = XI_HierarchyChanged; break;
case ET_DeviceChanged: xi2type = XI_DeviceChanged; break;
- case ET_Raw: xi2type = XI_RawEvent; break;
+ case ET_RawKeyPress: xi2type = XI_RawKeyPress; break;
+ case ET_RawKeyRelease: xi2type = XI_RawKeyRelease; break;
+ case ET_RawButtonPress: xi2type = XI_RawButtonPress; break;
+ case ET_RawButtonRelease: xi2type = XI_RawButtonRelease; break;
+ case ET_RawMotion: xi2type = XI_RawMotion; break;
case ET_FocusIn: xi2type = XI_FocusIn; break;
case ET_FocusOut: xi2type = XI_FocusOut; break;
default:
diff --git a/dix/events.c b/dix/events.c
index 87d2ef746..bb5520af9 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -117,7 +117,6 @@ of the copyright holder.
#endif
#include <X11/X.h>
-#include <X11/keysym.h>
#include "misc.h"
#include "resource.h"
#include <X11/Xproto.h>
@@ -135,9 +134,6 @@ of the copyright holder.
#include <X11/extensions/XKBproto.h>
#include "xkbsrv.h"
-/* XKB FIXME: why is this here? */
-extern Bool XkbFilterEvents(ClientPtr, int, xEvent *);
-
#include "xace.h"
#ifdef XSERVER_DTRACE
@@ -167,6 +163,7 @@ typedef const char *string;
#include "geext.h"
#include "geint.h"
+#include "eventstr.h"
#include "enterleave.h"
#include "eventconvert.h"
@@ -233,6 +230,9 @@ static Bool CheckPassiveGrabsOnWindow(WindowPtr pWin,
DeviceEvent *event,
BOOL checkCore);
+/** Key repeat hack. Do not use but in TryClientEvents */
+extern BOOL EventIsKeyRepeat(xEvent *event);
+
/**
* Main input device struct.
* inputInfo.pointer
@@ -1551,7 +1551,8 @@ ActivatePointerGrab(DeviceIntPtr mouse, GrabPtr grab,
Bool isPassive = autoGrab & ~ImplicitGrabMask;
/* slave devices need to float for the duration of the grab. */
- if (!(autoGrab & ImplicitGrabMask) && !IsMaster(mouse))
+ if (grab->grabtype == GRABTYPE_XI2 &&
+ !(autoGrab & ImplicitGrabMask) && !IsMaster(mouse))
DetachFromMaster(mouse);
if (grab->confineTo)
@@ -1562,7 +1563,7 @@ ActivatePointerGrab(DeviceIntPtr mouse, GrabPtr grab,
mouse->spriteInfo->sprite->hotPhys.y = 0;
ConfineCursorToWindow(mouse, grab->confineTo, FALSE, TRUE);
}
- DoEnterLeaveEvents(mouse, oldWin, grab->window, NotifyGrab);
+ DoEnterLeaveEvents(mouse, mouse->id, oldWin, grab->window, NotifyGrab);
mouse->valuator->motionHintWindow = NullWindow;
if (syncEvents.playingEvents)
grabinfo->grabTime = syncEvents.time;
@@ -1601,7 +1602,7 @@ DeactivatePointerGrab(DeviceIntPtr mouse)
if (dev->deviceGrab.sync.other == grab)
dev->deviceGrab.sync.other = NullGrab;
}
- DoEnterLeaveEvents(mouse, grab->window,
+ DoEnterLeaveEvents(mouse, mouse->id, grab->window,
mouse->spriteInfo->sprite->win, NotifyUngrab);
if (grab->confineTo)
ConfineCursorToWindow(mouse, RootWindow(mouse), FALSE, FALSE);
@@ -1609,7 +1610,7 @@ DeactivatePointerGrab(DeviceIntPtr mouse)
if (grab->cursor)
FreeCursor(grab->cursor, (Cursor)0);
- if (!wasImplicit)
+ if (!wasImplicit && grab->grabtype == GRABTYPE_XI2)
ReattachToOldMaster(mouse);
ComputeFreezes();
@@ -1627,7 +1628,9 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time, Bool pass
WindowPtr oldWin;
/* slave devices need to float for the duration of the grab. */
- if (!(passive & ImplicitGrabMask) && !IsMaster(keybd))
+ if (grab->grabtype == GRABTYPE_XI2 &&
+ !(passive & ImplicitGrabMask) &&
+ !IsMaster(keybd))
DetachFromMaster(keybd);
if (grabinfo->grab)
@@ -1680,7 +1683,7 @@ DeactivateKeyboardGrab(DeviceIntPtr keybd)
}
DoFocusEvents(keybd, grab->window, focusWin, NotifyUngrab);
- if (!wasImplicit)
+ if (!wasImplicit && grab->grabtype == GRABTYPE_XI2)
ReattachToOldMaster(keybd);
ComputeFreezes();
@@ -1924,70 +1927,124 @@ TryClientEvents (ClientPtr client, DeviceIntPtr dev, xEvent *pEvents,
int type;
#ifdef DEBUG_EVENTS
- ErrorF("[dix] Event([%d, %d], mask=0x%x), client=%d",
- pEvents->u.u.type, pEvents->u.u.detail, mask, client->index);
+ ErrorF("[dix] Event([%d, %d], mask=0x%lx), client=%d%s",
+ pEvents->u.u.type, pEvents->u.u.detail, mask,
+ client ? client->index : -1,
+ (client && client->clientGone) ? " (gone)" : "");
#endif
- if ((client) && (client != serverClient) && (!client->clientGone) &&
- ((filter == CantBeFiltered) || (mask & filter)))
- {
- if (grab && !SameClient(grab, client))
- return -1; /* don't send, but notify caller */
- type = pEvents->u.u.type;
- if (type == MotionNotify)
- {
- if (mask & PointerMotionHintMask)
- {
- if (WID(dev->valuator->motionHintWindow) ==
- pEvents->u.keyButtonPointer.event)
- {
+
+ if (!client || client == serverClient || client->clientGone) {
#ifdef DEBUG_EVENTS
- ErrorF("[dix] \n");
- ErrorF("[dix] motionHintWindow == keyButtonPointer.event\n");
+ ErrorF(" not delivered to fake/dead client\n");
#endif
- return 1; /* don't send, but pretend we did */
- }
- pEvents->u.u.detail = NotifyHint;
- }
- else
- {
- pEvents->u.u.detail = NotifyNormal;
- }
- }
- else
- {
- if ((type == DeviceMotionNotify) &&
- MaybeSendDeviceMotionNotifyHint
- ((deviceKeyButtonPointer*)pEvents, mask) != 0)
- return 1;
- }
- type &= 0177;
- if (type != KeymapNotify)
- {
- /* all extension events must have a sequence number */
- for (i = 0; i < count; i++)
- pEvents[i].u.u.sequenceNumber = client->sequence;
- }
+ return 0;
+ }
- if (BitIsOn(criticalEvents, type))
- {
- if (client->smart_priority < SMART_MAX_PRIORITY)
- client->smart_priority++;
- SetCriticalOutputPending();
- }
+ if (filter != CantBeFiltered && !(mask & filter))
+ {
+ #ifdef DEBUG_EVENTS
+ ErrorF(" filtered\n");
+ #endif
+ return 0;
+ }
- WriteEventsToClient(client, count, pEvents);
+ if (grab && !SameClient(grab, client))
+ {
#ifdef DEBUG_EVENTS
- ErrorF("[dix] delivered\n");
+ ErrorF(" not delivered due to grab\n");
#endif
- return 1;
+ return -1; /* don't send, but notify caller */
}
- else
+
+ type = pEvents->u.u.type;
+ if (type == MotionNotify)
{
+ if (mask & PointerMotionHintMask)
+ {
+ if (WID(dev->valuator->motionHintWindow) ==
+ pEvents->u.keyButtonPointer.event)
+ {
#ifdef DEBUG_EVENTS
- ErrorF("[dix] \n");
+ ErrorF("[dix] \n");
+ ErrorF("[dix] motionHintWindow == keyButtonPointer.event\n");
#endif
- return 0;
+ return 1; /* don't send, but pretend we did */
+ }
+ pEvents->u.u.detail = NotifyHint;
+ }
+ else
+ {
+ pEvents->u.u.detail = NotifyNormal;
+ }
}
+ else if (type == DeviceMotionNotify)
+ {
+ if (MaybeSendDeviceMotionNotifyHint((deviceKeyButtonPointer*)pEvents,
+ mask) != 0)
+ return 1;
+ } else if (type == KeyPress)
+ {
+ if (EventIsKeyRepeat(pEvents))
+ {
+ if (!_XkbWantsDetectableAutoRepeat(client))
+ {
+ xEvent release = *pEvents;
+ release.u.u.type = KeyRelease;
+ release.u.u.sequenceNumber = client->sequence;
+ WriteEventsToClient(client, 1, &release);
+#ifdef DEBUG_EVENTS
+ ErrorF(" (plus fake core release for repeat)");
+#endif
+ } else
+ {
+#ifdef DEBUG_EVENTS
+ ErrorF(" (detectable autorepeat for core)");
+#endif
+ }
+ }
+
+ } else if (type == DeviceKeyPress)
+ {
+ if (EventIsKeyRepeat(pEvents))
+ {
+ if (!_XkbWantsDetectableAutoRepeat(client))
+ {
+ deviceKeyButtonPointer release = *(deviceKeyButtonPointer *)pEvents;
+ release.type = DeviceKeyRelease;
+ release.sequenceNumber = client->sequence;
+#ifdef DEBUG_EVENTS
+ ErrorF(" (plus fake xi1 release for repeat)");
+#endif
+ WriteEventsToClient(client, 1, (xEvent *) &release);
+ }
+ else {
+#ifdef DEBUG_EVENTS
+ ErrorF(" (detectable autorepeat for core)");
+#endif
+ }
+ }
+ }
+
+ type &= 0177;
+ if (type != KeymapNotify)
+ {
+ /* all extension events must have a sequence number */
+ for (i = 0; i < count; i++)
+ pEvents[i].u.u.sequenceNumber = client->sequence;
+ }
+
+ if (BitIsOn(criticalEvents, type))
+ {
+ if (client->smart_priority < SMART_MAX_PRIORITY)
+ client->smart_priority++;
+ SetCriticalOutputPending();
+ }
+
+ WriteEventsToClient(client, count, pEvents);
+#ifdef DEBUG_EVENTS
+ ErrorF("[dix] delivered\n");
+#endif
+ return 1;
}
@@ -2288,7 +2345,14 @@ FixUpEventFromWindow(
{
xXIDeviceEvent* event = (xXIDeviceEvent*)xE;
- if (event->evtype == XI_RawEvent)
+ if (event->evtype == XI_RawKeyPress ||
+ event->evtype == XI_RawKeyRelease ||
+ event->evtype == XI_RawButtonPress ||
+ event->evtype == XI_RawButtonRelease ||
+ event->evtype == XI_RawMotion ||
+ event->evtype == XI_DeviceChanged ||
+ event->evtype == XI_HierarchyChanged ||
+ event->evtype == XI_PropertyEvent)
return;
event->root = RootWindow(pDev)->drawable.id;
@@ -2740,7 +2804,7 @@ ActivateFocusInGrab(DeviceIntPtr dev, WindowPtr old, WindowPtr win)
if (dev->deviceGrab.grab->window == win ||
IsParent(dev->deviceGrab.grab->window, win))
return FALSE;
- DoEnterLeaveEvents(dev, old, win, XINotifyPassiveUngrab);
+ DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveUngrab);
(*dev->deviceGrab.DeactivateGrab)(dev);
}
@@ -2757,7 +2821,7 @@ ActivateFocusInGrab(DeviceIntPtr dev, WindowPtr old, WindowPtr win)
event.detail.button = 0;
rc = CheckPassiveGrabsOnWindow(win, dev, &event, FALSE);
if (rc)
- DoEnterLeaveEvents(dev, old, win, XINotifyPassiveUngrab);
+ DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveUngrab);
return rc;
}
@@ -2780,7 +2844,7 @@ ActivateEnterGrab(DeviceIntPtr dev, WindowPtr old, WindowPtr win)
if (dev->deviceGrab.grab->window == win ||
IsParent(dev->deviceGrab.grab->window, win))
return FALSE;
- DoEnterLeaveEvents(dev, old, win, XINotifyPassiveUngrab);
+ DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveUngrab);
(*dev->deviceGrab.DeactivateGrab)(dev);
}
@@ -2794,7 +2858,7 @@ ActivateEnterGrab(DeviceIntPtr dev, WindowPtr old, WindowPtr win)
event.detail.button = 0;
rc = CheckPassiveGrabsOnWindow(win, dev, &event, FALSE);
if (rc)
- DoEnterLeaveEvents(dev, old, win, XINotifyPassiveGrab);
+ DoEnterLeaveEvents(dev, dev->id, old, win, XINotifyPassiveGrab);
return rc;
}
@@ -2909,12 +2973,16 @@ CheckMotion(DeviceEvent *ev, DeviceIntPtr pDev)
if (newSpriteWin != prevSpriteWin)
{
- if (!ev)
+ int sourceid;
+ if (!ev) {
UpdateCurrentTimeIf();
+ sourceid = pDev->id; /* when from WindowsRestructured */
+ } else
+ sourceid = ev->sourceid;
if (prevSpriteWin != NullWindow) {
if (!ActivateEnterGrab(pDev, prevSpriteWin, newSpriteWin))
- DoEnterLeaveEvents(pDev, prevSpriteWin,
+ DoEnterLeaveEvents(pDev, sourceid, prevSpriteWin,
newSpriteWin, NotifyNormal);
}
/* set pSprite->win after ActivateEnterGrab, otherwise
@@ -2937,7 +3005,7 @@ WindowsRestructured(void)
DeviceIntPtr pDev = inputInfo.devices;
while(pDev)
{
- if (DevHasCursor(pDev))
+ if (IsMaster(pDev) || !pDev->u.master)
CheckMotion(NULL, pDev);
pDev = pDev->next;
}
@@ -3543,6 +3611,7 @@ CheckPassiveGrabsOnWindow(
{
DeviceIntPtr gdev;
XkbSrvInfoPtr xkbi = NULL;
+ Mask mask = 0;
gdev= grab->modifierDevice;
if (grab->grabtype == GRABTYPE_CORE)
@@ -3570,8 +3639,6 @@ CheckPassiveGrabsOnWindow(
/* Check for XI2 and XI grabs first */
tempGrab.type = GetXI2Type((InternalEvent*)event);
tempGrab.grabtype = GRABTYPE_XI2;
- if (event->type == ET_KeyPress)
- tempGrab.detail.exact = XkbGetKeysym(device, event);
if (GrabMatchesSecond(&tempGrab, grab, FALSE))
match = XI2_MATCH;
@@ -3659,6 +3726,7 @@ CheckPassiveGrabsOnWindow(
}
xE = &core;
count = 1;
+ mask = grab->eventMask;
} else if (match & XI2_MATCH)
{
rc = EventToXI2((InternalEvent*)event, &xE);
@@ -3670,6 +3738,16 @@ CheckPassiveGrabsOnWindow(
continue;
}
count = 1;
+
+ /* FIXME: EventToXI2 returns NULL for enter events, so
+ * dereferencing the event is bad. Internal event types are
+ * aligned with core events, so the else clause is valid.
+ * long-term we should use internal events for enter/focus
+ * as well */
+ if (xE)
+ mask = grab->xi2mask[device->id][((xGenericEvent*)xE)->evtype/8];
+ else if (event->type == XI_Enter || event->type == XI_FocusIn)
+ mask = grab->xi2mask[device->id][event->type/8];
} else
{
rc = EventToXI((InternalEvent*)event, &xE, &count);
@@ -3680,6 +3758,7 @@ CheckPassiveGrabsOnWindow(
"(%d, %d).\n", device->name, event->type, rc);
continue;
}
+ mask = grab->eventMask;
}
(*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE);
@@ -3688,8 +3767,7 @@ CheckPassiveGrabsOnWindow(
{
FixUpEventFromWindow(device, xE, grab->window, None, TRUE);
- TryClientEvents(rClient(grab), device, xE, count,
- GetEventFilter(device, xE),
+ TryClientEvents(rClient(grab), device, xE, count, mask,
GetEventFilter(device, xE), grab);
}
@@ -4404,6 +4482,7 @@ CoreEnterLeaveEvent(
void
DeviceEnterLeaveEvent(
DeviceIntPtr mouse,
+ int sourceid,
int type,
int mode,
int detail,
@@ -4420,8 +4499,8 @@ DeviceEnterLeaveEvent(
(mode == XINotifyPassiveUngrab && type == XI_Enter))
return;
- btlen = (mouse->button) ? (mouse->button->numButtons + 7)/8 : 0;
- btlen = (btlen + 3)/4;
+ btlen = (mouse->button) ? bits_to_bytes(mouse->button->numButtons) : 0;
+ btlen = bytes_to_int32(btlen);
len = sizeof(xXIEnterEvent) + btlen * 4;
event = xcalloc(1, len);
@@ -4433,7 +4512,7 @@ DeviceEnterLeaveEvent(
event->detail = detail;
event->time = currentTime.milliseconds;
event->deviceid = mouse->id;
- event->sourceid = 0; /*XXX */
+ event->sourceid = sourceid;
event->mode = mode;
event->root_x = FP1616(mouse->spriteInfo->sprite->hot.x, 0);
event->root_y = FP1616(mouse->spriteInfo->sprite->hot.y, 0);
@@ -5261,7 +5340,7 @@ ProcUngrabKey(ClientPtr client)
int rc;
REQUEST_SIZE_MATCH(xUngrabKeyReq);
- rc = dixLookupWindow(&pWin, stuff->grabWindow, client, DixReadAccess);
+ rc = dixLookupWindow(&pWin, stuff->grabWindow, client, DixGetAttrAccess);
if (rc != Success)
return rc;
@@ -5729,8 +5808,8 @@ WriteEventsToClient(ClientPtr pClient, int count, xEvent *events)
int i,
eventlength = sizeof(xEvent);
- if (!XkbFilterEvents(pClient, count, events))
- return;
+ /* Let XKB rewrite the state, as it depends on client preferences. */
+ XkbFilterEvents(pClient, count, events);
#ifdef PANORAMIX
if(!noPanoramiXExtension &&
@@ -5842,21 +5921,25 @@ WriteEventsToClient(ClientPtr pClient, int count, xEvent *events)
* PickPointer()).
* If a keyboard is needed, the first keyboard paired with the CP is used.
*/
-Bool
+int
SetClientPointer(ClientPtr client, DeviceIntPtr device)
{
+ int rc = XaceHook(XACE_DEVICE_ACCESS, client, device, DixUseAccess);
+ if (rc != Success)
+ return rc;
+
if (!IsMaster(device))
{
ErrorF("[dix] Need master device for ClientPointer. This is a bug.\n");
- return FALSE;
+ return BadDevice;
} else if (!device->spriteInfo->spriteOwner)
{
ErrorF("[dix] Device %d does not have a sprite. "
"Cannot be ClientPointer\n", device->id);
- return FALSE;
+ return BadDevice;
}
client->clientPtr = device;
- return TRUE;
+ return Success;
}
/* PickPointer will pick an appropriate pointer for the given client.
diff --git a/dix/extension.c b/dix/extension.c
index c768ccb84..fb83af148 100644
--- a/dix/extension.c
+++ b/dix/extension.c
@@ -324,7 +324,7 @@ ProcListExtensions(ClientPtr client)
for (j = extensions[i]->num_aliases; --j >= 0;)
total_length += strlen(extensions[i]->aliases[j]) + 1;
}
- reply.length = (total_length + 3) >> 2;
+ reply.length = bytes_to_int32(total_length);
buffer = bufptr = xalloc(total_length);
if (!buffer)
return(BadAlloc);
diff --git a/dix/getevents.c b/dix/getevents.c
index 7c018c14d..2912c1e85 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -43,7 +43,7 @@
#include "globals.h"
#include "dixevents.h"
#include "mipointer.h"
-#include "events.h"
+#include "eventstr.h"
#include "eventconvert.h"
#include <X11/extensions/XKBproto.h>
@@ -138,14 +138,12 @@ init_event(DeviceIntPtr dev, DeviceEvent* event, Time ms)
}
static void
-init_raw(DeviceIntPtr dev, RawDeviceEvent *event, Time ms, int subtype,
- int detail)
+init_raw(DeviceIntPtr dev, RawDeviceEvent *event, Time ms, int type, int detail)
{
memset(event, 0, sizeof(RawDeviceEvent));
event->header = ET_Internal;
event->length = sizeof(RawDeviceEvent);
- event->type = ET_Raw;
- event->subtype = subtype;
+ event->type = ET_RawKeyPress - ET_KeyPress + type;
event->time = ms;
event->deviceid = dev->id;
event->sourceid = dev->id;
@@ -157,10 +155,9 @@ set_raw_valuators(RawDeviceEvent *event, int first, int num, int *valuators, int
{
int i;
for (i = first; i < first + num; i++)
- {
SetBit(event->valuators.mask, i);
- data[i] = valuators[i - first];
- }
+
+ memcpy(&data[first], valuators, num * sizeof(uint32_t));
}
@@ -175,8 +172,8 @@ set_valuators(DeviceIntPtr dev, DeviceEvent* event, int first_valuator,
SetBit(event->valuators.mask, i);
if (dev->valuator->mode == Absolute)
SetBit(event->valuators.mode, i);
- event->valuators.data_frac[first_valuator + i] =
- dev->last.remainder[first_valuator + i] * (1 << 16) * (1 << 16);
+ event->valuators.data_frac[i] =
+ dev->last.remainder[i] * (1 << 16) * (1 << 16);
}
memcpy(&event->valuators.data[first_valuator],
@@ -196,19 +193,15 @@ CreateClassesChangedEvent(EventList* event,
dce = (DeviceChangedEvent*)event->event;
memset(dce, 0, sizeof(DeviceChangedEvent));
- dce->deviceid = master->id;
+ dce->deviceid = slave->id;
+ dce->masterid = master->id;
dce->header = ET_Internal;
dce->length = sizeof(DeviceChangedEvent);
dce->type = ET_DeviceChanged;
dce->time = ms;
dce->flags = type;
- if (master->last.slave)
- {
- dce->flags |= DEVCHANGE_HAS_OLD_SLAVE;
- dce->old_slaveid = master->last.slave->id;
- }
- dce->flags |= DEVCHANGE_HAS_NEW_SLAVE;
- dce->new_slaveid = slave->id;
+ dce->flags |= DEVCHANGE_SLAVE_SWITCH;
+ dce->sourceid = slave->id;
if (slave->button)
{
@@ -240,10 +233,11 @@ CreateClassesChangedEvent(EventList* event,
* Rescale the coord between the two axis ranges.
*/
static int
-rescaleValuatorAxis(int coord, AxisInfoPtr from, AxisInfoPtr to,
+rescaleValuatorAxis(int coord, float remainder, float *remainder_return, AxisInfoPtr from, AxisInfoPtr to,
int defmax)
{
- int fmin = 0, tmin = 0, fmax = defmax, tmax = defmax;
+ int fmin = 0, tmin = 0, fmax = defmax, tmax = defmax, coord_return;
+ float value;
if(from && from->min_value < from->max_value) {
fmin = from->min_value;
@@ -254,14 +248,23 @@ rescaleValuatorAxis(int coord, AxisInfoPtr from, AxisInfoPtr to,
tmax = to->max_value;
}
- if(fmin == tmin && fmax == tmax)
+ if(fmin == tmin && fmax == tmax) {
+ if (remainder_return)
+ *remainder_return = remainder;
return coord;
+ }
- if(fmax == fmin) /* avoid division by 0 */
+ if(fmax == fmin) { /* avoid division by 0 */
+ if (remainder_return)
+ *remainder_return = 0.0;
return 0;
+ }
- return lroundf(((float)(coord - fmin)) * (tmax - tmin) /
- (fmax - fmin)) + tmin;
+ value = (coord + remainder - fmin) * (tmax - tmin) / (fmax - fmin) + tmin;
+ coord_return = lroundf(value);
+ if (remainder_return)
+ *remainder_return = value - coord_return;
+ return coord_return;
}
/**
@@ -289,9 +292,11 @@ updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev)
/* scale back to device coordinates */
if(pDev->valuator->numAxes > 0)
- pDev->last.valuators[0] = rescaleValuatorAxis(pDev->last.valuators[0], NULL, pDev->valuator->axes + 0, scr->width);
+ pDev->last.valuators[0] = rescaleValuatorAxis(pDev->last.valuators[0], pDev->last.remainder[0],
+ &pDev->last.remainder[0], NULL, pDev->valuator->axes + 0, scr->width);
if(pDev->valuator->numAxes > 1)
- pDev->last.valuators[1] = rescaleValuatorAxis(pDev->last.valuators[1], NULL, pDev->valuator->axes + 1, scr->height);
+ pDev->last.valuators[1] = rescaleValuatorAxis(pDev->last.valuators[1], pDev->last.remainder[1],
+ &pDev->last.remainder[0], NULL, pDev->valuator->axes + 1, scr->height);
/* calculate the other axis as well based on info from the old
* slave-device. If the old slave had less axes than this one,
@@ -304,6 +309,8 @@ updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev)
else
pDev->last.valuators[i] =
rescaleValuatorAxis(pDev->last.valuators[i],
+ pDev->last.remainder[i],
+ &pDev->last.remainder[i],
lastSlave->valuator->axes + i,
pDev->valuator->axes + i, 0);
}
@@ -410,7 +417,7 @@ GetMotionHistory(DeviceIntPtr pDev, xTimecoord **buff, unsigned long start,
/* scale to screen coords */
to = &core_axis;
to->max_value = pScreen->width;
- coord = rescaleValuatorAxis(coord, &from, to, pScreen->width);
+ coord = rescaleValuatorAxis(coord, 0.0, NULL, &from, to, pScreen->width);
memcpy(corebuf, &coord, sizeof(INT16));
corebuf++;
@@ -421,7 +428,7 @@ GetMotionHistory(DeviceIntPtr pDev, xTimecoord **buff, unsigned long start,
memcpy(&coord, icbuf++, sizeof(INT32));
to->max_value = pScreen->height;
- coord = rescaleValuatorAxis(coord, &from, to, pScreen->height);
+ coord = rescaleValuatorAxis(coord, 0.0, NULL, &from, to, pScreen->height);
memcpy(corebuf, &coord, sizeof(INT16));
} else if (IsMaster(pDev))
@@ -456,7 +463,7 @@ GetMotionHistory(DeviceIntPtr pDev, xTimecoord **buff, unsigned long start,
dflt = 0;
/* scale from stored range into current range */
- coord = rescaleValuatorAxis(coord, &from, to, 0);
+ coord = rescaleValuatorAxis(coord, 0.0, NULL, &from, to, 0);
memcpy(ocbuf, &coord, sizeof(INT32));
ocbuf++;
}
@@ -556,13 +563,11 @@ updateMotionHistory(DeviceIntPtr pDev, CARD32 ms, int first_valuator,
*/
int
GetMaximumEventsNum(void) {
- /* One base event -- device, plus valuator events. */
- int ret = 1 + MAX_VALUATOR_EVENTS;
-
- /* One possible DeviceClassesChangedEvent */
- ret++;
-
- return ret;
+ /* One raw event
+ * One device event
+ * One possible device changed event
+ */
+ return 3;
}
@@ -596,10 +601,9 @@ 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++)
+ for (i = 0; i < num_valuators; i++)
clipAxis(pDev, i + first_valuator, &(valuators[i]));
}
@@ -745,56 +749,69 @@ accelPointer(DeviceIntPtr dev, int first, int num, int *valuators, CARD32 ms)
* @param dev The device to be moved.
* @param x Pointer to current x-axis value, may be modified.
* @param y Pointer to current y-axis value, may be modified.
+ * @param x_frac Fractional part of current x-axis value, may be modified.
+ * @param y_frac Fractional part of current y-axis value, may be modified.
* @param scr Screen the device's sprite is currently on.
* @param screenx Screen x coordinate the sprite is on after the update.
* @param screeny Screen y coordinate the sprite is on after the update.
+ * @param screenx_frac Fractional part of screen x coordinate, as above.
+ * @param screeny_frac Fractional part of screen y coordinate, as above.
*/
static void
-positionSprite(DeviceIntPtr dev, int *x, int *y,
- ScreenPtr scr, int *screenx, int *screeny)
+positionSprite(DeviceIntPtr dev, int *x, int *y, float x_frac, float y_frac,
+ ScreenPtr scr, int *screenx, int *screeny, float *screenx_frac, float *screeny_frac)
{
+ int old_screenx, old_screeny;
+
/* scale x&y to screen */
- if (dev->valuator->numAxes > 0)
- *screenx = rescaleValuatorAxis(*x, dev->valuator->axes + 0, NULL, scr->width);
- else
+ if (dev->valuator->numAxes > 0) {
+ *screenx = rescaleValuatorAxis(*x, x_frac, screenx_frac,
+ dev->valuator->axes + 0, NULL, scr->width);
+ } else {
*screenx = dev->last.valuators[0];
+ *screenx_frac = dev->last.remainder[0];
+ }
- if (dev->valuator->numAxes > 1 )
- *screeny = rescaleValuatorAxis(*y, dev->valuator->axes + 1, NULL, scr->height);
- else
+ if (dev->valuator->numAxes > 1) {
+ *screeny = rescaleValuatorAxis(*y, y_frac, screeny_frac,
+ dev->valuator->axes + 1, NULL, scr->height);
+ } else {
*screeny = dev->last.valuators[1];
+ *screeny_frac = dev->last.remainder[1];
+ }
- dev->last.valuators[0] = *screenx;
- dev->last.valuators[1] = *screeny;
-
+ old_screenx = *screenx;
+ old_screeny = *screeny;
/* This takes care of crossing screens for us, as well as clipping
* to the current screen. */
- miPointerSetPosition(dev, &dev->last.valuators[0], &dev->last.valuators[1]);
+ miPointerSetPosition(dev, screenx, screeny);
if (dev->u.master) {
- dev->u.master->last.valuators[0] = dev->last.valuators[0];
- dev->u.master->last.valuators[1] = dev->last.valuators[1];
+ dev->u.master->last.valuators[0] = *screenx;
+ dev->u.master->last.valuators[1] = *screeny;
+ dev->u.master->last.remainder[0] = *screenx_frac;
+ dev->u.master->last.remainder[1] = *screeny_frac;
}
/* Crossed screen? Scale back to device coordiantes */
- if(*screenx != dev->last.valuators[0])
+ if(*screenx != old_screenx)
{
scr = miPointerGetScreen(dev);
- *x = rescaleValuatorAxis(dev->last.valuators[0], NULL,
+ *x = rescaleValuatorAxis(*screenx, *screenx_frac, &x_frac, NULL,
dev->valuator->axes + 0, scr->width);
- *screenx = dev->last.valuators[0];
}
- if(*screeny != dev->last.valuators[1])
+ if(*screeny != old_screeny)
{
scr = miPointerGetScreen(dev);
- *screeny = dev->last.valuators[1];
- *y = rescaleValuatorAxis(dev->last.valuators[1], NULL,
+ *y = rescaleValuatorAxis(*screeny, *screeny_frac, &y_frac, NULL,
dev->valuator->axes + 1, scr->height);
}
/* dropy x/y (device coordinates) back into valuators for next event */
dev->last.valuators[0] = *x;
dev->last.valuators[1] = *y;
+ dev->last.remainder[0] = x_frac;
+ dev->last.remainder[1] = y_frac;
}
/**
@@ -1017,8 +1034,9 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
CARD32 ms;
DeviceEvent *event;
RawDeviceEvent *raw;
- int x = 0, y = 0, /* switches between device and screen coords */
+ int x = 0, y = 0, /* device coords */
cx, cy; /* only screen coordinates */
+ float x_frac = 0.0, y_frac = 0.0, cx_frac, cy_frac;
ScreenPtr scr = miPointerGetScreen(pDev);
/* refuse events from disabled devices */
@@ -1050,26 +1068,32 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
if (flags & POINTER_SCREEN) /* valuators are in screen coords */
{
- valuators[0] = rescaleValuatorAxis(valuators[0], NULL,
- pDev->valuator->axes + 0,
- scr->width);
- if (num_valuators > 1)
- valuators[1] = rescaleValuatorAxis(valuators[1], NULL,
+ if (num_valuators >= 1 && first_valuator == 0)
+ valuators[0] = rescaleValuatorAxis(valuators[0], 0.0, &x_frac, NULL,
+ pDev->valuator->axes + 0,
+ scr->width);
+ if (first_valuator <= 1 && num_valuators >= (2 - first_valuator))
+ valuators[1 - first_valuator] = rescaleValuatorAxis(valuators[1 - first_valuator], 0.0, &y_frac, NULL,
pDev->valuator->axes + 1,
scr->height);
}
moveAbsolute(pDev, &x, &y, first_valuator, num_valuators, valuators);
} else {
- if (flags & POINTER_ACCELERATE)
+ if (flags & POINTER_ACCELERATE) {
accelPointer(pDev, first_valuator, num_valuators, valuators, ms);
+ /* The pointer acceleration code modifies the fractional part
+ * in-place, so we need to extract this information first */
+ x_frac = pDev->last.remainder[0];
+ y_frac = pDev->last.remainder[1];
+ }
moveRelative(pDev, &x, &y, first_valuator, num_valuators, valuators);
}
set_raw_valuators(raw, first_valuator, num_valuators, valuators,
raw->valuators.data);
- positionSprite(pDev, &x, &y, scr, &cx, &cy);
+ positionSprite(pDev, &x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac);
updateHistory(pDev, first_valuator, num_valuators, ms);
/* Update the valuators with the true value sent to the client*/
@@ -1102,8 +1126,8 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
event->root_x = cx; /* root_x/y always in screen coords */
event->root_y = cy;
- event->root_x_frac = pDev->last.remainder[0];
- event->root_y_frac = pDev->last.remainder[1];
+ event->root_x_frac = cx_frac;
+ event->root_y_frac = cy_frac;
set_valuators(pDev, event, first_valuator, num_valuators, valuators);
diff --git a/dix/grabs.c b/dix/grabs.c
index 06d6d037c..4a351d647 100644
--- a/dix/grabs.c
+++ b/dix/grabs.c
@@ -451,7 +451,7 @@ DeletePassiveGrabFromList(GrabPtr pMinuendGrab)
any_modifier = (pMinuendGrab->grabtype == GRABTYPE_XI2) ?
(unsigned int)XIAnyModifier : (unsigned int)AnyModifier;
any_key = (pMinuendGrab->grabtype == GRABTYPE_XI2) ?
- (unsigned int)XIAnyKeysym : (unsigned int)AnyKey;
+ (unsigned int)XIAnyKeycode : (unsigned int)AnyKey;
ndels = nadds = nups = 0;
ok = TRUE;
for (grab = wPassiveGrabs(pMinuendGrab->window);
diff --git a/dix/inpututils.c b/dix/inpututils.c
index 79b6ab7c7..4848c1bc2 100644
--- a/dix/inpututils.c
+++ b/dix/inpututils.c
@@ -45,21 +45,21 @@ check_butmap_change(DeviceIntPtr dev, CARD8 *map, int len, CARD32 *errval_out,
int i, ret;
if (!dev || !dev->button)
+ {
+ client->errorValue = (dev) ? dev->id : 0;
return BadDevice;
+ }
ret = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess);
if (ret != Success)
+ {
+ client->errorValue = dev->id;
return ret;
+ }
for (i = 0; i < len; i++) {
if (dev->button->map[i + 1] != map[i] && dev->button->down[i + 1])
return MappingBusy;
-
- if (map[i] < 1 || map[i] > 255) {
- if (errval_out)
- *errval_out = map[i];
- return -1;
- }
}
return Success;
@@ -107,7 +107,7 @@ do_butmap_change(DeviceIntPtr dev, CARD8 *map, int len, ClientPtr client)
* to the requested device, faithfully ignores any errors encountered while
* trying to apply the map to its master/slaves.
*/
-_X_EXPORT int
+int
ApplyPointerMapping(DeviceIntPtr dev, CARD8 *map, int len, ClientPtr client)
{
int ret;
@@ -227,7 +227,7 @@ do_modmap_change(ClientPtr client, DeviceIntPtr dev, CARD8 *modmap)
static int build_modmap_from_modkeymap(CARD8 *modmap, KeyCode *modkeymap,
int max_keys_per_mod)
{
- int i, mod = 0, len = max_keys_per_mod * 8;
+ int i, len = max_keys_per_mod * 8;
memset(modmap, 0, MAP_LENGTH);
@@ -241,9 +241,7 @@ static int build_modmap_from_modkeymap(CARD8 *modmap, KeyCode *modkeymap,
if (modmap[modkeymap[i]])
return BadValue;
- if (!(i % max_keys_per_mod))
- mod++;
- modmap[modkeymap[i]] = mod;
+ modmap[modkeymap[i]] = 1 << (i / max_keys_per_mod);
}
return Success;
diff --git a/dix/main.c b/dix/main.c
index 25b085e88..f96245a4b 100644
--- a/dix/main.c
+++ b/dix/main.c
@@ -82,6 +82,7 @@ Equipment Corporation.
#include <X11/X.h>
#include <X11/Xos.h> /* for unistd.h */
#include <X11/Xproto.h>
+#include <pixman.h>
#include "scrnintstr.h"
#include "misc.h"
#include "os.h"
@@ -111,8 +112,7 @@ Equipment Corporation.
#endif
#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
#include "dpmsproc.h"
#endif
@@ -139,6 +139,8 @@ int main(int argc, char *argv[], char *envp[])
InitRegions();
+ pixman_disable_out_of_bounds_workaround();
+
CheckUserParameters(argc, argv, envp);
CheckUserAuthorization();
diff --git a/dix/property.c b/dix/property.c
index 0929dca17..9ec5dc6ae 100644
--- a/dix/property.c
+++ b/dix/property.c
@@ -218,7 +218,7 @@ ProcChangeProperty(ClientPtr client)
return BadValue;
}
len = stuff->nUnits;
- if (len > ((0xffffffff - sizeof(xChangePropertyReq)) >> 2))
+ if (len > bytes_to_int32(0xffffffff - sizeof(xChangePropertyReq)))
return BadLength;
sizeInBytes = format>>3;
totalSize = len * sizeInBytes;
@@ -253,8 +253,9 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
pointer value, Bool sendevent)
{
PropertyPtr pProp;
+ PropertyRec savedProp;
int sizeInBytes, totalSize, rc;
- pointer data;
+ unsigned char *data;
Mask access_mode;
sizeInBytes = format>>3;
@@ -277,12 +278,11 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
xfree(pProp);
return(BadAlloc);
}
+ memcpy(data, value, totalSize);
pProp->propertyName = property;
pProp->type = type;
pProp->format = format;
pProp->data = data;
- if (len)
- memmove((char *)data, (char *)value, totalSize);
pProp->size = len;
pProp->devPrivates = NULL;
rc = XaceHookPropertyAccess(pClient, pWin, &pProp,
@@ -307,17 +307,17 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
return(BadMatch);
if ((pProp->type != type) && (mode != PropModeReplace))
return(BadMatch);
+
+ /* save the old values for later */
+ savedProp = *pProp;
+
if (mode == PropModeReplace)
{
- if (totalSize != pProp->size * (pProp->format >> 3))
- {
- data = (pointer)xrealloc(pProp->data, totalSize);
- if (!data && len)
- return(BadAlloc);
- pProp->data = data;
- }
- if (len)
- memmove((char *)pProp->data, (char *)value, totalSize);
+ data = xalloc(totalSize);
+ if (!data && len)
+ return(BadAlloc);
+ memcpy(data, value, totalSize);
+ pProp->data = data;
pProp->size = len;
pProp->type = type;
pProp->format = format;
@@ -328,14 +328,12 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
}
else if (mode == PropModeAppend)
{
- data = (pointer)xrealloc(pProp->data,
- sizeInBytes * (len + pProp->size));
+ data = xalloc((pProp->size + len) * sizeInBytes);
if (!data)
return(BadAlloc);
+ memcpy(data, pProp->data, pProp->size * sizeInBytes);
+ memcpy(data + pProp->size * sizeInBytes, value, totalSize);
pProp->data = data;
- memmove(&((char *)data)[pProp->size * sizeInBytes],
- (char *)value,
- totalSize);
pProp->size += len;
}
else if (mode == PropModePrepend)
@@ -343,13 +341,27 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
data = xalloc(sizeInBytes * (len + pProp->size));
if (!data)
return(BadAlloc);
- memmove(&((char *)data)[totalSize], (char *)pProp->data,
- (int)(pProp->size * sizeInBytes));
- memmove((char *)data, (char *)value, totalSize);
- xfree(pProp->data);
+ memcpy(data + totalSize, pProp->data, pProp->size * sizeInBytes);
+ memcpy(data, value, totalSize);
pProp->data = data;
pProp->size += len;
}
+
+ /* Allow security modules to check the new content */
+ access_mode |= DixPostAccess;
+ rc = XaceHookPropertyAccess(pClient, pWin, &pProp, access_mode);
+ if (rc == Success)
+ {
+ if (savedProp.data != pProp->data)
+ xfree(savedProp.data);
+ }
+ else
+ {
+ if (savedProp.data != pProp->data)
+ xfree(pProp->data);
+ *pProp = savedProp;
+ return rc;
+ }
}
else
return rc;
@@ -462,7 +474,7 @@ ProcGetProperty(ClientPtr client)
}
rc = dixLookupWindow(&pWin, stuff->window, client, win_mode);
if (rc != Success)
- return rc;
+ return (rc == BadMatch) ? BadWindow : rc;
if (!ValidAtom(stuff->property))
{
@@ -525,7 +537,7 @@ ProcGetProperty(ClientPtr client)
reply.bytesAfter = n - (ind + len);
reply.format = pProp->format;
- reply.length = (len + 3) >> 2;
+ reply.length = bytes_to_int32(len);
reply.nItems = len / (pProp->format / 8 );
reply.propertyType = pProp->type;
@@ -599,7 +611,7 @@ ProcListProperties(ClientPtr client)
xlpr.type = X_Reply;
xlpr.nProperties = numProps;
- xlpr.length = (numProps * sizeof(Atom)) >> 2;
+ xlpr.length = bytes_to_int32(numProps * sizeof(Atom));
xlpr.sequenceNumber = client->sequence;
WriteReplyToClient(client, sizeof(xGenericReply), &xlpr);
if (numProps)
diff --git a/dix/protocol.txt b/dix/protocol.txt
index 364f13e31..8e152edaa 100644
--- a/dix/protocol.txt
+++ b/dix/protocol.txt
@@ -116,6 +116,14 @@ R004 DPMS:Enable
R005 DPMS:Disable
R006 DPMS:ForceLevel
R007 DPMS:Info
+R000 DRI2:QueryVersion
+R001 DRI2:Connect
+R002 DRI2:Authenticate
+R003 DRI2:CreateDrawable
+R004 DRI2:DestroyDrawable
+R005 DRI2:GetBuffers
+R006 DRI2:CopyRegion
+R007 DRI2:GetBuffersWithFormat
R000 Extended-Visual-Information:QueryVersion
R001 Extended-Visual-Information:GetVisualInfo
R000 FontCache:QueryVersion
@@ -590,6 +598,7 @@ V031 X11:SelectionNotify
V032 X11:ColormapNotify
V033 X11:ClientMessage
V034 X11:MappingNotify
+V035 X11:GenericEvent
E000 X11:Success
E001 X11:BadRequest
E002 X11:BadValue
@@ -948,6 +957,27 @@ R036 XInputExtension:ListDeviceProperties
R037 XInputExtension:ChangeDeviceProperty
R038 XInputExtension:DeleteDeviceProperty
R039 XInputExtension:GetDeviceProperty
+R040 XInputExtension:QueryPointer
+R041 XInputExtension:WarpPointer
+R042 XInputExtension:ChangeCursor
+R043 XInputExtension:ChangeHierarchy
+R044 XInputExtension:SetClientPointer
+R045 XInputExtension:GetClientPointer
+R046 XInputExtension:SelectEvents
+R047 XInputExtension:QueryVersion
+R048 XInputExtension:QueryDevice
+R049 XInputExtension:SetFocus
+R050 XInputExtension:GetFocus
+R051 XInputExtension:GrabDevice
+R052 XInputExtension:UngrabDevice
+R053 XInputExtension:AllowEvents
+R054 XInputExtension:PassiveGrabDevice
+R055 XInputExtension:PassiveUngrabDevice
+R056 XInputExtension:ListProperties
+R057 XInputExtension:ChangeProperty
+R058 XInputExtension:DeleteProperty
+R059 XInputExtension:GetProperty
+R060 XInputExtension:GetSelectedEvents
V000 XInputExtension:DeviceValuator
V001 XInputExtension:DeviceKeyPress
V002 XInputExtension:DeviceKeyRelease
diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c
index dd264770a..37c8e5178 100644
--- a/dix/ptrveloc.c
+++ b/dix/ptrveloc.c
@@ -61,12 +61,12 @@
/* fwds */
int
-SetAccelerationProfile(DeviceVelocityPtr s, int profile_num);
+SetAccelerationProfile(DeviceVelocityPtr vel, int profile_num);
static float
-SimpleSmoothProfile(DeviceVelocityPtr pVel, float velocity,
+SimpleSmoothProfile(DeviceIntPtr dev, DeviceVelocityPtr vel, float velocity,
float threshold, float acc);
static PointerAccelerationProfileFunc
-GetAccelerationProfile(DeviceVelocityPtr s, int profile_num);
+GetAccelerationProfile(DeviceVelocityPtr vel, int profile_num);
/*#define PTRACCEL_DEBUGGING*/
@@ -87,31 +87,31 @@ GetAccelerationProfile(DeviceVelocityPtr s, int profile_num);
* Init struct so it should match the average case
*/
void
-InitVelocityData(DeviceVelocityPtr s)
+InitVelocityData(DeviceVelocityPtr vel)
{
- memset(s, 0, sizeof(DeviceVelocityRec));
-
- s->corr_mul = 10.0; /* dots per 10 milisecond should be usable */
- s->const_acceleration = 1.0; /* no acceleration/deceleration */
- s->reset_time = 300;
- s->use_softening = 1;
- s->min_acceleration = 1.0; /* don't decelerate */
- s->max_rel_diff = 0.2;
- s->max_diff = 1.0;
- s->initial_range = 2;
- s->average_accel = TRUE;
- SetAccelerationProfile(s, AccelProfileClassic);
- InitTrackers(s, 16);
+ memset(vel, 0, sizeof(DeviceVelocityRec));
+
+ vel->corr_mul = 10.0; /* dots per 10 milisecond should be usable */
+ vel->const_acceleration = 1.0; /* no acceleration/deceleration */
+ vel->reset_time = 300;
+ vel->use_softening = 1;
+ vel->min_acceleration = 1.0; /* don't decelerate */
+ vel->max_rel_diff = 0.2;
+ vel->max_diff = 1.0;
+ vel->initial_range = 2;
+ vel->average_accel = TRUE;
+ SetAccelerationProfile(vel, AccelProfileClassic);
+ InitTrackers(vel, 16);
}
/**
* Clean up
*/
-static void
-FreeVelocityData(DeviceVelocityPtr s){
- xfree(s->tracker);
- SetAccelerationProfile(s, PROFILE_UNINITIALIZE);
+void
+FreeVelocityData(DeviceVelocityPtr vel){
+ xfree(vel->tracker);
+ SetAccelerationProfile(vel, PROFILE_UNINITIALIZE);
}
@@ -119,15 +119,15 @@ FreeVelocityData(DeviceVelocityPtr s){
* dix uninit helper, called through scheme
*/
void
-AccelerationDefaultCleanup(DeviceIntPtr pDev)
+AccelerationDefaultCleanup(DeviceIntPtr dev)
{
/*sanity check*/
- if( pDev->valuator->accelScheme.AccelSchemeProc == acceleratePointerPredictable
- && pDev->valuator->accelScheme.accelData != NULL){
- pDev->valuator->accelScheme.AccelSchemeProc = NULL;
- FreeVelocityData(pDev->valuator->accelScheme.accelData);
- xfree(pDev->valuator->accelScheme.accelData);
- pDev->valuator->accelScheme.accelData = NULL;
+ if( dev->valuator->accelScheme.AccelSchemeProc == acceleratePointerPredictable
+ && dev->valuator->accelScheme.accelData != NULL){
+ dev->valuator->accelScheme.AccelSchemeProc = NULL;
+ FreeVelocityData(dev->valuator->accelScheme.accelData);
+ xfree(dev->valuator->accelScheme.accelData);
+ dev->valuator->accelScheme.accelData = NULL;
}
}
@@ -143,7 +143,7 @@ static int
AccelSetProfileProperty(DeviceIntPtr dev, Atom atom,
XIPropertyValuePtr val, BOOL checkOnly)
{
- DeviceVelocityPtr pVel;
+ DeviceVelocityPtr vel;
int profile, *ptr = &profile;
int rc;
int nelem = 1;
@@ -151,8 +151,8 @@ AccelSetProfileProperty(DeviceIntPtr dev, Atom atom,
if (atom != XIGetKnownProperty(ACCEL_PROP_PROFILE_NUMBER))
return Success;
- pVel = GetDevicePredictableAccelData(dev);
- if (!pVel)
+ vel = GetDevicePredictableAccelData(dev);
+ if (!vel)
return BadValue;
rc = XIPropToInt(val, &nelem, &ptr);
@@ -161,18 +161,18 @@ AccelSetProfileProperty(DeviceIntPtr dev, Atom atom,
if (rc)
return rc;
- if (GetAccelerationProfile(pVel, profile) == NULL)
+ if (GetAccelerationProfile(vel, profile) == NULL)
return BadValue;
} else
- SetAccelerationProfile(pVel, profile);
+ SetAccelerationProfile(vel, profile);
return Success;
}
static void
-AccelInitProfileProperty(DeviceIntPtr dev, DeviceVelocityPtr pVel)
+AccelInitProfileProperty(DeviceIntPtr dev, DeviceVelocityPtr vel)
{
- int profile = pVel->statistics.profile_number;
+ int profile = vel->statistics.profile_number;
Atom prop_profile_number = XIGetKnownProperty(ACCEL_PROP_PROFILE_NUMBER);
XIChangeDeviceProperty(dev, prop_profile_number, XA_INTEGER, 32,
@@ -188,7 +188,7 @@ static int
AccelSetDecelProperty(DeviceIntPtr dev, Atom atom,
XIPropertyValuePtr val, BOOL checkOnly)
{
- DeviceVelocityPtr pVel;
+ DeviceVelocityPtr vel;
float v, *ptr = &v;
int rc;
int nelem = 1;
@@ -196,8 +196,8 @@ AccelSetDecelProperty(DeviceIntPtr dev, Atom atom,
if (atom != XIGetKnownProperty(ACCEL_PROP_CONSTANT_DECELERATION))
return Success;
- pVel = GetDevicePredictableAccelData(dev);
- if (!pVel)
+ vel = GetDevicePredictableAccelData(dev);
+ if (!vel)
return BadValue;
rc = XIPropToFloat(val, &nelem, &ptr);
@@ -209,15 +209,15 @@ AccelSetDecelProperty(DeviceIntPtr dev, Atom atom,
}
if(v >= 1.0f)
- pVel->const_acceleration = 1/v;
+ vel->const_acceleration = 1/v;
return Success;
}
static void
-AccelInitDecelProperty(DeviceIntPtr dev, DeviceVelocityPtr pVel)
+AccelInitDecelProperty(DeviceIntPtr dev, DeviceVelocityPtr vel)
{
- float fval = 1.0/pVel->const_acceleration;
+ float fval = 1.0/vel->const_acceleration;
Atom prop_const_decel = XIGetKnownProperty(ACCEL_PROP_CONSTANT_DECELERATION);
XIChangeDeviceProperty(dev, prop_const_decel,
XIGetKnownProperty(XATOM_FLOAT), 32,
@@ -234,7 +234,7 @@ static int
AccelSetAdaptDecelProperty(DeviceIntPtr dev, Atom atom,
XIPropertyValuePtr val, BOOL checkOnly)
{
- DeviceVelocityPtr pVel;
+ DeviceVelocityPtr veloc;
float v, *ptr = &v;
int rc;
int nelem = 1;
@@ -242,8 +242,8 @@ AccelSetAdaptDecelProperty(DeviceIntPtr dev, Atom atom,
if (atom != XIGetKnownProperty(ACCEL_PROP_ADAPTIVE_DECELERATION))
return Success;
- pVel = GetDevicePredictableAccelData(dev);
- if (!pVel)
+ veloc = GetDevicePredictableAccelData(dev);
+ if (!veloc)
return BadValue;
rc = XIPropToFloat(val, &nelem, &ptr);
@@ -255,15 +255,15 @@ AccelSetAdaptDecelProperty(DeviceIntPtr dev, Atom atom,
}
if(v >= 1.0f)
- pVel->min_acceleration = 1/v;
+ veloc->min_acceleration = 1/v;
return Success;
}
static void
-AccelInitAdaptDecelProperty(DeviceIntPtr dev, DeviceVelocityPtr pVel)
+AccelInitAdaptDecelProperty(DeviceIntPtr dev, DeviceVelocityPtr vel)
{
- float fval = 1.0/pVel->min_acceleration;
+ float fval = 1.0/vel->min_acceleration;
Atom prop_adapt_decel = XIGetKnownProperty(ACCEL_PROP_ADAPTIVE_DECELERATION);
XIChangeDeviceProperty(dev, prop_adapt_decel, XIGetKnownProperty(XATOM_FLOAT), 32,
@@ -280,7 +280,7 @@ static int
AccelSetScaleProperty(DeviceIntPtr dev, Atom atom,
XIPropertyValuePtr val, BOOL checkOnly)
{
- DeviceVelocityPtr pVel;
+ DeviceVelocityPtr vel;
float v, *ptr = &v;
int rc;
int nelem = 1;
@@ -288,8 +288,8 @@ AccelSetScaleProperty(DeviceIntPtr dev, Atom atom,
if (atom != XIGetKnownProperty(ACCEL_PROP_VELOCITY_SCALING))
return Success;
- pVel = GetDevicePredictableAccelData(dev);
- if (!pVel)
+ vel = GetDevicePredictableAccelData(dev);
+ if (!vel)
return BadValue;
rc = XIPropToFloat(val, &nelem, &ptr);
@@ -302,15 +302,15 @@ AccelSetScaleProperty(DeviceIntPtr dev, Atom atom,
}
if(v > 0)
- pVel->corr_mul = v;
+ vel->corr_mul = v;
return Success;
}
static void
-AccelInitScaleProperty(DeviceIntPtr dev, DeviceVelocityPtr pVel)
+AccelInitScaleProperty(DeviceIntPtr dev, DeviceVelocityPtr vel)
{
- float fval = pVel->corr_mul;
+ float fval = vel->corr_mul;
Atom prop_velo_scale = XIGetKnownProperty(ACCEL_PROP_VELOCITY_SCALING);
XIChangeDeviceProperty(dev, prop_velo_scale, XIGetKnownProperty(XATOM_FLOAT), 32,
@@ -320,17 +320,17 @@ AccelInitScaleProperty(DeviceIntPtr dev, DeviceVelocityPtr pVel)
}
BOOL
-InitializePredictableAccelerationProperties(DeviceIntPtr device)
+InitializePredictableAccelerationProperties(DeviceIntPtr dev)
{
- DeviceVelocityPtr pVel = GetDevicePredictableAccelData(device);
+ DeviceVelocityPtr vel = GetDevicePredictableAccelData(dev);
- if(!pVel)
+ if(!vel)
return FALSE;
- AccelInitProfileProperty(device, pVel);
- AccelInitDecelProperty(device, pVel);
- AccelInitAdaptDecelProperty(device, pVel);
- AccelInitScaleProperty(device, pVel);
+ AccelInitProfileProperty(dev, vel);
+ AccelInitDecelProperty(dev, vel);
+ AccelInitAdaptDecelProperty(dev, vel);
+ AccelInitScaleProperty(dev, vel);
return TRUE;
}
@@ -339,16 +339,16 @@ InitializePredictableAccelerationProperties(DeviceIntPtr device)
********************/
void
-InitTrackers(DeviceVelocityPtr s, int ntracker)
+InitTrackers(DeviceVelocityPtr vel, int ntracker)
{
if(ntracker < 1){
ErrorF("(dix ptracc) invalid number of trackers\n");
return;
}
- xfree(s->tracker);
- s->tracker = (MotionTrackerPtr)xalloc(ntracker * sizeof(MotionTracker));
- memset(s->tracker, 0, ntracker * sizeof(MotionTracker));
- s->num_tracker = ntracker;
+ xfree(vel->tracker);
+ vel->tracker = (MotionTrackerPtr)xalloc(ntracker * sizeof(MotionTracker));
+ memset(vel->tracker, 0, ntracker * sizeof(MotionTracker));
+ vel->num_tracker = ntracker;
}
/**
@@ -437,22 +437,22 @@ GetDirection(int dx, int dy){
#define TRACKER_INDEX(s, d) (((s)->num_tracker + (s)->cur_tracker - (d)) % (s)->num_tracker)
static inline void
-FeedTrackers(DeviceVelocityPtr s, int dx, int dy, int cur_t)
+FeedTrackers(DeviceVelocityPtr vel, int dx, int dy, int cur_t)
{
int n;
- for(n = 0; n < s->num_tracker; n++){
- s->tracker[n].dx += dx;
- s->tracker[n].dy += dy;
+ for(n = 0; n < vel->num_tracker; n++){
+ vel->tracker[n].dx += dx;
+ vel->tracker[n].dy += dy;
}
- n = (s->cur_tracker + 1) % s->num_tracker;
- s->tracker[n].dx = 0;
- s->tracker[n].dy = 0;
- s->tracker[n].time = cur_t;
- s->tracker[n].dir = GetDirection(dx, dy);
+ n = (vel->cur_tracker + 1) % vel->num_tracker;
+ vel->tracker[n].dx = 0;
+ vel->tracker[n].dy = 0;
+ vel->tracker[n].time = cur_t;
+ vel->tracker[n].dir = GetDirection(dx, dy);
DebugAccelF("(dix prtacc) motion [dx: %i dy: %i dir:%i diff: %i]\n",
- dx, dy, s->tracker[n].dir,
- cur_t - s->tracker[s->cur_tracker].time);
- s->cur_tracker = n;
+ dx, dy, vel->tracker[n].dir,
+ cur_t - vel->tracker[vel->cur_tracker].time);
+ vel->cur_tracker = n;
}
/**
@@ -461,11 +461,11 @@ FeedTrackers(DeviceVelocityPtr s, int dx, int dy, int cur_t)
* This assumes linear motion.
*/
static float
-CalcTracker(DeviceVelocityPtr s, int offset, int cur_t){
- int index = TRACKER_INDEX(s, offset);
- float dist = sqrt( s->tracker[index].dx * s->tracker[index].dx
- + s->tracker[index].dy * s->tracker[index].dy);
- int dtime = cur_t - s->tracker[index].time;
+CalcTracker(DeviceVelocityPtr vel, int offset, int cur_t){
+ int index = TRACKER_INDEX(vel, offset);
+ float dist = sqrt( vel->tracker[index].dx * vel->tracker[index].dx
+ + vel->tracker[index].dy * vel->tracker[index].dy);
+ int dtime = cur_t - vel->tracker[index].time;
if(dtime > 0)
return (dist / dtime);
else
@@ -479,19 +479,19 @@ CalcTracker(DeviceVelocityPtr s, int offset, int cur_t){
* May return 0.
*/
static float
-QueryTrackers(DeviceVelocityPtr s, int cur_t){
+QueryTrackers(DeviceVelocityPtr vel, int cur_t){
int n, offset, dir = 255, i = -1, age_ms;
/* initial velocity: a low-offset, valid velocity */
float iveloc = 0, res = 0, tmp, vdiff;
- float vfac = s->corr_mul * s->const_acceleration; /* premultiply */
+ float vfac = vel->corr_mul * vel->const_acceleration; /* premultiply */
/* loop from current to older data */
- for(offset = 1; offset < s->num_tracker; offset++){
- n = TRACKER_INDEX(s, offset);
+ for(offset = 1; offset < vel->num_tracker; offset++){
+ n = TRACKER_INDEX(vel, offset);
- age_ms = cur_t - s->tracker[n].time;
+ age_ms = cur_t - vel->tracker[n].time;
/* bail out if data is too old and protect from overrun */
- if (age_ms >= s->reset_time || age_ms < 0) {
+ if (age_ms >= vel->reset_time || age_ms < 0) {
DebugAccelF("(dix prtacc) query: tracker too old\n");
break;
}
@@ -502,7 +502,7 @@ QueryTrackers(DeviceVelocityPtr s, int cur_t){
* even more precision we could subdivide as a final step, so possible
* non-linearities are accounted for.
*/
- dir &= s->tracker[n].dir;
+ dir &= vel->tracker[n].dir;
if(dir == 0){
DebugAccelF("(dix prtacc) query: no longer linear\n");
/* instead of breaking it we might also inspect the partition after,
@@ -510,16 +510,16 @@ QueryTrackers(DeviceVelocityPtr s, int cur_t){
break;
}
- tmp = CalcTracker(s, offset, cur_t) * vfac;
+ tmp = CalcTracker(vel, offset, cur_t) * vfac;
- if ((iveloc == 0 || offset <= s->initial_range) && tmp != 0) {
+ if ((iveloc == 0 || offset <= vel->initial_range) && tmp != 0) {
/* set initial velocity and result */
res = iveloc = tmp;
i = offset;
} else if (iveloc != 0 && tmp != 0) {
vdiff = fabs(iveloc - tmp);
- if (vdiff <= s->max_diff ||
- vdiff/(iveloc + tmp) < s->max_rel_diff) {
+ if (vdiff <= vel->max_diff ||
+ vdiff/(iveloc + tmp) < vel->max_rel_diff) {
/* we're in range with the initial velocity,
* so this result is likely better
* (it contains more information). */
@@ -534,17 +534,17 @@ QueryTrackers(DeviceVelocityPtr s, int cur_t){
}
}
}
- if(offset == s->num_tracker){
+ if(offset == vel->num_tracker){
DebugAccelF("(dix prtacc) query: last tracker in effect\n");
- i = s->num_tracker-1;
+ i = vel->num_tracker-1;
}
if(i>=0){
- n = TRACKER_INDEX(s, i);
+ n = TRACKER_INDEX(vel, i);
DebugAccelF("(dix prtacc) result: offset %i [dx: %i dy: %i diff: %i]\n",
i,
- s->tracker[n].dx,
- s->tracker[n].dy,
- cur_t - s->tracker[n].time);
+ vel->tracker[n].dx,
+ vel->tracker[n].dy,
+ cur_t - vel->tracker[n].time);
}
return res;
}
@@ -555,22 +555,22 @@ QueryTrackers(DeviceVelocityPtr s, int cur_t){
* Perform velocity approximation based on 2D 'mickeys' (mouse motion delta).
* return true if non-visible state reset is suggested
*/
-static short
+short
ProcessVelocityData2D(
- DeviceVelocityPtr s,
+ DeviceVelocityPtr vel,
int dx,
int dy,
int time)
{
float velocity;
- s->last_velocity = s->velocity;
+ vel->last_velocity = vel->velocity;
- FeedTrackers(s, dx, dy, time);
+ FeedTrackers(vel, dx, dy, time);
- velocity = QueryTrackers(s, time);
+ velocity = QueryTrackers(vel, time);
- s->velocity = velocity;
+ vel->velocity = velocity;
return velocity == 0;
}
@@ -594,41 +594,42 @@ ApplySimpleSoftening(int od, int d)
static void
ApplySofteningAndConstantDeceleration(
- DeviceVelocityPtr s,
+ DeviceVelocityPtr vel,
int dx,
int dy,
float* fdx,
float* fdy,
short do_soften)
{
- if (do_soften && s->use_softening) {
- *fdx = ApplySimpleSoftening(s->last_dx, dx);
- *fdy = ApplySimpleSoftening(s->last_dy, dy);
+ if (do_soften && vel->use_softening) {
+ *fdx = ApplySimpleSoftening(vel->last_dx, dx);
+ *fdy = ApplySimpleSoftening(vel->last_dy, dy);
} else {
*fdx = dx;
*fdy = dy;
}
- *fdx *= s->const_acceleration;
- *fdy *= s->const_acceleration;
+ *fdx *= vel->const_acceleration;
+ *fdy *= vel->const_acceleration;
}
/*
* compute the acceleration for given velocity and enforce min_acceleartion
*/
-static float
+float
BasicComputeAcceleration(
- DeviceVelocityPtr pVel,
+ DeviceIntPtr dev,
+ DeviceVelocityPtr vel,
float velocity,
float threshold,
float acc){
float result;
- result = pVel->Profile(pVel, velocity, threshold, acc);
+ result = vel->Profile(dev, vel, velocity, threshold, acc);
/* enforce min_acceleration */
- if (result < pVel->min_acceleration)
- result = pVel->min_acceleration;
+ if (result < vel->min_acceleration)
+ result = vel->min_acceleration;
return result;
}
@@ -637,6 +638,7 @@ BasicComputeAcceleration(
*/
static float
ComputeAcceleration(
+ DeviceIntPtr dev,
DeviceVelocityPtr vel,
float threshold,
float acc){
@@ -655,9 +657,11 @@ ComputeAcceleration(
* current and previous velocity.
* Though being the more natural choice, it causes a minor delay
* in comparison, so it can be disabled. */
- res = BasicComputeAcceleration(vel, vel->velocity, threshold, acc);
- res += BasicComputeAcceleration(vel, vel->last_velocity, threshold, acc);
- res += 4.0f * BasicComputeAcceleration(vel,
+ res = BasicComputeAcceleration(
+ dev, vel, vel->velocity, threshold, acc);
+ res += BasicComputeAcceleration(
+ dev, vel, vel->last_velocity, threshold, acc);
+ res += 4.0f * BasicComputeAcceleration(dev, vel,
(vel->last_velocity + vel->velocity) / 2,
threshold, acc);
res /= 6.0f;
@@ -665,7 +669,8 @@ ComputeAcceleration(
vel->velocity, vel->last_velocity, res);
return res;
}else{
- res = BasicComputeAcceleration(vel, vel->velocity, threshold, acc);
+ res = BasicComputeAcceleration(dev, vel,
+ vel->velocity, threshold, acc);
DebugAccelF("(dix ptracc) profile sample [%.2f] is %.3f\n",
vel->velocity, res);
return res;
@@ -682,7 +687,8 @@ ComputeAcceleration(
*/
static float
PolynomialAccelerationProfile(
- DeviceVelocityPtr pVel,
+ DeviceIntPtr dev,
+ DeviceVelocityPtr vel,
float velocity,
float ignored,
float acc)
@@ -697,18 +703,21 @@ PolynomialAccelerationProfile(
*/
static float
ClassicProfile(
- DeviceVelocityPtr pVel,
+ DeviceIntPtr dev,
+ DeviceVelocityPtr vel,
float velocity,
float threshold,
float acc)
{
- if (threshold) {
- return SimpleSmoothProfile (pVel,
+ if (threshold > 0) {
+ return SimpleSmoothProfile (dev,
+ vel,
velocity,
threshold,
acc);
} else {
- return PolynomialAccelerationProfile (pVel,
+ return PolynomialAccelerationProfile (dev,
+ vel,
velocity,
0,
acc);
@@ -726,7 +735,8 @@ ClassicProfile(
*/
static float
PowerProfile(
- DeviceVelocityPtr pVel,
+ DeviceIntPtr dev,
+ DeviceVelocityPtr vel,
float velocity,
float threshold,
float acc)
@@ -736,9 +746,9 @@ PowerProfile(
acc = (acc-1.0) * 0.1f + 1.0; /* without this, acc of 2 is unuseable */
if (velocity <= threshold)
- return pVel->min_acceleration;
+ return vel->min_acceleration;
vel_dist = velocity - threshold;
- return (pow(acc, vel_dist)) * pVel->min_acceleration;
+ return (pow(acc, vel_dist)) * vel->min_acceleration;
}
@@ -763,7 +773,8 @@ CalcPenumbralGradient(float x){
*/
static float
SimpleSmoothProfile(
- DeviceVelocityPtr pVel,
+ DeviceIntPtr dev,
+ DeviceVelocityPtr vel,
float velocity,
float threshold,
float acc)
@@ -788,7 +799,8 @@ SimpleSmoothProfile(
*/
static float
SmoothLinearProfile(
- DeviceVelocityPtr pVel,
+ DeviceIntPtr dev,
+ DeviceVelocityPtr vel,
float velocity,
float threshold,
float acc)
@@ -811,14 +823,15 @@ SmoothLinearProfile(
res = nv * 2.0f / M_PI /* steepness of gradient at 0.5 */
+ 1.0f; /* gradient crosses 2|1 */
}
- res += pVel->min_acceleration;
+ res += vel->min_acceleration;
return res;
}
static float
LinearProfile(
- DeviceVelocityPtr pVel,
+ DeviceIntPtr dev,
+ DeviceVelocityPtr vel,
float velocity,
float threshold,
float acc)
@@ -829,7 +842,8 @@ LinearProfile(
static float
NoProfile(
- DeviceVelocityPtr pVel,
+ DeviceIntPtr dev,
+ DeviceVelocityPtr vel,
float velocity,
float threshold,
float acc)
@@ -839,14 +853,14 @@ NoProfile(
static PointerAccelerationProfileFunc
GetAccelerationProfile(
- DeviceVelocityPtr s,
+ DeviceVelocityPtr vel,
int profile_num)
{
switch(profile_num){
case AccelProfileClassic:
return ClassicProfile;
case AccelProfileDeviceSpecific:
- return s->deviceSpecificProfile;
+ return vel->deviceSpecificProfile;
case AccelProfilePolynomial:
return PolynomialAccelerationProfile;
case AccelProfileSmoothLinear:
@@ -876,23 +890,23 @@ GetAccelerationProfile(
*/
int
SetAccelerationProfile(
- DeviceVelocityPtr s,
+ DeviceVelocityPtr vel,
int profile_num)
{
PointerAccelerationProfileFunc profile;
- profile = GetAccelerationProfile(s, profile_num);
+ profile = GetAccelerationProfile(vel, profile_num);
if(profile == NULL && profile_num != PROFILE_UNINITIALIZE)
return FALSE;
- if(s->profile_private != NULL){
+ if(vel->profile_private != NULL){
/* Here one could free old profile-private data */
- xfree(s->profile_private);
- s->profile_private = NULL;
+ xfree(vel->profile_private);
+ vel->profile_private = NULL;
}
/* Here one could init profile-private data */
- s->Profile = profile;
- s->statistics.profile_number = profile_num;
+ vel->Profile = profile;
+ vel->statistics.profile_number = profile_num;
return TRUE;
}
@@ -912,11 +926,11 @@ SetAccelerationProfile(
*/
void
SetDeviceSpecificAccelerationProfile(
- DeviceVelocityPtr s,
+ DeviceVelocityPtr vel,
PointerAccelerationProfileFunc profile)
{
- if(s)
- s->deviceSpecificProfile = profile;
+ if(vel)
+ vel->deviceSpecificProfile = profile;
}
/**
@@ -925,19 +939,19 @@ SetDeviceSpecificAccelerationProfile(
*/
DeviceVelocityPtr
GetDevicePredictableAccelData(
- DeviceIntPtr pDev)
+ DeviceIntPtr dev)
{
/*sanity check*/
- if(!pDev){
+ if(!dev){
ErrorF("[dix] accel: DeviceIntPtr was NULL");
return NULL;
}
- if( pDev->valuator &&
- pDev->valuator->accelScheme.AccelSchemeProc ==
+ if( dev->valuator &&
+ dev->valuator->accelScheme.AccelSchemeProc ==
acceleratePointerPredictable &&
- pDev->valuator->accelScheme.accelData != NULL){
+ dev->valuator->accelScheme.accelData != NULL){
- return (DeviceVelocityPtr)pDev->valuator->accelScheme.accelData;
+ return (DeviceVelocityPtr)dev->valuator->accelScheme.accelData;
}
return NULL;
}
@@ -953,7 +967,7 @@ GetDevicePredictableAccelData(
*/
void
acceleratePointerPredictable(
- DeviceIntPtr pDev,
+ DeviceIntPtr dev,
int first_valuator,
int num_valuators,
int *valuators,
@@ -963,7 +977,7 @@ acceleratePointerPredictable(
int dx = 0, dy = 0;
int *px = NULL, *py = NULL;
DeviceVelocityPtr velocitydata =
- (DeviceVelocityPtr) pDev->valuator->accelScheme.accelData;
+ (DeviceVelocityPtr) dev->valuator->accelScheme.accelData;
float fdx, fdy, tmp; /* no need to init */
Bool soften = TRUE;
@@ -990,12 +1004,12 @@ acceleratePointerPredictable(
soften = FALSE;
}
- if (pDev->ptrfeed && pDev->ptrfeed->ctrl.num) {
+ if (dev->ptrfeed && dev->ptrfeed->ctrl.num) {
/* invoke acceleration profile to determine acceleration */
- mult = ComputeAcceleration (velocitydata,
- pDev->ptrfeed->ctrl.threshold,
- (float)pDev->ptrfeed->ctrl.num /
- (float)pDev->ptrfeed->ctrl.den);
+ mult = ComputeAcceleration (dev, velocitydata,
+ dev->ptrfeed->ctrl.threshold,
+ (float)dev->ptrfeed->ctrl.num /
+ (float)dev->ptrfeed->ctrl.den);
if(mult != 1.0 || velocitydata->const_acceleration != 1.0) {
ApplySofteningAndConstantDeceleration( velocitydata,
@@ -1004,21 +1018,22 @@ acceleratePointerPredictable(
(mult > 1.0) && soften);
if (dx) {
- tmp = mult * fdx + pDev->last.remainder[0];
+ tmp = mult * fdx + dev->last.remainder[0];
/* Since it may not be apparent: lrintf() does not offer
* strong statements about rounding; however because we
* process each axis conditionally, there's no danger
* of a toggling remainder. Its lack of guarantees likely
* makes it faster on the average target. */
*px = lrintf(tmp);
- pDev->last.remainder[0] = tmp - (float)*px;
+ dev->last.remainder[0] = tmp - (float)*px;
}
if (dy) {
- tmp = mult * fdy + pDev->last.remainder[1];
+ tmp = mult * fdy + dev->last.remainder[1];
*py = lrintf(tmp);
- pDev->last.remainder[1] = tmp - (float)*py;
+ dev->last.remainder[1] = tmp - (float)*py;
}
- DebugAccelF("pos (%i | %i) remainders x: %.3f y: %.3f delta x:%.3f y:%.3f\n", *px, *py, pDev->last.remainder[0], pDev->last.remainder[1], fdx, fdy);
+ DebugAccelF("pos (%i | %i) remainders x: %.3f y: %.3f delta x:%.3f y:%.3f\n",
+ *px, *py, dev->last.remainder[0], dev->last.remainder[1], fdx, fdy);
}
}
}
@@ -1035,7 +1050,7 @@ acceleratePointerPredictable(
*/
void
acceleratePointerLightweight(
- DeviceIntPtr pDev,
+ DeviceIntPtr dev,
int first_valuator,
int num_valuators,
int *valuators,
@@ -1060,48 +1075,48 @@ acceleratePointerLightweight(
if (!dx && !dy)
return;
- if (pDev->ptrfeed && pDev->ptrfeed->ctrl.num) {
+ if (dev->ptrfeed && dev->ptrfeed->ctrl.num) {
/* modeled from xf86Events.c */
- if (pDev->ptrfeed->ctrl.threshold) {
- if ((abs(dx) + abs(dy)) >= pDev->ptrfeed->ctrl.threshold) {
- pDev->last.remainder[0] = ((float)dx *
- (float)(pDev->ptrfeed->ctrl.num)) /
- (float)(pDev->ptrfeed->ctrl.den) +
- pDev->last.remainder[0];
+ if (dev->ptrfeed->ctrl.threshold) {
+ if ((abs(dx) + abs(dy)) >= dev->ptrfeed->ctrl.threshold) {
+ dev->last.remainder[0] = ((float)dx *
+ (float)(dev->ptrfeed->ctrl.num)) /
+ (float)(dev->ptrfeed->ctrl.den) +
+ dev->last.remainder[0];
if (px) {
- *px = (int)pDev->last.remainder[0];
- pDev->last.remainder[0] = pDev->last.remainder[0] -
+ *px = (int)dev->last.remainder[0];
+ dev->last.remainder[0] = dev->last.remainder[0] -
(float)(*px);
}
- pDev->last.remainder[1] = ((float)dy *
- (float)(pDev->ptrfeed->ctrl.num)) /
- (float)(pDev->ptrfeed->ctrl.den) +
- pDev->last.remainder[1];
+ dev->last.remainder[1] = ((float)dy *
+ (float)(dev->ptrfeed->ctrl.num)) /
+ (float)(dev->ptrfeed->ctrl.den) +
+ dev->last.remainder[1];
if (py) {
- *py = (int)pDev->last.remainder[1];
- pDev->last.remainder[1] = pDev->last.remainder[1] -
+ *py = (int)dev->last.remainder[1];
+ dev->last.remainder[1] = dev->last.remainder[1] -
(float)(*py);
}
}
}
else {
mult = pow((float)dx * (float)dx + (float)dy * (float)dy,
- ((float)(pDev->ptrfeed->ctrl.num) /
- (float)(pDev->ptrfeed->ctrl.den) - 1.0) /
+ ((float)(dev->ptrfeed->ctrl.num) /
+ (float)(dev->ptrfeed->ctrl.den) - 1.0) /
2.0) / 2.0;
if (dx) {
- pDev->last.remainder[0] = mult * (float)dx +
- pDev->last.remainder[0];
- *px = (int)pDev->last.remainder[0];
- pDev->last.remainder[0] = pDev->last.remainder[0] -
+ dev->last.remainder[0] = mult * (float)dx +
+ dev->last.remainder[0];
+ *px = (int)dev->last.remainder[0];
+ dev->last.remainder[0] = dev->last.remainder[0] -
(float)(*px);
}
if (dy) {
- pDev->last.remainder[1] = mult * (float)dy +
- pDev->last.remainder[1];
- *py = (int)pDev->last.remainder[1];
- pDev->last.remainder[1] = pDev->last.remainder[1] -
+ dev->last.remainder[1] = mult * (float)dy +
+ dev->last.remainder[1];
+ *py = (int)dev->last.remainder[1];
+ dev->last.remainder[1] = dev->last.remainder[1] -
(float)(*py);
}
}
diff --git a/dix/registry.c b/dix/registry.c
index a519cff6b..ec853b37f 100644
--- a/dix/registry.c
+++ b/dix/registry.c
@@ -1,6 +1,6 @@
/************************************************************
-Author: Eamon Walsh <ewalsh@epoch.ncsc.mil>
+Author: Eamon Walsh <ewalsh@tycho.nsa.gov>
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
diff --git a/dix/resource.c b/dix/resource.c
index 73bc3a998..d3641df8d 100644
--- a/dix/resource.c
+++ b/dix/resource.c
@@ -707,7 +707,8 @@ LookupClientResourceComplex(
pointer cdata
){
ResourcePtr *resources;
- ResourcePtr this;
+ ResourcePtr this, next;
+ pointer value;
int i;
if (!client)
@@ -715,10 +716,13 @@ LookupClientResourceComplex(
resources = clientTable[client->index].resources;
for (i = 0; i < clientTable[client->index].buckets; i++) {
- for (this = resources[i]; this; this = this->next) {
+ for (this = resources[i]; this; this = next) {
+ next = this->next;
if (!type || this->type == type) {
- if((*func)(this->value, this->id, cdata))
- return this->value;
+ /* workaround func freeing the type as DRI1 does */
+ value = this->value;
+ if((*func)(value, this->id, cdata))
+ return value;
}
}
}
diff --git a/dix/swaprep.c b/dix/swaprep.c
index 86242168f..12c6dbd26 100644
--- a/dix/swaprep.c
+++ b/dix/swaprep.c
@@ -731,7 +731,7 @@ SLHostsExtend(ClientPtr pClient, int size, char *buf)
int len = host->length;
char n;
swaps (&host->length, n);
- bufT += sizeof (xHostEntry) + (((len + 3) >> 2) << 2);
+ bufT += sizeof (xHostEntry) + pad_to_int32(len);
}
(void)WriteToClient (pClient, size, buf);
}
@@ -1222,7 +1222,7 @@ SwapConnSetupInfo(
pInfoT += sizeof(xConnSetup);
/* Copy the vendor string */
- i = (pConnSetup->nbytesVendor + 3) & ~3;
+ i = pad_to_int32(pConnSetup->nbytesVendor);
memcpy(pInfoT, pInfo, i);
pInfo += i;
pInfoT += i;
diff --git a/dix/window.c b/dix/window.c
index 99b594b63..caff1cbff 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -1457,8 +1457,8 @@ GetWindowAttributes(WindowPtr pWin, ClientPtr client, xGetWindowAttributesReply
wa->backingStore = NotUseful;
else
wa->backingStore = pWin->backingStore;
- wa->length = (sizeof(xGetWindowAttributesReply) -
- sizeof(xGenericReply)) >> 2;
+ wa->length = bytes_to_int32(sizeof(xGetWindowAttributesReply) -
+ sizeof(xGenericReply));
wa->sequenceNumber = client->sequence;
wa->backingBitPlanes = wBackingBitPlanes (pWin);
wa->backingPixel = wBackingPixel (pWin);
@@ -3128,8 +3128,6 @@ dixSaveScreens(ClientPtr client, int on, int mode)
if (on == SCREEN_SAVER_FORCER)
{
- UpdateCurrentTimeIf();
- lastDeviceEventTime = currentTime;
if (mode == ScreenSaverReset)
what = SCREEN_SAVER_OFF;
else
@@ -3388,7 +3386,7 @@ CheckWindowOptionalNeed (WindowPtr w)
WindowOptPtr optional;
WindowOptPtr parentOptional;
- if (!w->parent)
+ if (!w->parent || !w->optional)
return;
optional = w->optional;
if (optional->dontPropagateMask != DontPropagateMasks[w->dontPropagate])
@@ -3543,7 +3541,7 @@ ChangeWindowDeviceCursor(WindowPtr pWin,
pWin->optional->deviceCursors = pNode->next;
xfree(pNode);
- return Success;
+ goto out;
}
} else
@@ -3588,6 +3586,7 @@ ChangeWindowDeviceCursor(WindowPtr pWin,
}
}
+out:
if (pWin->realized)
WindowHasNewCursor(pWin);
diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre
index 12b4cd486..615419134 100644
--- a/doc/Xserver.man.pre
+++ b/doc/Xserver.man.pre
@@ -581,13 +581,13 @@ Security: \fIXsecurity\fP(__miscmansuffix__), \fIxauth\fP(1), \fIXau\fP(1),
\fIxdm\fP(1), \fIxhost\fP(1), \fIxfwp\fP(1),
.I "Security Extension Specification"
.PP
-Starting the server: \fIxdm\fP(1), \fIxinit\fP(1)
+Starting the server: \fIstartx\fP(1), \fIxdm\fP(1), \fIxinit\fP(1)
.PP
Controlling the server once started: \fIxset\fP(1), \fIxsetroot\fP(1),
\fIxhost\fP(1)
.PP
Server-specific man pages:
-\fIXorg\fP(1), \fIXdmx\fP(1), \fIXnest\fP(1),
+\fIXorg\fP(1), \fIXdmx\fP(1), \fIXephyr\fP(1), \fIXnest\fP(1),
\fIXvfb\fP(1), \fIXDarwin\fP(1), \fIXWin\fP(1).
.PP
Server internal documentation:
diff --git a/exa/Makefile.am b/exa/Makefile.am
index 2b3f1e416..8b759cd76 100644
--- a/exa/Makefile.am
+++ b/exa/Makefile.am
@@ -17,11 +17,14 @@ AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
libexa_la_SOURCES = \
exa.c \
exa.h \
+ exa_classic.c \
+ exa_migration_classic.c \
+ exa_driver.c \
+ exa_mixed.c \
+ exa_migration_mixed.c \
exa_accel.c \
exa_glyphs.c \
- exa_migration.c \
exa_offscreen.c \
exa_render.c \
exa_priv.h \
exa_unaccel.c
-
diff --git a/exa/exa.c b/exa/exa.c
index d04ea71e0..483e3b4eb 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -48,17 +48,6 @@ DevPrivateKey exaGCPrivateKey = &exaGCPrivateKeyIndex;
static ShmFuncs exaShmFuncs = { NULL, NULL };
#endif
-static _X_INLINE void*
-ExaGetPixmapAddress(PixmapPtr p)
-{
- ExaPixmapPriv(p);
-
- if (pExaPixmap->offscreen && pExaPixmap->fb_ptr)
- return pExaPixmap->fb_ptr;
- else
- return pExaPixmap->sys_ptr;
-}
-
/**
* exaGetPixmapOffset() returns the offset (in bytes) within the framebuffer of
* the beginning of the given pixmap.
@@ -178,45 +167,6 @@ exaPixmapDirty (PixmapPtr pPix, int x1, int y1, int x2, int y2)
REGION_UNINIT(pScreen, &region);
}
-static Bool
-exaDestroyPixmap (PixmapPtr pPixmap)
-{
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- ExaScreenPriv(pScreen);
- Bool ret;
-
- if (pPixmap->refcnt == 1)
- {
- ExaPixmapPriv (pPixmap);
-
- if (pExaPixmap->driverPriv) {
- pExaScr->info->DestroyPixmap(pScreen, pExaPixmap->driverPriv);
- pExaPixmap->driverPriv = NULL;
- }
-
- if (pExaPixmap->area)
- {
- DBG_PIXMAP(("-- 0x%p (0x%x) (%dx%d)\n",
- (void*)pPixmap->drawable.id,
- ExaGetPixmapPriv(pPixmap)->area->offset,
- pPixmap->drawable.width,
- pPixmap->drawable.height));
- /* Free the offscreen area */
- exaOffscreenFree (pPixmap->drawable.pScreen, pExaPixmap->area);
- pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
- pPixmap->devKind = pExaPixmap->sys_pitch;
- }
- REGION_UNINIT(pPixmap->drawable.pScreen, &pExaPixmap->validSys);
- REGION_UNINIT(pPixmap->drawable.pScreen, &pExaPixmap->validFB);
- }
-
- swap(pExaScr, pScreen, DestroyPixmap);
- ret = pScreen->DestroyPixmap (pPixmap);
- swap(pExaScr, pScreen, DestroyPixmap);
-
- return ret;
-}
-
static int
exaLog2(int val)
{
@@ -229,14 +179,14 @@ exaLog2(int val)
return bits - 1;
}
-static void
+void
exaSetAccelBlock(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
int w, int h, int bpp)
{
pExaPixmap->accel_blocked = 0;
if (pExaScr->info->maxPitchPixels) {
- int max_pitch = pExaScr->info->maxPitchPixels * (bpp + 7) / 8;
+ int max_pitch = pExaScr->info->maxPitchPixels * bits_to_bytes(bpp);
if (pExaPixmap->fb_pitch > max_pitch)
pExaPixmap->accel_blocked |= EXA_RANGE_PITCH;
@@ -253,238 +203,33 @@ exaSetAccelBlock(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
pExaPixmap->accel_blocked |= EXA_RANGE_HEIGHT;
}
-static void
+void
exaSetFbPitch(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
int w, int h, int bpp)
{
if (pExaScr->info->flags & EXA_OFFSCREEN_ALIGN_POT && w != 1)
- pExaPixmap->fb_pitch = ((1 << (exaLog2(w - 1) + 1)) * bpp + 7) / 8;
+ pExaPixmap->fb_pitch = bits_to_bytes((1 << (exaLog2(w - 1) + 1)) * bpp);
else
- pExaPixmap->fb_pitch = (w * bpp + 7) / 8;
+ pExaPixmap->fb_pitch = bits_to_bytes(w * bpp);
pExaPixmap->fb_pitch = EXA_ALIGN(pExaPixmap->fb_pitch,
pExaScr->info->pixmapPitchAlign);
}
/**
- * exaCreatePixmap() creates a new pixmap.
- *
- * If width and height are 0, this won't be a full-fledged pixmap and it will
- * get ModifyPixmapHeader() called on it later. So, we mark it as pinned, because
- * ModifyPixmapHeader() would break migration. These types of pixmaps are used
- * for scratch pixmaps, or to represent the visible screen.
+ * Returns TRUE if the pixmap is not movable. This is the case where it's a
+ * pixmap which has no private (almost always bad) or it's a scratch pixmap created by
+ * some X Server internal component (the score says it's pinned).
*/
-static PixmapPtr
-exaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth,
- unsigned usage_hint)
-{
- PixmapPtr pPixmap;
- ExaPixmapPrivPtr pExaPixmap;
- BoxRec box;
- int driver_alloc = 0;
- int bpp;
- ExaScreenPriv(pScreen);
-
- if (w > 32767 || h > 32767)
- return NullPixmap;
-
- swap(pExaScr, pScreen, CreatePixmap);
- if (!pExaScr->info->CreatePixmap && !pExaScr->info->CreatePixmap2) {
- pPixmap = pScreen->CreatePixmap (pScreen, w, h, depth, usage_hint);
- } else {
- driver_alloc = 1;
- pPixmap = pScreen->CreatePixmap(pScreen, 0, 0, depth, usage_hint);
- }
- swap(pExaScr, pScreen, CreatePixmap);
-
- if (!pPixmap)
- return NULL;
-
- pExaPixmap = ExaGetPixmapPriv(pPixmap);
- pExaPixmap->driverPriv = NULL;
-
- bpp = pPixmap->drawable.bitsPerPixel;
-
- if (driver_alloc) {
- size_t paddedWidth, datasize;
-
- paddedWidth = ((w * bpp + FB_MASK) >> FB_SHIFT) * sizeof(FbBits);
- if (paddedWidth / 4 > 32767 || h > 32767)
- return NullPixmap;
-
- exaSetFbPitch(pExaScr, pExaPixmap, w, h, bpp);
-
- if (paddedWidth < pExaPixmap->fb_pitch)
- paddedWidth = pExaPixmap->fb_pitch;
-
- datasize = h * paddedWidth;
-
- /* Set this before driver hooks, to allow for !offscreen pixmaps.
- * !offscreen pixmaps have a valid pointer at all times.
- */
- pPixmap->devPrivate.ptr = NULL;
-
- if (pExaScr->info->CreatePixmap2)
- pExaPixmap->driverPriv = pExaScr->info->CreatePixmap2(pScreen, w, h, depth, usage_hint, bpp);
- else
- pExaPixmap->driverPriv = pExaScr->info->CreatePixmap(pScreen, datasize, 0);
- if (!pExaPixmap->driverPriv) {
- swap(pExaScr, pScreen, DestroyPixmap);
- pScreen->DestroyPixmap (pPixmap);
- swap(pExaScr, pScreen, DestroyPixmap);
- return NULL;
- }
-
- /* Allow ModifyPixmapHeader to set sys_ptr appropriately. */
- pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
- pExaPixmap->fb_ptr = NULL;
- pExaPixmap->pDamage = NULL;
- pExaPixmap->sys_ptr = NULL;
-
- (*pScreen->ModifyPixmapHeader)(pPixmap, w, h, 0, 0,
- paddedWidth, NULL);
-
- } else {
- pExaPixmap->driverPriv = NULL;
- /* Scratch pixmaps may have w/h equal to zero, and may not be
- * migrated.
- */
- if (!w || !h)
- pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
- else
- pExaPixmap->score = EXA_PIXMAP_SCORE_INIT;
-
- pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr;
- pExaPixmap->sys_pitch = pPixmap->devKind;
-
- pPixmap->devPrivate.ptr = NULL;
- pExaPixmap->offscreen = FALSE;
-
- pExaPixmap->fb_ptr = NULL;
- exaSetFbPitch(pExaScr, pExaPixmap, w, h, bpp);
- pExaPixmap->fb_size = pExaPixmap->fb_pitch * h;
-
- if (pExaPixmap->fb_pitch > 131071) {
- swap(pExaScr, pScreen, DestroyPixmap);
- pScreen->DestroyPixmap (pPixmap);
- swap(pExaScr, pScreen, DestroyPixmap);
- return NULL;
- }
-
- /* Set up damage tracking */
- pExaPixmap->pDamage = DamageCreate (NULL, NULL,
- DamageReportNone, TRUE,
- pScreen, pPixmap);
-
- if (pExaPixmap->pDamage == NULL) {
- swap(pExaScr, pScreen, DestroyPixmap);
- pScreen->DestroyPixmap (pPixmap);
- swap(pExaScr, pScreen, DestroyPixmap);
- return NULL;
- }
-
- DamageRegister (&pPixmap->drawable, pExaPixmap->pDamage);
- /* This ensures that pending damage reflects the current operation. */
- /* This is used by exa to optimize migration. */
- DamageSetReportAfterOp (pExaPixmap->pDamage, TRUE);
- }
-
- pExaPixmap->area = NULL;
-
- /* We set the initial pixmap as completely valid for a simple reason.
- * Imagine a 1000x1000 pixmap, it has 1 million pixels, 250000 of which
- * could form single pixel rects as part of a region. Setting the complete region
- * as valid is a natural defragmentation of the region.
- */
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = w;
- box.y2 = h;
- REGION_INIT(pScreen, &pExaPixmap->validSys, &box, 0);
- REGION_INIT(pScreen, &pExaPixmap->validFB, &box, 0);
-
- exaSetAccelBlock(pExaScr, pExaPixmap,
- w, h, bpp);
-
- return pPixmap;
-}
-
-static Bool
-exaModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth,
- int bitsPerPixel, int devKind, pointer pPixData)
+Bool
+exaPixmapIsPinned (PixmapPtr pPix)
{
- ExaScreenPrivPtr pExaScr;
- ExaPixmapPrivPtr pExaPixmap;
- Bool ret;
-
- if (!pPixmap)
- return FALSE;
-
- pExaScr = ExaGetScreenPriv(pPixmap->drawable.pScreen);
- pExaPixmap = ExaGetPixmapPriv(pPixmap);
-
- if (pExaPixmap) {
- if (pPixData)
- pExaPixmap->sys_ptr = pPixData;
-
- if (devKind > 0)
- pExaPixmap->sys_pitch = devKind;
-
- /* Classic EXA:
- * - Framebuffer.
- * - Scratch pixmap with offscreen memory.
- */
- if (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS) &&
- pExaScr->info->memoryBase && pPixData) {
- if ((CARD8 *)pPixData >= pExaScr->info->memoryBase &&
- ((CARD8 *)pPixData - pExaScr->info->memoryBase) <
- pExaScr->info->memorySize) {
- pExaPixmap->fb_ptr = pPixData;
- pExaPixmap->fb_pitch = devKind;
- pExaPixmap->offscreen = TRUE;
- }
- }
-
- if (width > 0 && height > 0 && bitsPerPixel > 0) {
- exaSetFbPitch(pExaScr, pExaPixmap,
- width, height, bitsPerPixel);
-
- exaSetAccelBlock(pExaScr, pExaPixmap,
- width, height, bitsPerPixel);
- }
-
- /* Pixmaps subject to ModifyPixmapHeader will be pinned to system or
- * offscreen memory, so there's no need to track damage.
- */
- if (pExaPixmap->pDamage) {
- DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
- DamageDestroy(pExaPixmap->pDamage);
- pExaPixmap->pDamage = NULL;
- }
- }
-
- if (pExaScr->info->ModifyPixmapHeader) {
- ret = pExaScr->info->ModifyPixmapHeader(pPixmap, width, height, depth,
- bitsPerPixel, devKind, pPixData);
- /* For EXA_HANDLES_PIXMAPS, we set pPixData to NULL.
- * If pPixmap->devPrivate.ptr is non-NULL, then we've got a non-offscreen pixmap.
- * We need to store the pointer, because PrepareAccess won't be called.
- */
- if (!pPixData && pPixmap->devPrivate.ptr && pPixmap->devKind) {
- pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr;
- pExaPixmap->sys_pitch = pPixmap->devKind;
- }
- if (ret == TRUE)
- goto out;
- }
- ret = pExaScr->SavedModifyPixmapHeader(pPixmap, width, height, depth,
- bitsPerPixel, devKind, pPixData);
+ ExaPixmapPriv (pPix);
-out:
- /* Always NULL this, we don't want lingering pointers. */
- pPixmap->devPrivate.ptr = NULL;
+ if (pExaPixmap == NULL)
+ EXA_FatalErrorDebugWithRet(("EXA bug: exaPixmapIsPinned was called on a non-exa pixmap.\n"), TRUE);
- return ret;
+ return pExaPixmap->score == EXA_PIXMAP_SCORE_PINNED;
}
/**
@@ -500,21 +245,15 @@ out:
* @return TRUE if the given drawable is in framebuffer memory.
*/
Bool
-exaPixmapIsOffscreen(PixmapPtr p)
+exaPixmapIsOffscreen(PixmapPtr pPixmap)
{
- ScreenPtr pScreen = p->drawable.pScreen;
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
ExaScreenPriv(pScreen);
- ExaPixmapPriv(p);
- Bool ret;
- if (pExaScr->info->PixmapIsOffscreen) {
- p->devPrivate.ptr = ExaGetPixmapAddress(p);
- ret = pExaScr->info->PixmapIsOffscreen(p);
- p->devPrivate.ptr = NULL;
- } else
- ret = (pExaPixmap->offscreen && pExaPixmap->fb_ptr);
+ if (!(pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS))
+ return FALSE;
- return ret;
+ return (*pExaScr->pixmap_is_offscreen)(pPixmap);
}
/**
@@ -554,6 +293,7 @@ ExaDoPrepareAccess(DrawablePtr pDrawable, int index)
PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable);
ExaPixmapPriv(pPixmap);
Bool offscreen;
+ int i;
if (!(pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS))
return FALSE;
@@ -561,19 +301,25 @@ ExaDoPrepareAccess(DrawablePtr pDrawable, int index)
if (pExaPixmap == NULL)
EXA_FatalErrorDebugWithRet(("EXA bug: ExaDoPrepareAccess was called on a non-exa pixmap.\n"), FALSE);
- /* Check if we're dealing SRC == DST or similar.
- * In that case the first PrepareAccess has already set pPixmap->devPrivate.ptr.
- */
- if (pPixmap->devPrivate.ptr != NULL) {
- int i;
- for (i = 0; i < 6; i++)
- if (pExaScr->prepare_access[i] == pPixmap)
+ /* Handle repeated / nested calls. */
+ for (i = 0; i < EXA_NUM_PREPARE_INDICES; i++) {
+ if (pExaScr->access[i].pixmap == pPixmap) {
+ pExaScr->access[i].count++;
+ return TRUE;
+ }
+ }
+
+ /* If slot for this index is taken, find an empty slot */
+ if (pExaScr->access[index].pixmap) {
+ for (index = EXA_NUM_PREPARE_INDICES - 1; index >= 0; index--)
+ if (!pExaScr->access[index].pixmap)
break;
+ }
- /* No known PrepareAccess or double prepare on the same index. */
- if (i == 6 || i == index)
- EXA_FatalErrorDebug(("EXA bug: pPixmap->devPrivate.ptr was %p, but should have been NULL.\n",
- pPixmap->devPrivate.ptr));
+ /* Access to this pixmap hasn't been prepared yet, so data pointer should be NULL. */
+ if (pPixmap->devPrivate.ptr != NULL) {
+ EXA_FatalErrorDebug(("EXA bug: pPixmap->devPrivate.ptr was %p, but should have been NULL.\n",
+ pPixmap->devPrivate.ptr));
}
offscreen = exaPixmapIsOffscreen(pPixmap);
@@ -583,11 +329,22 @@ ExaDoPrepareAccess(DrawablePtr pDrawable, int index)
else
pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
- /* Store so we can check SRC and DEST being the same. */
- pExaScr->prepare_access[index] = pPixmap;
-
- if (!offscreen)
+ /* Store so we can handle repeated / nested calls. */
+ pExaScr->access[index].pixmap = pPixmap;
+ pExaScr->access[index].count = 1;
+
+ if (!offscreen) {
+ /* Do we need to allocate our system buffer? */
+ if ((pExaScr->info->flags & EXA_HANDLES_PIXMAPS) && (pExaScr->info->flags & EXA_MIXED_PIXMAPS)) {
+ if (!pExaPixmap->sys_ptr && !exaPixmapIsPinned(pPixmap)) {
+ pExaPixmap->sys_ptr = malloc(pExaPixmap->sys_pitch * pDrawable->height);
+ if (!pExaPixmap->sys_ptr)
+ FatalError("EXA: malloc failed for size %d bytes\n", pExaPixmap->sys_pitch * pDrawable->height);
+ pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
+ }
+ }
return FALSE;
+ }
exaWaitSync (pDrawable->pScreen);
@@ -616,19 +373,24 @@ ExaDoPrepareAccess(DrawablePtr pDrawable, int index)
void
exaPrepareAccessReg(DrawablePtr pDrawable, int index, RegionPtr pReg)
{
- ExaMigrationRec pixmaps[1];
-
- if (index == EXA_PREPARE_DEST || index == EXA_PREPARE_AUX_DEST) {
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = FALSE;
- } else {
- pixmaps[0].as_dst = FALSE;
- pixmaps[0].as_src = TRUE;
- }
- pixmaps[0].pPix = exaGetDrawablePixmap (pDrawable);
- pixmaps[0].pReg = pReg;
+ PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable);
+ ExaScreenPriv(pPixmap->drawable.pScreen);
- exaDoMigration(pixmaps, 1, FALSE);
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[1];
+
+ if (index == EXA_PREPARE_DEST || index == EXA_PREPARE_AUX_DEST) {
+ pixmaps[0].as_dst = TRUE;
+ pixmaps[0].as_src = FALSE;
+ } else {
+ pixmaps[0].as_dst = FALSE;
+ pixmaps[0].as_src = TRUE;
+ }
+ pixmaps[0].pPix = pPixmap;
+ pixmaps[0].pReg = pReg;
+
+ exaDoMigration(pixmaps, 1, FALSE);
+ }
ExaDoPrepareAccess(pDrawable, index);
}
@@ -657,6 +419,7 @@ exaFinishAccess(DrawablePtr pDrawable, int index)
ExaScreenPriv (pScreen);
PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable);
ExaPixmapPriv (pPixmap);
+ int i;
if (!(pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS))
return;
@@ -664,11 +427,22 @@ exaFinishAccess(DrawablePtr pDrawable, int index)
if (pExaPixmap == NULL)
EXA_FatalErrorDebugWithRet(("EXA bug: exaFinishAccesss was called on a non-exa pixmap.\n"),);
- /* Avoid mismatching indices. */
- if (pExaScr->prepare_access[index] != pPixmap)
- EXA_FatalErrorDebug(("EXA bug: Calling FinishAccess on pixmap %p with index %d while "
- "it should have been %p.\n", pPixmap, index, pExaScr->prepare_access[index]));
- pExaScr->prepare_access[index] = NULL;
+ /* Handle repeated / nested calls. */
+ for (i = 0; i < EXA_NUM_PREPARE_INDICES; i++) {
+ if (pExaScr->access[i].pixmap == pPixmap) {
+ if (--pExaScr->access[i].count > 0)
+ return;
+ index = i;
+ break;
+ }
+ }
+
+ /* Catch unbalanced Prepare/FinishAccess calls. */
+ if (i == EXA_NUM_PREPARE_INDICES)
+ EXA_FatalErrorDebug(("EXA bug: FinishAccess called without PrepareAccess for pixmap 0x%p.\n",
+ pPixmap));
+
+ pExaScr->access[index].pixmap = NULL;
/* We always hide the devPrivate.ptr. */
pPixmap->devPrivate.ptr = NULL;
@@ -763,15 +537,7 @@ exaCreatePixmapWithPrepare(ScreenPtr pScreen, int w, int h, int depth,
* For EXA_HANDLES_PIXMAPS the driver will handle whatever is needed.
* We want to signal that the pixmaps will be used as destination.
*/
- if (pExaScr->prepare_access[EXA_PREPARE_DEST] == NULL) {
- ExaDoPrepareAccess(&pPixmap->drawable, EXA_PREPARE_DEST);
- pExaScr->prepare_access[EXA_PREPARE_DEST] = pPixmap;
- } else if (pExaScr->prepare_access[EXA_PREPARE_AUX_DEST] == NULL) {
- ExaDoPrepareAccess(&pPixmap->drawable, EXA_PREPARE_AUX_DEST);
- pExaScr->prepare_access[EXA_PREPARE_AUX_DEST] = pPixmap;
- } else {
- FatalError("exaCreatePixmapWithPrepare can only accomodate two pixmaps, we're at three.\n");
- }
+ ExaDoPrepareAccess(&pPixmap->drawable, EXA_PREPARE_AUX_DEST);
return pPixmap;
}
@@ -781,12 +547,9 @@ exaDestroyPixmapWithFinish(PixmapPtr pPixmap)
{
ScreenPtr pScreen = pPixmap->drawable.pScreen;
ExaScreenPriv(pScreen);
- int i;
Bool ret;
- for (i = 0; i < 6; i++)
- if (pExaScr->prepare_access[i] == pPixmap)
- exaFinishAccess(&pPixmap->drawable, i);
+ exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_AUX_DEST);
/* This swaps between this function and the real upper layer function.
* Normally this would swap to the fb layer pointer, this is a very special case.
@@ -848,8 +611,8 @@ exaValidateGC(GCPtr pGC,
(*pGC->funcs->ValidateGC)(pGC, changes, pDrawable);
- if (pExaScr->prepare_access[EXA_PREPARE_SRC]) /* tile */
- exaFinishAccess(&pExaScr->prepare_access[EXA_PREPARE_SRC]->drawable, EXA_PREPARE_SRC);
+ if (pTile)
+ exaFinishAccess(&pTile->drawable, EXA_PREPARE_SRC);
if (pGC->stipple)
exaFinishAccess(&pGC->stipple->drawable, EXA_PREPARE_MASK);
@@ -863,13 +626,6 @@ exaValidateGC(GCPtr pGC,
/* restore copy of fb layer pointer. */
pExaScr->SavedDestroyPixmap = old_ptr2;
- if (pExaScr->prepare_access[EXA_PREPARE_DEST])
- exaFinishAccess(&pExaScr->prepare_access[EXA_PREPARE_DEST]->drawable,
- EXA_PREPARE_DEST);
- if (pExaScr->prepare_access[EXA_PREPARE_AUX_DEST])
- exaFinishAccess(&pExaScr->prepare_access[EXA_PREPARE_AUX_DEST]->drawable,
- EXA_PREPARE_AUX_DEST);
-
EXA_GC_EPILOGUE(pGC);
}
@@ -979,10 +735,10 @@ exaChangeWindowAttributes(WindowPtr pWin, unsigned long mask)
ret = pScreen->ChangeWindowAttributes(pWin, mask);
swap(pExaScr, pScreen, ChangeWindowAttributes);
- if (pExaScr->prepare_access[EXA_PREPARE_SRC]) /* background */
- exaFinishAccess(&pExaScr->prepare_access[EXA_PREPARE_SRC]->drawable, EXA_PREPARE_SRC);
- if (pExaScr->prepare_access[EXA_PREPARE_MASK]) /* border */
- exaFinishAccess(&pExaScr->prepare_access[EXA_PREPARE_MASK]->drawable, EXA_PREPARE_MASK);
+ if ((mask & CWBackPixmap) && pWin->backgroundState == BackgroundPixmap)
+ exaFinishAccess(&pWin->background.pixmap->drawable, EXA_PREPARE_SRC);
+ if ((mask & CWBorderPixmap) && pWin->borderIsPixel == FALSE)
+ exaFinishAccess(&pWin->border.pixmap->drawable, EXA_PREPARE_MASK);
/* switch back to the normal upper layer. */
unwrap(pExaScr, pScreen, CreatePixmap);
@@ -994,13 +750,6 @@ exaChangeWindowAttributes(WindowPtr pWin, unsigned long mask)
/* restore copy of fb layer pointer. */
pExaScr->SavedDestroyPixmap = old_ptr2;
- if (pExaScr->prepare_access[EXA_PREPARE_DEST])
- exaFinishAccess(&pExaScr->prepare_access[EXA_PREPARE_DEST]->drawable,
- EXA_PREPARE_DEST);
- if (pExaScr->prepare_access[EXA_PREPARE_AUX_DEST])
- exaFinishAccess(&pExaScr->prepare_access[EXA_PREPARE_AUX_DEST]->drawable,
- EXA_PREPARE_AUX_DEST);
-
return ret;
}
@@ -1313,10 +1062,33 @@ exaDriverInit (ScreenPtr pScreen,
pScreen->myNum);
return FALSE;
}
- wrap(pExaScr, pScreen, CreatePixmap, exaCreatePixmap);
- wrap(pExaScr, pScreen, DestroyPixmap, exaDestroyPixmap);
-
- wrap(pExaScr, pScreen, ModifyPixmapHeader, exaModifyPixmapHeader);
+ if (pExaScr->info->flags & EXA_HANDLES_PIXMAPS) {
+ if (pExaScr->info->flags & EXA_MIXED_PIXMAPS) {
+ wrap(pExaScr, pScreen, CreatePixmap, exaCreatePixmap_mixed);
+ wrap(pExaScr, pScreen, DestroyPixmap, exaDestroyPixmap_mixed);
+ wrap(pExaScr, pScreen, ModifyPixmapHeader, exaModifyPixmapHeader_mixed);
+ pExaScr->do_migration = exaDoMigration_mixed;
+ pExaScr->pixmap_is_offscreen = exaPixmapIsOffscreen_mixed;
+ pExaScr->do_move_in_pixmap = exaMoveInPixmap_mixed;
+ pExaScr->do_move_out_pixmap = NULL;
+ } else {
+ wrap(pExaScr, pScreen, CreatePixmap, exaCreatePixmap_driver);
+ wrap(pExaScr, pScreen, DestroyPixmap, exaDestroyPixmap_driver);
+ wrap(pExaScr, pScreen, ModifyPixmapHeader, exaModifyPixmapHeader_driver);
+ pExaScr->do_migration = NULL;
+ pExaScr->pixmap_is_offscreen = exaPixmapIsOffscreen_driver;
+ pExaScr->do_move_in_pixmap = NULL;
+ pExaScr->do_move_out_pixmap = NULL;
+ }
+ } else {
+ wrap(pExaScr, pScreen, CreatePixmap, exaCreatePixmap_classic);
+ wrap(pExaScr, pScreen, DestroyPixmap, exaDestroyPixmap_classic);
+ wrap(pExaScr, pScreen, ModifyPixmapHeader, exaModifyPixmapHeader_classic);
+ pExaScr->do_migration = exaDoMigration_classic;
+ pExaScr->pixmap_is_offscreen = exaPixmapIsOffscreen_classic;
+ pExaScr->do_move_in_pixmap = exaMoveInPixmap_classic;
+ pExaScr->do_move_out_pixmap = exaMoveOutPixmap_classic;
+ }
if (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS)) {
LogMessage(X_INFO, "EXA(%d): Offscreen pixmap area of %lu bytes\n",
pScreen->myNum,
@@ -1414,3 +1186,47 @@ void exaWaitSync(ScreenPtr pScreen)
pExaScr->info->needsSync = FALSE;
}
}
+
+/**
+ * Performs migration of the pixmaps according to the operation information
+ * provided in pixmaps and can_accel and the migration scheme chosen in the
+ * config file.
+ */
+void
+exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
+{
+ ScreenPtr pScreen = pixmaps[0].pPix->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+
+ if (!(pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS))
+ return;
+
+ if (pExaScr->do_migration)
+ (*pExaScr->do_migration)(pixmaps, npixmaps, can_accel);
+}
+
+void
+exaMoveInPixmap (PixmapPtr pPixmap)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+
+ if (!(pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS))
+ return;
+
+ if (pExaScr->do_move_in_pixmap)
+ (*pExaScr->do_move_in_pixmap)(pPixmap);
+}
+
+void
+exaMoveOutPixmap (PixmapPtr pPixmap)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+
+ if (!(pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS))
+ return;
+
+ if (pExaScr->do_move_out_pixmap)
+ (*pExaScr->do_move_out_pixmap)(pPixmap);
+}
diff --git a/exa/exa.h b/exa/exa.h
index 0701ec98f..4b3947327 100644
--- a/exa/exa.h
+++ b/exa/exa.h
@@ -586,14 +586,14 @@ typedef struct _ExaDriver {
* untiling, or to adjust the pixmap's devPrivate.ptr for the purpose of
* making CPU access use a different aperture.
*
- * The index is one of #EXA_PREPARE_DEST, #EXA_PREPARE_SRC, or
- * #EXA_PREPARE_MASK, indicating which pixmap is in question. Since only up
- * to three pixmaps will have PrepareAccess() called on them per operation,
- * drivers can have a small, statically-allocated space to maintain state
- * for PrepareAccess() and FinishAccess() in. Note that the same pixmap may
- * have PrepareAccess() called on it more than once, for example when doing
- * a copy within the same pixmap (so it gets PrepareAccess as()
- * #EXA_PREPARE_DEST and then as #EXA_PREPARE_SRC).
+ * The index is one of #EXA_PREPARE_DEST, #EXA_PREPARE_SRC,
+ * #EXA_PREPARE_MASK, #EXA_PREPARE_AUX_DEST, #EXA_PREPARE_AUX_SRC, or
+ * #EXA_PREPARE_AUX_MASK. Since only up to #EXA_NUM_PREPARE_INDICES pixmaps
+ * will have PrepareAccess() called on them per operation, drivers can have
+ * a small, statically-allocated space to maintain state for PrepareAccess()
+ * and FinishAccess() in. Note that PrepareAccess() is only called once per
+ * pixmap and operation, regardless of whether the pixmap is used as a
+ * destination and/or source, and the index may not reflect the usage.
*
* PrepareAccess() may fail. An example might be the case of hardware that
* can set up 1 or 2 surfaces for CPU access, but not 3. If PrepareAccess()
@@ -663,6 +663,7 @@ typedef struct _ExaDriver {
#define EXA_PREPARE_AUX_DEST 3
#define EXA_PREPARE_AUX_SRC 4
#define EXA_PREPARE_AUX_MASK 5
+ #define EXA_NUM_PREPARE_INDICES 6
/** @} */
/**
@@ -707,8 +708,12 @@ typedef struct _ExaDriver {
int depth, int bitsPerPixel, int devKind,
pointer pPixData);
+ /* hooks for drivers with tiling support:
+ * driver MUST fill out new_fb_pitch with valid pitch of pixmap
+ */
void *(*CreatePixmap2)(ScreenPtr pScreen, int width, int height,
- int depth, int usage_hint, int bitsPerPixel);
+ int depth, int usage_hint, int bitsPerPixel,
+ int *new_fb_pitch);
/** @} */
} ExaDriverRec, *ExaDriverPtr;
@@ -757,6 +762,13 @@ typedef struct _ExaDriver {
*/
#define EXA_SUPPORTS_OFFSCREEN_OVERLAPS (1 << 5)
+/**
+ * EXA_MIXED_PIXMAPS will hide unacceleratable pixmaps from drivers and manage the
+ * problem known software fallbacks like trapezoids. This only migrates pixmaps one way
+ * into a driver pixmap and then pins it.
+ */
+#define EXA_MIXED_PIXMAPS (1 << 6)
+
/** @} */
/* in exa.c */
@@ -807,7 +819,7 @@ exaEnableDisableFBAccess (int index, Bool enable);
extern _X_EXPORT Bool
exaDrawableIsOffscreen (DrawablePtr pDrawable);
-/* in exa_migration.c */
+/* in exa.c */
extern _X_EXPORT void
exaMoveInPixmap (PixmapPtr pPixmap);
diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index 001a4f0e2..33fbb9843 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -50,12 +50,6 @@ exaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n,
int fullX1, fullX2, fullY1;
int partX1, partX2;
int off_x, off_y;
- ExaMigrationRec pixmaps[1];
-
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = pPixmap;
- pixmaps[0].pReg = NULL;
if (pExaScr->swappedOut ||
pGC->fillStyle != FillSolid ||
@@ -63,7 +57,16 @@ exaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n,
{
ExaCheckFillSpans (pDrawable, pGC, n, ppt, pwidth, fSorted);
return;
- } else {
+ }
+
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[1];
+
+ pixmaps[0].as_dst = TRUE;
+ pixmaps[0].as_src = FALSE;
+ pixmaps[0].pPix = pPixmap;
+ pixmaps[0].pReg = NULL;
+
exaDoMigration (pixmaps, 1, TRUE);
}
@@ -148,10 +151,9 @@ exaDoPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
int nbox;
int xoff, yoff;
int bpp = pDrawable->bitsPerPixel;
- Bool access_prepared = FALSE;
Bool ret = TRUE;
- if (pExaPixmap->accel_blocked)
+ if (pExaPixmap->accel_blocked || !pExaScr->info->UploadToScreen)
return FALSE;
/* Don't bother with under 8bpp, XYPixmaps. */
@@ -165,10 +167,10 @@ exaDoPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
if (pExaScr->swappedOut)
return FALSE;
- if (pExaPixmap->pDamage) {
+ if (pExaScr->do_migration) {
ExaMigrationRec pixmaps[1];
- pixmaps[0].as_dst = TRUE;
+ pixmaps[0].as_dst = TRUE;
pixmaps[0].as_src = FALSE;
pixmaps[0].pPix = pPix;
pixmaps[0].pReg = DamagePendingRegion(pExaPixmap->pDamage);
@@ -178,7 +180,7 @@ exaDoPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
pPix = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
- if (!pPix || !pExaScr->info->UploadToScreen)
+ if (!pPix)
return FALSE;
x += pDrawable->x;
@@ -220,9 +222,7 @@ exaDoPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
}
}
- if (access_prepared)
- exaFinishAccess(pDrawable, EXA_PREPARE_DEST);
- else
+ if (ret)
exaMarkSync(pDrawable->pScreen);
return ret;
@@ -375,7 +375,6 @@ exaHWCopyNtoN (DrawablePtr pSrcDrawable,
ExaPixmapPrivPtr pSrcExaPixmap, pDstExaPixmap;
int src_off_x, src_off_y;
int dst_off_x, dst_off_y;
- ExaMigrationRec pixmaps[2];
RegionPtr srcregion = NULL, dstregion = NULL;
xRectangle *rects;
Bool ret = TRUE;
@@ -425,14 +424,6 @@ exaHWCopyNtoN (DrawablePtr pSrcDrawable,
}
}
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = pDstPixmap;
- pixmaps[0].pReg = dstregion;
- pixmaps[1].as_dst = FALSE;
- pixmaps[1].as_src = TRUE;
- pixmaps[1].pPix = pSrcPixmap;
- pixmaps[1].pReg = srcregion;
pSrcExaPixmap = ExaGetPixmapPriv (pSrcPixmap);
pDstExaPixmap = ExaGetPixmapPriv (pDstPixmap);
@@ -466,7 +457,20 @@ exaHWCopyNtoN (DrawablePtr pSrcDrawable,
}
}
- exaDoMigration (pixmaps, 2, TRUE);
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[2];
+
+ pixmaps[0].as_dst = TRUE;
+ pixmaps[0].as_src = FALSE;
+ pixmaps[0].pPix = pDstPixmap;
+ pixmaps[0].pReg = dstregion;
+ pixmaps[1].as_dst = FALSE;
+ pixmaps[1].as_src = TRUE;
+ pixmaps[1].pPix = pSrcPixmap;
+ pixmaps[1].pReg = srcregion;
+
+ exaDoMigration (pixmaps, 2, TRUE);
+ }
/* Mixed directions must be handled specially if the card is lame */
if ((pExaScr->info->flags & EXA_TWO_BITBLT_DIRECTIONS) &&
@@ -766,7 +770,6 @@ exaPolyFillRect(DrawablePtr pDrawable,
int xoff, yoff;
int xorg, yorg;
int n;
- ExaMigrationRec pixmaps[2];
RegionPtr pReg = RECTS_TO_REGION(pScreen, nrect, prect, CT_UNSORTED);
/* Compute intersection of rects and clip region */
@@ -777,11 +780,6 @@ exaPolyFillRect(DrawablePtr pDrawable,
goto out;
}
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = pPixmap;
- pixmaps[0].pReg = NULL;
-
exaGetDrawableDeltas(pDrawable, pPixmap, &xoff, &yoff);
if (pExaScr->swappedOut || pExaPixmap->accel_blocked)
@@ -814,7 +812,16 @@ exaPolyFillRect(DrawablePtr pDrawable,
goto fallback;
}
- exaDoMigration (pixmaps, 1, TRUE);
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[1];
+
+ pixmaps[0].as_dst = TRUE;
+ pixmaps[0].as_src = FALSE;
+ pixmaps[0].pPix = pPixmap;
+ pixmaps[0].pReg = NULL;
+
+ exaDoMigration (pixmaps, 1, TRUE);
+ }
if (!exaPixmapIsOffscreen (pPixmap) ||
!(*pExaScr->info->PrepareSolid) (pPixmap,
@@ -972,23 +979,23 @@ exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel,
PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable);
ExaPixmapPriv (pPixmap);
int xoff, yoff;
- ExaMigrationRec pixmaps[1];
Bool ret = FALSE;
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = pPixmap;
- pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillSolid,
- alu, clientClipType)
- ? NULL : pRegion;
-
exaGetDrawableDeltas(pDrawable, pPixmap, &xoff, &yoff);
REGION_TRANSLATE(pScreen, pRegion, xoff, yoff);
if (pExaPixmap->accel_blocked)
- {
goto out;
- } else {
+
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[1];
+
+ pixmaps[0].as_dst = TRUE;
+ pixmaps[0].as_src = FALSE;
+ pixmaps[0].pPix = pPixmap;
+ pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillSolid,
+ alu, clientClipType) ? NULL : pRegion;
+
exaDoMigration (pixmaps, 1, TRUE);
}
@@ -1010,7 +1017,7 @@ exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel,
(*pExaScr->info->DoneSolid) (pPixmap);
exaMarkSync(pDrawable->pScreen);
- if (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS) &&
+ if (pExaPixmap->pDamage &&
pDrawable->width == 1 && pDrawable->height == 1 &&
pDrawable->bitsPerPixel != 24) {
ExaPixmapPriv(pPixmap);
@@ -1053,7 +1060,6 @@ exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
ExaPixmapPrivPtr pTileExaPixmap = ExaGetPixmapPriv(pTile);
int xoff, yoff;
int tileWidth, tileHeight;
- ExaMigrationRec pixmaps[2];
int nbox = REGION_NUM_RECTS (pRegion);
BoxPtr pBox = REGION_RECTS (pRegion);
Bool ret = FALSE;
@@ -1070,23 +1076,25 @@ exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
exaGetPixmapFirstPixel (pTile), planemask,
alu, clientClipType);
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
- pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillTiled,
- alu, clientClipType)
- ? NULL : pRegion;
- pixmaps[1].as_dst = FALSE;
- pixmaps[1].as_src = TRUE;
- pixmaps[1].pPix = pTile;
- pixmaps[1].pReg = NULL;
-
+ pPixmap = exaGetDrawablePixmap (pDrawable);
pExaPixmap = ExaGetPixmapPriv (pPixmap);
if (pExaPixmap->accel_blocked || pTileExaPixmap->accel_blocked)
- {
return FALSE;
- } else {
+
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[2];
+
+ pixmaps[0].as_dst = TRUE;
+ pixmaps[0].as_src = FALSE;
+ pixmaps[0].pPix = pPixmap;
+ pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillTiled,
+ alu, clientClipType) ? NULL : pRegion;
+ pixmaps[1].as_dst = FALSE;
+ pixmaps[1].as_src = TRUE;
+ pixmaps[1].pPix = pTile;
+ pixmaps[1].pReg = NULL;
+
exaDoMigration (pixmaps, 2, TRUE);
}
@@ -1225,31 +1233,36 @@ exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
unsigned int format, unsigned long planeMask, char *d)
{
ExaScreenPriv (pDrawable->pScreen);
- ExaMigrationRec pixmaps[1];
- BoxRec Box;
- RegionRec Reg;
- PixmapPtr pPix;
+ PixmapPtr pPix = exaGetDrawablePixmap (pDrawable);
int xoff, yoff;
Bool ok;
- pixmaps[0].as_dst = FALSE;
- pixmaps[0].as_src = TRUE;
- pixmaps[0].pPix = pPix = exaGetDrawablePixmap (pDrawable);
- pixmaps[0].pReg = &Reg;
+ if (pExaScr->swappedOut)
+ goto fallback;
exaGetDrawableDeltas (pDrawable, pPix, &xoff, &yoff);
- Box.x1 = pDrawable->y + x + xoff;
- Box.y1 = pDrawable->y + y + yoff;
- Box.x2 = Box.x1 + w;
- Box.y2 = Box.y1 + h;
+ if (pExaScr->do_migration) {
+ BoxRec Box;
+ RegionRec Reg;
+ ExaMigrationRec pixmaps[1];
- REGION_INIT(pScreen, &Reg, &Box, 1);
+ Box.x1 = pDrawable->y + x + xoff;
+ Box.y1 = pDrawable->y + y + yoff;
+ Box.x2 = Box.x1 + w;
+ Box.y2 = Box.y1 + h;
- if (pExaScr->swappedOut)
- goto fallback;
+ REGION_INIT(pScreen, &Reg, &Box, 1);
- exaDoMigration(pixmaps, 1, FALSE);
+ pixmaps[0].as_dst = FALSE;
+ pixmaps[0].as_src = TRUE;
+ pixmaps[0].pPix = pPix;
+ pixmaps[0].pReg = &Reg;
+
+ exaDoMigration(pixmaps, 1, FALSE);
+
+ REGION_UNINIT(pScreen, &Reg);
+ }
pPix = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
@@ -1271,12 +1284,9 @@ exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
PixmapBytePad(w, pDrawable->depth));
if (ok) {
exaWaitSync(pDrawable->pScreen);
- goto out;
+ return;
}
fallback:
ExaCheckGetImage(pDrawable, x, y, w, h, format, planeMask, d);
-
-out:
- REGION_UNINIT(pScreen, &Reg);
}
diff --git a/exa/exa_classic.c b/exa/exa_classic.c
new file mode 100644
index 000000000..1eff57091
--- /dev/null
+++ b/exa/exa_classic.c
@@ -0,0 +1,258 @@
+/*
+ * Copyright © 2009 Maarten Maathuis
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to 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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <string.h>
+
+#include "exa_priv.h"
+#include "exa.h"
+
+/* This file holds the classic exa specific implementation. */
+
+static _X_INLINE void*
+ExaGetPixmapAddress(PixmapPtr p)
+{
+ ExaPixmapPriv(p);
+
+ if (pExaPixmap->offscreen && pExaPixmap->fb_ptr)
+ return pExaPixmap->fb_ptr;
+ else
+ return pExaPixmap->sys_ptr;
+}
+
+/**
+ * exaCreatePixmap() creates a new pixmap.
+ *
+ * If width and height are 0, this won't be a full-fledged pixmap and it will
+ * get ModifyPixmapHeader() called on it later. So, we mark it as pinned, because
+ * ModifyPixmapHeader() would break migration. These types of pixmaps are used
+ * for scratch pixmaps, or to represent the visible screen.
+ */
+PixmapPtr
+exaCreatePixmap_classic(ScreenPtr pScreen, int w, int h, int depth,
+ unsigned usage_hint)
+{
+ PixmapPtr pPixmap;
+ ExaPixmapPrivPtr pExaPixmap;
+ BoxRec box;
+ int bpp;
+ ExaScreenPriv(pScreen);
+
+ if (w > 32767 || h > 32767)
+ return NullPixmap;
+
+ swap(pExaScr, pScreen, CreatePixmap);
+ pPixmap = pScreen->CreatePixmap (pScreen, w, h, depth, usage_hint);
+ swap(pExaScr, pScreen, CreatePixmap);
+
+ if (!pPixmap)
+ return NULL;
+
+ pExaPixmap = ExaGetPixmapPriv(pPixmap);
+ pExaPixmap->driverPriv = NULL;
+
+ bpp = pPixmap->drawable.bitsPerPixel;
+
+ pExaPixmap->driverPriv = NULL;
+ /* Scratch pixmaps may have w/h equal to zero, and may not be
+ * migrated.
+ */
+ if (!w || !h)
+ pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
+ else
+ pExaPixmap->score = EXA_PIXMAP_SCORE_INIT;
+
+ pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr;
+ pExaPixmap->sys_pitch = pPixmap->devKind;
+
+ pPixmap->devPrivate.ptr = NULL;
+ pExaPixmap->offscreen = FALSE;
+
+ pExaPixmap->fb_ptr = NULL;
+ exaSetFbPitch(pExaScr, pExaPixmap, w, h, bpp);
+ pExaPixmap->fb_size = pExaPixmap->fb_pitch * h;
+
+ if (pExaPixmap->fb_pitch > 131071) {
+ swap(pExaScr, pScreen, DestroyPixmap);
+ pScreen->DestroyPixmap (pPixmap);
+ swap(pExaScr, pScreen, DestroyPixmap);
+ return NULL;
+ }
+
+ /* Set up damage tracking */
+ pExaPixmap->pDamage = DamageCreate (NULL, NULL,
+ DamageReportNone, TRUE,
+ pScreen, pPixmap);
+
+ if (pExaPixmap->pDamage == NULL) {
+ swap(pExaScr, pScreen, DestroyPixmap);
+ pScreen->DestroyPixmap (pPixmap);
+ swap(pExaScr, pScreen, DestroyPixmap);
+ return NULL;
+ }
+
+ DamageRegister (&pPixmap->drawable, pExaPixmap->pDamage);
+ /* This ensures that pending damage reflects the current operation. */
+ /* This is used by exa to optimize migration. */
+ DamageSetReportAfterOp (pExaPixmap->pDamage, TRUE);
+
+ pExaPixmap->area = NULL;
+
+ /* We set the initial pixmap as completely valid for a simple reason.
+ * Imagine a 1000x1000 pixmap, it has 1 million pixels, 250000 of which
+ * could form single pixel rects as part of a region. Setting the complete region
+ * as valid is a natural defragmentation of the region.
+ */
+ box.x1 = 0;
+ box.y1 = 0;
+ box.x2 = w;
+ box.y2 = h;
+ REGION_INIT(pScreen, &pExaPixmap->validSys, &box, 0);
+ REGION_INIT(pScreen, &pExaPixmap->validFB, &box, 0);
+
+ exaSetAccelBlock(pExaScr, pExaPixmap,
+ w, h, bpp);
+
+ return pPixmap;
+}
+
+Bool
+exaModifyPixmapHeader_classic(PixmapPtr pPixmap, int width, int height, int depth,
+ int bitsPerPixel, int devKind, pointer pPixData)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPrivPtr pExaScr;
+ ExaPixmapPrivPtr pExaPixmap;
+ Bool ret;
+
+ if (!pPixmap)
+ return FALSE;
+
+ pExaScr = ExaGetScreenPriv(pScreen);
+ pExaPixmap = ExaGetPixmapPriv(pPixmap);
+
+ if (pExaPixmap) {
+ if (pPixData)
+ pExaPixmap->sys_ptr = pPixData;
+
+ if (devKind > 0)
+ pExaPixmap->sys_pitch = devKind;
+
+ /* Classic EXA:
+ * - Framebuffer.
+ * - Scratch pixmap with offscreen memory.
+ */
+ if (pExaScr->info->memoryBase && pPixData) {
+ if ((CARD8 *)pPixData >= pExaScr->info->memoryBase &&
+ ((CARD8 *)pPixData - pExaScr->info->memoryBase) <
+ pExaScr->info->memorySize) {
+ pExaPixmap->fb_ptr = pPixData;
+ pExaPixmap->fb_pitch = devKind;
+ pExaPixmap->offscreen = TRUE;
+ }
+ }
+
+ if (width > 0 && height > 0 && bitsPerPixel > 0) {
+ exaSetFbPitch(pExaScr, pExaPixmap,
+ width, height, bitsPerPixel);
+
+ exaSetAccelBlock(pExaScr, pExaPixmap,
+ width, height, bitsPerPixel);
+ }
+
+ /* Pixmaps subject to ModifyPixmapHeader will be pinned to system or
+ * offscreen memory, so there's no need to track damage.
+ */
+ if (pExaPixmap->pDamage) {
+ DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
+ DamageDestroy(pExaPixmap->pDamage);
+ pExaPixmap->pDamage = NULL;
+ }
+ }
+
+ swap(pExaScr, pScreen, ModifyPixmapHeader);
+ ret = pScreen->ModifyPixmapHeader(pPixmap, width, height, depth,
+ bitsPerPixel, devKind, pPixData);
+ swap(pExaScr, pScreen, ModifyPixmapHeader);
+
+ /* Always NULL this, we don't want lingering pointers. */
+ pPixmap->devPrivate.ptr = NULL;
+
+ return ret;
+}
+
+Bool
+exaDestroyPixmap_classic (PixmapPtr pPixmap)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+ Bool ret;
+
+ if (pPixmap->refcnt == 1)
+ {
+ ExaPixmapPriv (pPixmap);
+
+ if (pExaPixmap->area)
+ {
+ DBG_PIXMAP(("-- 0x%p (0x%x) (%dx%d)\n",
+ (void*)pPixmap->drawable.id,
+ ExaGetPixmapPriv(pPixmap)->area->offset,
+ pPixmap->drawable.width,
+ pPixmap->drawable.height));
+ /* Free the offscreen area */
+ exaOffscreenFree (pPixmap->drawable.pScreen, pExaPixmap->area);
+ pPixmap->devPrivate.ptr = pExaPixmap->sys_ptr;
+ pPixmap->devKind = pExaPixmap->sys_pitch;
+ }
+ REGION_UNINIT(pPixmap->drawable.pScreen, &pExaPixmap->validSys);
+ REGION_UNINIT(pPixmap->drawable.pScreen, &pExaPixmap->validFB);
+ }
+
+ swap(pExaScr, pScreen, DestroyPixmap);
+ ret = pScreen->DestroyPixmap (pPixmap);
+ swap(pExaScr, pScreen, DestroyPixmap);
+
+ return ret;
+}
+
+Bool
+exaPixmapIsOffscreen_classic(PixmapPtr pPixmap)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+ ExaPixmapPriv(pPixmap);
+ Bool ret;
+
+ if (pExaScr->info->PixmapIsOffscreen) {
+ pPixmap->devPrivate.ptr = ExaGetPixmapAddress(pPixmap);
+ ret = pExaScr->info->PixmapIsOffscreen(pPixmap);
+ pPixmap->devPrivate.ptr = NULL;
+ } else
+ ret = (pExaPixmap->offscreen && pExaPixmap->fb_ptr);
+
+ return ret;
+}
diff --git a/exa/exa_driver.c b/exa/exa_driver.c
new file mode 100644
index 000000000..97036955b
--- /dev/null
+++ b/exa/exa_driver.c
@@ -0,0 +1,214 @@
+/*
+ * Copyright © 2009 Maarten Maathuis
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to 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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <string.h>
+
+#include "exa_priv.h"
+#include "exa.h"
+
+/* This file holds the driver allocated pixmaps specific implementation. */
+
+static _X_INLINE void*
+ExaGetPixmapAddress(PixmapPtr p)
+{
+ ExaPixmapPriv(p);
+
+ return pExaPixmap->sys_ptr;
+}
+
+/**
+ * exaCreatePixmap() creates a new pixmap.
+ *
+ * Pixmaps are always marked as pinned, because exa has no control over them.
+ */
+PixmapPtr
+exaCreatePixmap_driver(ScreenPtr pScreen, int w, int h, int depth,
+ unsigned usage_hint)
+{
+ PixmapPtr pPixmap;
+ ExaPixmapPrivPtr pExaPixmap;
+ int bpp;
+ size_t paddedWidth, datasize;
+ ExaScreenPriv(pScreen);
+
+ if (w > 32767 || h > 32767)
+ return NullPixmap;
+
+ swap(pExaScr, pScreen, CreatePixmap);
+ pPixmap = pScreen->CreatePixmap(pScreen, 0, 0, depth, usage_hint);
+ swap(pExaScr, pScreen, CreatePixmap);
+
+ if (!pPixmap)
+ return NULL;
+
+ pExaPixmap = ExaGetPixmapPriv(pPixmap);
+ pExaPixmap->driverPriv = NULL;
+
+ bpp = pPixmap->drawable.bitsPerPixel;
+
+ /* Set this before driver hooks, to allow for !offscreen pixmaps.
+ * !offscreen pixmaps have a valid pointer at all times.
+ */
+ pPixmap->devPrivate.ptr = NULL;
+
+ if (pExaScr->info->CreatePixmap2) {
+ int new_pitch = 0;
+ pExaPixmap->driverPriv = pExaScr->info->CreatePixmap2(pScreen, w, h, depth, usage_hint, bpp, &new_pitch);
+ paddedWidth = pExaPixmap->fb_pitch = new_pitch;
+ }
+ else {
+ paddedWidth = ((w * bpp + FB_MASK) >> FB_SHIFT) * sizeof(FbBits);
+ if (paddedWidth / 4 > 32767 || h > 32767)
+ return NullPixmap;
+
+ exaSetFbPitch(pExaScr, pExaPixmap, w, h, bpp);
+
+ if (paddedWidth < pExaPixmap->fb_pitch)
+ paddedWidth = pExaPixmap->fb_pitch;
+ datasize = h * paddedWidth;
+ pExaPixmap->driverPriv = pExaScr->info->CreatePixmap(pScreen, datasize, 0);
+ }
+
+ if (!pExaPixmap->driverPriv) {
+ swap(pExaScr, pScreen, DestroyPixmap);
+ pScreen->DestroyPixmap (pPixmap);
+ swap(pExaScr, pScreen, DestroyPixmap);
+ return NULL;
+ }
+
+ /* Allow ModifyPixmapHeader to set sys_ptr appropriately. */
+ pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
+ pExaPixmap->fb_ptr = NULL;
+ pExaPixmap->pDamage = NULL;
+ pExaPixmap->sys_ptr = NULL;
+
+ (*pScreen->ModifyPixmapHeader)(pPixmap, w, h, 0, 0,
+ paddedWidth, NULL);
+
+ pExaPixmap->area = NULL;
+
+ exaSetAccelBlock(pExaScr, pExaPixmap,
+ w, h, bpp);
+
+ return pPixmap;
+}
+
+Bool
+exaModifyPixmapHeader_driver(PixmapPtr pPixmap, int width, int height, int depth,
+ int bitsPerPixel, int devKind, pointer pPixData)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPrivPtr pExaScr;
+ ExaPixmapPrivPtr pExaPixmap;
+ Bool ret;
+
+ if (!pPixmap)
+ return FALSE;
+
+ pExaScr = ExaGetScreenPriv(pScreen);
+ pExaPixmap = ExaGetPixmapPriv(pPixmap);
+
+ if (pExaPixmap) {
+ if (pPixData)
+ pExaPixmap->sys_ptr = pPixData;
+
+ if (devKind > 0)
+ pExaPixmap->sys_pitch = devKind;
+
+ if (width > 0 && height > 0 && bitsPerPixel > 0) {
+ exaSetFbPitch(pExaScr, pExaPixmap,
+ width, height, bitsPerPixel);
+
+ exaSetAccelBlock(pExaScr, pExaPixmap,
+ width, height, bitsPerPixel);
+ }
+ }
+
+ if (pExaScr->info->ModifyPixmapHeader) {
+ ret = pExaScr->info->ModifyPixmapHeader(pPixmap, width, height, depth,
+ bitsPerPixel, devKind, pPixData);
+ /* For EXA_HANDLES_PIXMAPS, we set pPixData to NULL.
+ * If pPixmap->devPrivate.ptr is non-NULL, then we've got a non-offscreen pixmap.
+ * We need to store the pointer, because PrepareAccess won't be called.
+ */
+ if (!pPixData && pPixmap->devPrivate.ptr && pPixmap->devKind) {
+ pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr;
+ pExaPixmap->sys_pitch = pPixmap->devKind;
+ }
+ if (ret == TRUE)
+ goto out;
+ }
+
+ swap(pExaScr, pScreen, ModifyPixmapHeader);
+ ret = pScreen->ModifyPixmapHeader(pPixmap, width, height, depth,
+ bitsPerPixel, devKind, pPixData);
+ swap(pExaScr, pScreen, ModifyPixmapHeader);
+
+out:
+ /* Always NULL this, we don't want lingering pointers. */
+ pPixmap->devPrivate.ptr = NULL;
+
+ return ret;
+}
+
+Bool
+exaDestroyPixmap_driver (PixmapPtr pPixmap)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+ Bool ret;
+
+ if (pPixmap->refcnt == 1)
+ {
+ ExaPixmapPriv (pPixmap);
+
+ if (pExaPixmap->driverPriv)
+ pExaScr->info->DestroyPixmap(pScreen, pExaPixmap->driverPriv);
+ pExaPixmap->driverPriv = NULL;
+ }
+
+ swap(pExaScr, pScreen, DestroyPixmap);
+ ret = pScreen->DestroyPixmap (pPixmap);
+ swap(pExaScr, pScreen, DestroyPixmap);
+
+ return ret;
+}
+
+Bool
+exaPixmapIsOffscreen_driver(PixmapPtr pPixmap)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+ Bool ret;
+
+ pPixmap->devPrivate.ptr = ExaGetPixmapAddress(pPixmap);
+ ret = pExaScr->info->PixmapIsOffscreen(pPixmap);
+ pPixmap->devPrivate.ptr = NULL;
+
+ return ret;
+}
diff --git a/exa/exa_glyphs.c b/exa/exa_glyphs.c
index b8d2e52bf..d621ccf76 100644
--- a/exa/exa_glyphs.c
+++ b/exa/exa_glyphs.c
@@ -372,7 +372,6 @@ exaGlyphCacheUploadGlyph(ScreenPtr pScreen,
PixmapPtr pGlyphPixmap = (PixmapPtr)pGlyphPicture->pDrawable;
ExaPixmapPriv(pGlyphPixmap);
PixmapPtr pCachePixmap = (PixmapPtr)cache->picture->pDrawable;
- ExaMigrationRec pixmaps[1];
if (!pExaScr->info->UploadToScreen || pExaScr->swappedOut || pExaPixmap->accel_blocked)
goto composite;
@@ -386,12 +385,16 @@ exaGlyphCacheUploadGlyph(ScreenPtr pScreen,
if (pGlyphPixmap->drawable.bitsPerPixel != pCachePixmap->drawable.bitsPerPixel)
goto composite;
- /* cache pixmap must be offscreen. */
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = pCachePixmap;
- pixmaps[0].pReg = NULL;
- exaDoMigration (pixmaps, 1, TRUE);
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[1];
+
+ /* cache pixmap must be offscreen. */
+ pixmaps[0].as_dst = TRUE;
+ pixmaps[0].as_src = FALSE;
+ pixmaps[0].pPix = pCachePixmap;
+ pixmaps[0].pReg = NULL;
+ exaDoMigration (pixmaps, 1, TRUE);
+ }
if (!exaPixmapIsOffscreen(pCachePixmap))
goto composite;
diff --git a/exa/exa_migration.c b/exa/exa_migration_classic.c
index f6805cb6e..d8e1e86da 100644
--- a/exa/exa_migration.c
+++ b/exa/exa_migration_classic.c
@@ -42,22 +42,6 @@
#endif
/**
- * Returns TRUE if the pixmap is not movable. This is the case where it's a
- * pixmap which has no private (almost always bad) or it's a scratch pixmap created by
- * some X Server internal component (the score says it's pinned).
- */
-static Bool
-exaPixmapIsPinned (PixmapPtr pPix)
-{
- ExaPixmapPriv (pPix);
-
- if (pExaPixmap == NULL)
- EXA_FatalErrorDebugWithRet(("EXA bug: exaPixmapIsPinned was called on a non-exa pixmap.\n"), TRUE);
-
- return pExaPixmap->score == EXA_PIXMAP_SCORE_PINNED;
-}
-
-/**
* The fallback path for UTS/DFS failing is to just memcpy. exaCopyDirtyToSys
* and exaCopyDirtyToFb both needed to do this loop.
*/
@@ -77,7 +61,7 @@ exaMemcpyBox (PixmapPtr pPixmap, BoxPtr pbox, CARD8 *src, int src_pitch,
dst += dst_pitch;
}
}
-
+
/**
* Returns TRUE if the pixmap is dirty (has been modified in its current
* location compared to the other), or lacks a private for tracking
@@ -382,7 +366,7 @@ exaDoMoveInPixmap (ExaMigrationPtr migrate)
}
void
-exaMoveInPixmap (PixmapPtr pPixmap)
+exaMoveInPixmap_classic (PixmapPtr pPixmap)
{
static ExaMigrationRec migrate = { .as_dst = FALSE, .as_src = TRUE,
.pReg = NULL };
@@ -423,7 +407,7 @@ exaDoMoveOutPixmap (ExaMigrationPtr migrate)
}
void
-exaMoveOutPixmap (PixmapPtr pPixmap)
+exaMoveOutPixmap_classic (PixmapPtr pPixmap)
{
static ExaMigrationRec migrate = { .as_dst = FALSE, .as_src = TRUE,
.pReg = NULL };
@@ -607,17 +591,12 @@ out:
* config file.
*/
void
-exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
+exaDoMigration_classic (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
{
ScreenPtr pScreen = pixmaps[0].pPix->drawable.pScreen;
ExaScreenPriv(pScreen);
int i, j;
- if (pExaScr->info->flags & EXA_HANDLES_PIXMAPS)
- return;
- if (!(pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS))
- return;
-
/* If this debugging flag is set, check each pixmap for whether it is marked
* as clean, and if so, actually check if that's the case. This should help
* catch issues with failing to mark a drawable as dirty. While it will
diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
new file mode 100644
index 000000000..d1ee9871b
--- /dev/null
+++ b/exa/exa_migration_mixed.c
@@ -0,0 +1,194 @@
+/*
+ * Copyright © 2009 Maarten Maathuis
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to 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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <string.h>
+
+#include "exa_priv.h"
+#include "exa.h"
+
+static void
+exaUploadFallback(PixmapPtr pPixmap, CARD8 *src, int src_pitch)
+{
+ ExaPixmapPriv(pPixmap);
+ RegionPtr damage = DamageRegion (pExaPixmap->pDamage);
+ GCPtr pGC = GetScratchGC (pPixmap->drawable.depth,
+ pPixmap->drawable.pScreen);
+ int nbox, cpp = pPixmap->drawable.bitsPerPixel / 8;
+ DamagePtr backup = pExaPixmap->pDamage;
+ BoxPtr pbox;
+ CARD8 *src2;
+
+ /* We don't want damage optimisations. */
+ pExaPixmap->pDamage = NULL;
+ ValidateGC (&pPixmap->drawable, pGC);
+
+ pbox = REGION_RECTS(damage);
+ nbox = REGION_NUM_RECTS(damage);
+
+ while (nbox--) {
+ src2 = src + pbox->y1 * src_pitch + pbox->x1 * cpp;
+
+ ExaCheckPutImage(&pPixmap->drawable, pGC,
+ pPixmap->drawable.depth, pbox->x1, pbox->y1,
+ pbox->x2 - pbox->x1, pbox->y2 - pbox->y1, 0,
+ ZPixmap, (char*) src2);
+
+ pbox++;
+ }
+
+ FreeScratchGC (pGC);
+ pExaPixmap->pDamage = backup;
+}
+
+void
+exaCreateDriverPixmap_mixed(PixmapPtr pPixmap)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+ ExaPixmapPriv(pPixmap);
+ RegionPtr damage = DamageRegion (pExaPixmap->pDamage);
+ void *sys_buffer = pExaPixmap->sys_ptr;
+ int w = pPixmap->drawable.width, h = pPixmap->drawable.height;
+ int depth = pPixmap->drawable.depth, bpp = pPixmap->drawable.bitsPerPixel;
+ int usage_hint = pPixmap->usage_hint;
+ int sys_pitch = pExaPixmap->sys_pitch;
+ int paddedWidth = sys_pitch;
+ int nbox;
+ BoxPtr pbox;
+
+ /* Already done. */
+ if (pExaPixmap->driverPriv)
+ return;
+
+ if (exaPixmapIsPinned(pPixmap))
+ return;
+
+ /* Can't accel 1/4 bpp. */
+ if (pExaPixmap->accel_blocked || bpp < 8)
+ return;
+
+ if (pExaScr->info->CreatePixmap2) {
+ int new_pitch = 0;
+ pExaPixmap->driverPriv = pExaScr->info->CreatePixmap2(pScreen, w, h, depth, usage_hint, bpp, &new_pitch);
+ paddedWidth = pExaPixmap->fb_pitch = new_pitch;
+ } else {
+ if (paddedWidth < pExaPixmap->fb_pitch)
+ paddedWidth = pExaPixmap->fb_pitch;
+ pExaPixmap->driverPriv = pExaScr->info->CreatePixmap(pScreen, paddedWidth*h, 0);
+ }
+
+ if (!pExaPixmap->driverPriv)
+ return;
+
+ pExaPixmap->offscreen = TRUE;
+ pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr = NULL;
+ pExaPixmap->sys_pitch = pPixmap->devKind = 0;
+
+ pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
+ (*pScreen->ModifyPixmapHeader)(pPixmap, w, h, 0, 0,
+ paddedWidth, NULL);
+
+ /* scratch pixmaps */
+ if (!w || !h)
+ goto finish;
+
+ /* we do not malloc memory by default. */
+ if (!sys_buffer)
+ goto finish;
+
+ if (!pExaScr->info->UploadToScreen)
+ goto fallback;
+
+ pbox = REGION_RECTS(damage);
+ nbox = REGION_NUM_RECTS(damage);
+
+ while (nbox--) {
+ if (!pExaScr->info->UploadToScreen(pPixmap, pbox->x1, pbox->y1, pbox->x2 - pbox->x1,
+ pbox->y2 - pbox->y1, (char *) (sys_buffer) + pbox->y1 * sys_pitch + pbox->x1 * (bpp / 8), sys_pitch))
+ goto fallback;
+
+ pbox++;
+ }
+
+ goto finish;
+
+fallback:
+ exaUploadFallback(pPixmap, sys_buffer, sys_pitch);
+
+finish:
+ free(sys_buffer);
+
+ /* We no longer need this. */
+ if (pExaPixmap->pDamage) {
+ DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
+ DamageDestroy(pExaPixmap->pDamage);
+ pExaPixmap->pDamage = NULL;
+ }
+}
+
+void
+exaDoMigration_mixed(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel)
+{
+ int i;
+
+ /* If anything is pinned in system memory, we won't be able to
+ * accelerate.
+ */
+ for (i = 0; i < npixmaps; i++) {
+ if (exaPixmapIsPinned (pixmaps[i].pPix) &&
+ !exaPixmapIsOffscreen (pixmaps[i].pPix))
+ {
+ can_accel = FALSE;
+ break;
+ }
+ }
+
+ /* We can do nothing. */
+ if (!can_accel)
+ return;
+
+ for (i = 0; i < npixmaps; i++) {
+ PixmapPtr pPixmap = pixmaps[i].pPix;
+ ExaPixmapPriv(pPixmap);
+ if (!pExaPixmap->driverPriv)
+ exaCreateDriverPixmap_mixed(pPixmap);
+ }
+}
+
+void
+exaMoveInPixmap_mixed(PixmapPtr pPixmap)
+{
+ ExaMigrationRec pixmaps[1];
+
+ pixmaps[0].as_dst = FALSE;
+ pixmaps[0].as_src = TRUE;
+ pixmaps[0].pPix = pPixmap;
+ pixmaps[0].pReg = NULL;
+
+ exaDoMigration(pixmaps, 1, TRUE);
+}
diff --git a/exa/exa_mixed.c b/exa/exa_mixed.c
new file mode 100644
index 000000000..01f87ba87
--- /dev/null
+++ b/exa/exa_mixed.c
@@ -0,0 +1,251 @@
+/*
+ * Copyright © 2009 Maarten Maathuis
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to 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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <string.h>
+
+#include "exa_priv.h"
+#include "exa.h"
+
+/* This file holds the driver allocated pixmaps + better initial placement code.
+ * A pinned pixmap implies one that is either driver based already or otherwise altered.
+ * Proper care is taken to free the initially allocated buffer.
+ */
+
+static _X_INLINE void*
+ExaGetPixmapAddress(PixmapPtr p)
+{
+ ExaPixmapPriv(p);
+
+ return pExaPixmap->sys_ptr;
+}
+
+/**
+ * exaCreatePixmap() creates a new pixmap.
+ *
+ * Pixmaps are always marked as pinned, unless the pixmap can still be transfered to a
+ * driver pixmaps.
+ */
+PixmapPtr
+exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth,
+ unsigned usage_hint)
+{
+ PixmapPtr pPixmap;
+ ExaPixmapPrivPtr pExaPixmap;
+ int bpp;
+ size_t paddedWidth, datasize;
+ ExaScreenPriv(pScreen);
+
+ if (w > 32767 || h > 32767)
+ return NullPixmap;
+
+ swap(pExaScr, pScreen, CreatePixmap);
+ pPixmap = pScreen->CreatePixmap(pScreen, 0, 0, depth, usage_hint);
+ swap(pExaScr, pScreen, CreatePixmap);
+
+ if (!pPixmap)
+ return NULL;
+
+ pExaPixmap = ExaGetPixmapPriv(pPixmap);
+ pExaPixmap->driverPriv = NULL;
+
+ bpp = pPixmap->drawable.bitsPerPixel;
+
+ paddedWidth = ((w * bpp + FB_MASK) >> FB_SHIFT) * sizeof(FbBits);
+ if (paddedWidth / 4 > 32767 || h > 32767)
+ return NullPixmap;
+
+ datasize = h * paddedWidth;
+
+ /* We will allocate the system pixmap later if needed. */
+ pPixmap->devPrivate.ptr = NULL;
+ pExaPixmap->sys_ptr = NULL;
+ pExaPixmap->sys_pitch = paddedWidth;
+
+ pExaPixmap->area = NULL;
+ pExaPixmap->offscreen = FALSE;
+ pExaPixmap->fb_ptr = NULL;
+ pExaPixmap->pDamage = NULL;
+
+ exaSetFbPitch(pExaScr, pExaPixmap, w, h, bpp);
+ exaSetAccelBlock(pExaScr, pExaPixmap,
+ w, h, bpp);
+
+ /* Avoid freeing sys_ptr. */
+ pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
+
+ (*pScreen->ModifyPixmapHeader)(pPixmap, w, h, 0, 0,
+ paddedWidth, NULL);
+
+ /* We want to be able to transfer the pixmap to driver memory later on. */
+ pExaPixmap->score = EXA_PIXMAP_SCORE_INIT;
+
+ /* A scratch pixmap will become a driver pixmap right away. */
+ if (!w || !h) {
+ exaCreateDriverPixmap_mixed(pPixmap);
+ } else {
+ /* Set up damage tracking */
+ pExaPixmap->pDamage = DamageCreate (NULL, NULL,
+ DamageReportNone, TRUE,
+ pScreen, pPixmap);
+
+ if (pExaPixmap->pDamage == NULL) {
+ swap(pExaScr, pScreen, DestroyPixmap);
+ pScreen->DestroyPixmap (pPixmap);
+ swap(pExaScr, pScreen, DestroyPixmap);
+ return NULL;
+ }
+
+ DamageRegister (&pPixmap->drawable, pExaPixmap->pDamage);
+ /* This ensures that pending damage reflects the current operation. */
+ /* This is used by exa to optimize migration. */
+ DamageSetReportAfterOp (pExaPixmap->pDamage, TRUE);
+ }
+
+ return pPixmap;
+}
+
+Bool
+exaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
+ int bitsPerPixel, int devKind, pointer pPixData)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPrivPtr pExaScr;
+ ExaPixmapPrivPtr pExaPixmap;
+ Bool ret;
+
+ if (!pPixmap)
+ return FALSE;
+
+ pExaScr = ExaGetScreenPriv(pScreen);
+ pExaPixmap = ExaGetPixmapPriv(pPixmap);
+
+ if (pExaPixmap) {
+ if (!exaPixmapIsPinned(pPixmap)) {
+ free(pExaPixmap->sys_ptr);
+ pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr = NULL;
+ pExaPixmap->sys_pitch = pPixmap->devKind = 0;
+
+ /* We no longer need this. */
+ if (pExaPixmap->pDamage) {
+ DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
+ DamageDestroy(pExaPixmap->pDamage);
+ pExaPixmap->pDamage = NULL;
+ }
+ }
+
+ if (pPixData)
+ pExaPixmap->sys_ptr = pPixData;
+
+ if (devKind > 0)
+ pExaPixmap->sys_pitch = devKind;
+
+ if (width > 0 && height > 0 && bitsPerPixel > 0) {
+ exaSetFbPitch(pExaScr, pExaPixmap,
+ width, height, bitsPerPixel);
+
+ exaSetAccelBlock(pExaScr, pExaPixmap,
+ width, height, bitsPerPixel);
+ }
+
+ /* Anything can happen, don't try to predict it all. */
+ pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
+ }
+
+ /* Only pass driver pixmaps to the driver. */
+ if (pExaScr->info->ModifyPixmapHeader && pExaPixmap->driverPriv) {
+ ret = pExaScr->info->ModifyPixmapHeader(pPixmap, width, height, depth,
+ bitsPerPixel, devKind, pPixData);
+ /* For EXA_HANDLES_PIXMAPS, we set pPixData to NULL.
+ * If pPixmap->devPrivate.ptr is non-NULL, then we've got a non-offscreen pixmap.
+ * We need to store the pointer, because PrepareAccess won't be called.
+ */
+ if (!pPixData && pPixmap->devPrivate.ptr && pPixmap->devKind) {
+ pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr;
+ pExaPixmap->sys_pitch = pPixmap->devKind;
+ }
+ if (ret == TRUE)
+ goto out;
+ }
+
+ swap(pExaScr, pScreen, ModifyPixmapHeader);
+ ret = pScreen->ModifyPixmapHeader(pPixmap, width, height, depth,
+ bitsPerPixel, devKind, pPixData);
+ swap(pExaScr, pScreen, ModifyPixmapHeader);
+
+out:
+ /* Always NULL this, we don't want lingering pointers. */
+ pPixmap->devPrivate.ptr = NULL;
+
+ return ret;
+}
+
+Bool
+exaDestroyPixmap_mixed(PixmapPtr pPixmap)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+ Bool ret;
+
+ if (pPixmap->refcnt == 1)
+ {
+ ExaPixmapPriv (pPixmap);
+
+ if (pExaPixmap->driverPriv)
+ pExaScr->info->DestroyPixmap(pScreen, pExaPixmap->driverPriv);
+ else if (pExaPixmap->sys_ptr && !exaPixmapIsPinned(pPixmap))
+ free(pExaPixmap->sys_ptr);
+ pExaPixmap->driverPriv = NULL;
+ pExaPixmap->sys_ptr = NULL;
+ }
+
+ swap(pExaScr, pScreen, DestroyPixmap);
+ ret = pScreen->DestroyPixmap (pPixmap);
+ swap(pExaScr, pScreen, DestroyPixmap);
+
+ return ret;
+}
+
+Bool
+exaPixmapIsOffscreen_mixed(PixmapPtr pPixmap)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+ ExaPixmapPriv(pPixmap);
+ pointer saved_ptr;
+ Bool ret;
+
+ if (!pExaPixmap->driverPriv)
+ return FALSE;
+
+ saved_ptr = pPixmap->devPrivate.ptr;
+ pPixmap->devPrivate.ptr = ExaGetPixmapAddress(pPixmap);
+ ret = pExaScr->info->PixmapIsOffscreen(pPixmap);
+ pPixmap->devPrivate.ptr = saved_ptr;
+
+ return ret;
+}
diff --git a/exa/exa_priv.h b/exa/exa_priv.h
index b3df1a586..869cf1772 100644
--- a/exa/exa_priv.h
+++ b/exa/exa_priv.h
@@ -142,6 +142,13 @@ typedef struct {
#define EXA_FALLBACK_COPYWINDOW (1 << 0)
#define EXA_ACCEL_COPYWINDOW (1 << 1)
+typedef struct _ExaMigrationRec {
+ Bool as_dst;
+ Bool as_src;
+ PixmapPtr pPix;
+ RegionPtr pReg;
+} ExaMigrationRec, *ExaMigrationPtr;
+
typedef void (*EnableDisableFBAccessProcPtr)(int, Bool);
typedef struct {
ExaDriverPtr info;
@@ -165,7 +172,11 @@ typedef struct {
TrapezoidsProcPtr SavedTrapezoids;
AddTrapsProcPtr SavedAddTraps;
#endif
-
+ void (*do_migration) (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
+ Bool (*pixmap_is_offscreen) (PixmapPtr pPixmap);
+ void (*do_move_in_pixmap) (PixmapPtr pPixmap);
+ void (*do_move_out_pixmap) (PixmapPtr pPixmap);
+
Bool swappedOut;
enum ExaMigrationHeuristic migration;
Bool checkDirtyCorrectness;
@@ -176,8 +187,11 @@ typedef struct {
CARD32 lastDefragment;
CARD32 nextDefragment;
- /* Store all accessed pixmaps, so we can check for duplicates. */
- PixmapPtr prepare_access[6];
+ /* Reference counting for accessed pixmaps */
+ struct {
+ PixmapPtr pixmap;
+ int count;
+ } access[EXA_NUM_PREPARE_INDICES];
/* Holds information on fallbacks that cannot be relayed otherwise. */
unsigned int fallback_flags;
@@ -300,13 +314,6 @@ typedef struct {
GCFuncs *Savedfuncs;
} ExaGCPrivRec, *ExaGCPrivPtr;
-typedef struct _ExaMigrationRec {
- Bool as_dst;
- Bool as_src;
- PixmapPtr pPix;
- RegionPtr pReg;
-} ExaMigrationRec, *ExaMigrationPtr;
-
typedef struct {
PicturePtr pDst;
INT16 xSrc;
@@ -440,6 +447,34 @@ void
exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
unsigned int format, unsigned long planeMask, char *d);
+RegionPtr
+exaCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC,
+ int srcx, int srcy, int width, int height, int dstx, int dsty);
+
+Bool
+exaHWCopyNtoN (DrawablePtr pSrcDrawable,
+ DrawablePtr pDstDrawable,
+ GCPtr pGC,
+ BoxPtr pbox,
+ int nbox,
+ int dx,
+ int dy,
+ Bool reverse,
+ Bool upsidedown);
+
+void
+exaCopyNtoN (DrawablePtr pSrcDrawable,
+ DrawablePtr pDstDrawable,
+ GCPtr pGC,
+ BoxPtr pbox,
+ int nbox,
+ int dx,
+ int dy,
+ Bool reverse,
+ Bool upsidedown,
+ Pixel bitplane,
+ void *closure);
+
extern const GCOps exaOps;
#ifdef RENDER
@@ -503,36 +538,77 @@ exaGetOffscreenPixmap (DrawablePtr pDrawable, int *xp, int *yp);
PixmapPtr
exaGetDrawablePixmap(DrawablePtr pDrawable);
-RegionPtr
-exaCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC,
- int srcx, int srcy, int width, int height, int dstx, int dsty);
+void
+exaSetFbPitch(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
+ int w, int h, int bpp);
-Bool
-exaHWCopyNtoN (DrawablePtr pSrcDrawable,
- DrawablePtr pDstDrawable,
- GCPtr pGC,
- BoxPtr pbox,
- int nbox,
- int dx,
- int dy,
- Bool reverse,
- Bool upsidedown);
+void
+exaSetAccelBlock(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
+ int w, int h, int bpp);
void
-exaCopyNtoN (DrawablePtr pSrcDrawable,
- DrawablePtr pDstDrawable,
- GCPtr pGC,
- BoxPtr pbox,
- int nbox,
- int dx,
- int dy,
- Bool reverse,
- Bool upsidedown,
- Pixel bitplane,
- void *closure);
+exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
+
+Bool
+exaPixmapIsPinned (PixmapPtr pPix);
extern const GCFuncs exaGCFuncs;
+/* exa_classic.c */
+PixmapPtr
+exaCreatePixmap_classic(ScreenPtr pScreen, int w, int h, int depth,
+ unsigned usage_hint);
+
+Bool
+exaModifyPixmapHeader_classic(PixmapPtr pPixmap, int width, int height, int depth,
+ int bitsPerPixel, int devKind, pointer pPixData);
+
+Bool
+exaDestroyPixmap_classic (PixmapPtr pPixmap);
+
+Bool
+exaPixmapIsOffscreen_classic(PixmapPtr pPixmap);
+
+/* exa_driver.c */
+PixmapPtr
+exaCreatePixmap_driver(ScreenPtr pScreen, int w, int h, int depth,
+ unsigned usage_hint);
+
+Bool
+exaModifyPixmapHeader_driver(PixmapPtr pPixmap, int width, int height, int depth,
+ int bitsPerPixel, int devKind, pointer pPixData);
+
+Bool
+exaDestroyPixmap_driver (PixmapPtr pPixmap);
+
+Bool
+exaPixmapIsOffscreen_driver(PixmapPtr pPixmap);
+
+/* exa_mixed.c */
+PixmapPtr
+exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth,
+ unsigned usage_hint);
+
+Bool
+exaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
+ int bitsPerPixel, int devKind, pointer pPixData);
+
+Bool
+exaDestroyPixmap_mixed(PixmapPtr pPixmap);
+
+Bool
+exaPixmapIsOffscreen_mixed(PixmapPtr pPixmap);
+
+/* exa_migration_mixed.c */
+void
+exaCreateDriverPixmap_mixed(PixmapPtr pPixmap);
+
+void
+exaDoMigration_mixed(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
+
+void
+exaMoveInPixmap_mixed(PixmapPtr pPixmap);
+
/* exa_render.c */
Bool
exaOpReadsDestination (CARD8 op);
@@ -587,11 +663,17 @@ exaGlyphs (CARD8 op,
GlyphListPtr list,
GlyphPtr *glyphs);
-/* exa_migration.c */
+/* exa_migration_classic.c */
void
-exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
+exaDoMigration_classic (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
void
exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area);
+void
+exaMoveOutPixmap_classic (PixmapPtr pPixmap);
+
+void
+exaMoveInPixmap_classic (PixmapPtr pPixmap);
+
#endif /* EXAPRIV_H */
diff --git a/exa/exa_render.c b/exa/exa_render.c
index 14d710b57..d46930130 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -54,6 +54,12 @@ static void exaCompositeFallbackPictDesc(PicturePtr pict, char *string, int n)
case PICT_x8r8g8b8:
snprintf(format, 20, "XRGB8888");
break;
+ case PICT_b8g8r8a8:
+ snprintf(format, 20, "BGRA8888");
+ break;
+ case PICT_b8g8r8x8:
+ snprintf(format, 20, "BGRX8888");
+ break;
case PICT_r5g6b5:
snprintf(format, 20, "RGB565 ");
break;
@@ -71,11 +77,17 @@ static void exaCompositeFallbackPictDesc(PicturePtr pict, char *string, int n)
break;
}
- loc = exaGetOffscreenPixmap(pict->pDrawable, &temp, &temp) ? 's' : 'm';
+ if (pict->pDrawable) {
+ loc = exaGetOffscreenPixmap(pict->pDrawable, &temp, &temp) ? 's' : 'm';
- snprintf(size, 20, "%dx%d%s", pict->pDrawable->width,
- pict->pDrawable->height, pict->repeat ?
- " R" : "");
+ snprintf(size, 20, "%dx%d%s", pict->pDrawable->width,
+ pict->pDrawable->height, pict->repeat ?
+ " R" : "");
+ } else {
+ loc = '-';
+
+ snprintf(size, 20, "%s", pict->repeat ? " R" : "");
+ }
snprintf(string, n, "%p:%c fmt %s (%s)", pict->pDrawable, loc, format, size);
}
@@ -138,32 +150,26 @@ exaGetPixelFromRGBA(CARD32 *pixel,
CARD16 green,
CARD16 blue,
CARD16 alpha,
- CARD32 format)
+ PictFormatPtr pFormat)
{
int rbits, bbits, gbits, abits;
int rshift, bshift, gshift, ashift;
*pixel = 0;
- if (!PICT_FORMAT_COLOR(format))
+ if (!PICT_FORMAT_COLOR(pFormat->format) &&
+ PICT_FORMAT_TYPE(pFormat->format) != PICT_TYPE_A)
return FALSE;
- rbits = PICT_FORMAT_R(format);
- gbits = PICT_FORMAT_G(format);
- bbits = PICT_FORMAT_B(format);
- abits = PICT_FORMAT_A(format);
-
- if (PICT_FORMAT_TYPE(format) == PICT_TYPE_ARGB) {
- bshift = 0;
- gshift = bbits;
- rshift = gshift + gbits;
- ashift = rshift + rbits;
- } else { /* PICT_TYPE_ABGR */
- rshift = 0;
- gshift = rbits;
- bshift = gshift + gbits;
- ashift = bshift + bbits;
- }
+ rbits = PICT_FORMAT_R(pFormat->format);
+ gbits = PICT_FORMAT_G(pFormat->format);
+ bbits = PICT_FORMAT_B(pFormat->format);
+ abits = PICT_FORMAT_A(pFormat->format);
+
+ rshift = pFormat->direct.red;
+ gshift = pFormat->direct.green;
+ bshift = pFormat->direct.blue;
+ ashift = pFormat->direct.alpha;
*pixel |= ( blue >> (16 - bbits)) << bshift;
*pixel |= ( red >> (16 - rbits)) << rshift;
@@ -179,30 +185,24 @@ exaGetRGBAFromPixel(CARD32 pixel,
CARD16 *green,
CARD16 *blue,
CARD16 *alpha,
- CARD32 format)
+ PictFormatPtr pFormat)
{
int rbits, bbits, gbits, abits;
int rshift, bshift, gshift, ashift;
- if (!PICT_FORMAT_COLOR(format))
+ if (!PICT_FORMAT_COLOR(pFormat->format) &&
+ PICT_FORMAT_TYPE(pFormat->format) != PICT_TYPE_A)
return FALSE;
- rbits = PICT_FORMAT_R(format);
- gbits = PICT_FORMAT_G(format);
- bbits = PICT_FORMAT_B(format);
- abits = PICT_FORMAT_A(format);
-
- if (PICT_FORMAT_TYPE(format) == PICT_TYPE_ARGB) {
- bshift = 0;
- gshift = bbits;
- rshift = gshift + gbits;
- ashift = rshift + rbits;
- } else { /* PICT_TYPE_ABGR */
- rshift = 0;
- gshift = rbits;
- bshift = gshift + gbits;
- ashift = bshift + bbits;
- }
+ rbits = PICT_FORMAT_R(pFormat->format);
+ gbits = PICT_FORMAT_G(pFormat->format);
+ bbits = PICT_FORMAT_B(pFormat->format);
+ abits = PICT_FORMAT_A(pFormat->format);
+
+ rshift = pFormat->direct.red;
+ gshift = pFormat->direct.green;
+ bshift = pFormat->direct.blue;
+ ashift = pFormat->direct.alpha;
*red = ((pixel >> rshift ) & ((1 << rbits) - 1)) << (16 - rbits);
while (rbits < 16) {
@@ -250,28 +250,22 @@ exaTryDriverSolidFill(PicturePtr pSrc,
int nbox;
int dst_off_x, dst_off_y;
PixmapPtr pSrcPix, pDstPix;
- ExaPixmapPrivPtr pSrcExaPix, pDstExaPix;
+ ExaPixmapPrivPtr pDstExaPix;
CARD32 pixel;
CARD16 red, green, blue, alpha;
- ExaMigrationRec pixmaps[1];
pDstPix = exaGetDrawablePixmap (pDst->pDrawable);
- pSrcPix = exaGetDrawablePixmap (pSrc->pDrawable);
-
- pSrcExaPix = ExaGetPixmapPriv(pSrcPix);
pDstExaPix = ExaGetPixmapPriv(pDstPix);
- /* Check whether the accelerator can use these pixmaps.
+ /* Check whether the accelerator can use the destination pixmap.
*/
- if (pSrcExaPix->accel_blocked || pDstExaPix->accel_blocked)
+ if (pDstExaPix->accel_blocked)
{
return -1;
}
xDst += pDst->pDrawable->x;
yDst += pDst->pDrawable->y;
- xSrc += pSrc->pDrawable->x;
- ySrc += pSrc->pDrawable->y;
if (!miComputeCompositeRegion (&region, pSrc, NULL, pDst,
xSrc, ySrc, 0, 0, xDst, yDst,
@@ -282,31 +276,37 @@ exaTryDriverSolidFill(PicturePtr pSrc,
REGION_TRANSLATE(pScreen, &region, dst_off_x, dst_off_y);
- pixel = exaGetPixmapFirstPixel (pSrcPix);
-
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = pDstPix;
- pixmaps[0].pReg = &region;
- exaDoMigration(pixmaps, 1, TRUE);
+ if (pSrc->pDrawable) {
+ xSrc += pSrc->pDrawable->x;
+ ySrc += pSrc->pDrawable->y;
- if (!exaPixmapIsOffscreen(pDstPix)) {
- REGION_UNINIT(pDst->pDrawable->pScreen, &region);
- return 0;
- }
+ pSrcPix = exaGetDrawablePixmap (pSrc->pDrawable);
+ pixel = exaGetPixmapFirstPixel (pSrcPix);
+ } else
+ pixel = pSrc->pSourcePict->solidFill.color;
if (!exaGetRGBAFromPixel(pixel, &red, &green, &blue, &alpha,
- pSrc->format))
+ pSrc->pFormat) ||
+ !exaGetPixelFromRGBA(&pixel, red, green, blue, alpha,
+ pDst->pFormat))
{
REGION_UNINIT(pDst->pDrawable->pScreen, &region);
return -1;
}
- if (!exaGetPixelFromRGBA(&pixel, red, green, blue, alpha,
- pDst->format))
- {
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[1];
+
+ pixmaps[0].as_dst = TRUE;
+ pixmaps[0].as_src = FALSE;
+ pixmaps[0].pPix = pDstPix;
+ pixmaps[0].pReg = &region;
+ exaDoMigration(pixmaps, 1, TRUE);
+ }
+
+ if (!exaPixmapIsOffscreen(pDstPix)) {
REGION_UNINIT(pDst->pDrawable->pScreen, &region);
- return -1;
+ return 0;
}
if (!(*pExaScr->info->PrepareSolid) (pDstPix, GXcopy, 0xffffffff, pixel))
@@ -341,17 +341,18 @@ exaTryDriverCompositeRects(CARD8 op,
{
ExaScreenPriv (pDst->pDrawable->pScreen);
int src_off_x, src_off_y, mask_off_x, mask_off_y, dst_off_x, dst_off_y;
- PixmapPtr pSrcPix, pMaskPix = NULL, pDstPix;
- ExaPixmapPrivPtr pSrcExaPix, pMaskExaPix = NULL, pDstExaPix;
- ExaMigrationRec pixmaps[3];
+ PixmapPtr pSrcPix = NULL, pMaskPix = NULL, pDstPix;
+ ExaPixmapPrivPtr pSrcExaPix = NULL, pMaskExaPix = NULL, pDstExaPix;
if (!pExaScr->info->PrepareComposite)
return -1;
- pSrcPix = exaGetDrawablePixmap(pSrc->pDrawable);
- pSrcExaPix = ExaGetPixmapPriv(pSrcPix);
+ if (pSrc->pDrawable) {
+ pSrcPix = exaGetDrawablePixmap(pSrc->pDrawable);
+ pSrcExaPix = ExaGetPixmapPriv(pSrcPix);
+ }
- if (pMask) {
+ if (pMask && pMask->pDrawable) {
pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
pMaskExaPix = ExaGetPixmapPriv(pMaskPix);
}
@@ -363,8 +364,9 @@ exaTryDriverCompositeRects(CARD8 op,
* FIXME: If it cannot, use temporary pixmaps so that the drawing
* happens within limits.
*/
- if (pSrcExaPix->accel_blocked || pDstExaPix->accel_blocked ||
- (pMask && pMaskExaPix->accel_blocked))
+ if (pDstExaPix->accel_blocked ||
+ (pSrcExaPix && pSrcExaPix->accel_blocked) ||
+ (pMaskExaPix && pMaskExaPix->accel_blocked))
{
return -1;
}
@@ -374,36 +376,48 @@ exaTryDriverCompositeRects(CARD8 op,
{
return -1;
}
-
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = exaOpReadsDestination(op);
- pixmaps[0].pPix = pDstPix;
- pixmaps[0].pReg = NULL;
- pixmaps[1].as_dst = FALSE;
- pixmaps[1].as_src = TRUE;
- pixmaps[1].pPix = pSrcPix;
- pixmaps[1].pReg = NULL;
- if (pMask) {
- pixmaps[2].as_dst = FALSE;
- pixmaps[2].as_src = TRUE;
- pixmaps[2].pPix = pMaskPix;
- pixmaps[2].pReg = NULL;
- exaDoMigration(pixmaps, 3, TRUE);
- } else
- exaDoMigration(pixmaps, 2, TRUE);
+
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[3];
+ int i = 0;
+
+ pixmaps[i].as_dst = TRUE;
+ pixmaps[i].as_src = exaOpReadsDestination(op);
+ pixmaps[i].pPix = pDstPix;
+ pixmaps[i].pReg = NULL;
+ i++;
+
+ if (pSrcPix) {
+ pixmaps[i].as_dst = FALSE;
+ pixmaps[i].as_src = TRUE;
+ pixmaps[i].pPix = pSrcPix;
+ pixmaps[i].pReg = NULL;
+ i++;
+ }
+
+ if (pMaskPix) {
+ pixmaps[i].as_dst = FALSE;
+ pixmaps[i].as_src = TRUE;
+ pixmaps[i].pPix = pMaskPix;
+ pixmaps[i].pReg = NULL;
+ i++;
+ }
+
+ exaDoMigration(pixmaps, i, TRUE);
+ }
pDstPix = exaGetOffscreenPixmap (pDst->pDrawable, &dst_off_x, &dst_off_y);
if (!pDstPix)
return 0;
-
- pSrcPix = exaGetOffscreenPixmap (pSrc->pDrawable, &src_off_x, &src_off_y);
- if (!pSrcPix)
- return 0;
+ if (pSrcPix) {
+ pSrcPix = exaGetOffscreenPixmap (pSrc->pDrawable, &src_off_x, &src_off_y);
+ if (!pSrcPix)
+ return 0;
+ }
- if (pMask) {
+ if (pMaskPix) {
pMaskPix = exaGetOffscreenPixmap (pMask->pDrawable, &mask_off_x, &mask_off_y);
-
if (!pMaskPix)
return 0;
}
@@ -416,15 +430,24 @@ exaTryDriverCompositeRects(CARD8 op,
{
INT16 xDst = rects->xDst + pDst->pDrawable->x;
INT16 yDst = rects->yDst + pDst->pDrawable->y;
- INT16 xMask = pMask ? rects->xMask + pMask->pDrawable->x : 0;
- INT16 yMask = pMask ? rects->yMask + pMask->pDrawable->y : 0;
- INT16 xSrc = rects->xSrc + pSrc->pDrawable->x;
- INT16 ySrc = rects->ySrc + pSrc->pDrawable->y;
-
+ INT16 xMask = rects->xMask;
+ INT16 yMask = rects->yMask;
+ INT16 xSrc = rects->xSrc;
+ INT16 ySrc = rects->ySrc;
RegionRec region;
BoxPtr pbox;
int nbox;
-
+
+ if (pMaskPix) {
+ xMask += pMask->pDrawable->x;
+ yMask += pMask->pDrawable->y;
+ }
+
+ if (pSrcPix) {
+ xSrc += pSrc->pDrawable->x;
+ ySrc += pSrc->pDrawable->y;
+ }
+
if (!miComputeCompositeRegion (&region, pSrc, pMask, pDst,
xSrc, ySrc, xMask, yMask, xDst, yDst,
rects->width, rects->height))
@@ -482,8 +505,6 @@ exaCompositeRects(CARD8 op,
ExaCompositeRectPtr rects)
{
ExaScreenPriv (pDst->pDrawable->pScreen);
- PixmapPtr pPixmap = exaGetDrawablePixmap(pDst->pDrawable);
- ExaPixmapPriv(pPixmap);
int n;
ExaCompositeRectPtr r;
int ret;
@@ -491,7 +512,7 @@ exaCompositeRects(CARD8 op,
/* If we get a mask, that means we're rendering to the exaGlyphs
* destination directly, so the damage layer takes care of this.
*/
- if (!pMask && pExaPixmap->pDamage) {
+ if (!pMask) {
RegionRec region;
int x1 = MAXSHORT;
int y1 = MAXSHORT;
@@ -585,7 +606,7 @@ exaCompositeRects(CARD8 op,
/************************************************************/
- if (!pMask && pExaPixmap->pDamage) {
+ if (!pMask) {
/* Now we have to flush the damage out from pendingDamage => damage
* Calling DamageRegionProcessPending has that effect.
*/
@@ -613,17 +634,18 @@ exaTryDriverComposite(CARD8 op,
BoxPtr pbox;
int nbox;
int src_off_x, src_off_y, mask_off_x, mask_off_y, dst_off_x, dst_off_y;
- PixmapPtr pSrcPix, pMaskPix = NULL, pDstPix;
- ExaPixmapPrivPtr pSrcExaPix, pMaskExaPix = NULL, pDstExaPix;
- ExaMigrationRec pixmaps[3];
+ PixmapPtr pSrcPix = NULL, pMaskPix = NULL, pDstPix;
+ ExaPixmapPrivPtr pSrcExaPix = NULL, pMaskExaPix = NULL, pDstExaPix;
- pSrcPix = exaGetDrawablePixmap(pSrc->pDrawable);
- pSrcExaPix = ExaGetPixmapPriv(pSrcPix);
+ if (pSrc->pDrawable) {
+ pSrcPix = exaGetDrawablePixmap(pSrc->pDrawable);
+ pSrcExaPix = ExaGetPixmapPriv(pSrcPix);
+ }
pDstPix = exaGetDrawablePixmap(pDst->pDrawable);
pDstExaPix = ExaGetPixmapPriv(pDstPix);
- if (pMask) {
+ if (pMask && pMask->pDrawable) {
pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
pMaskExaPix = ExaGetPixmapPriv(pMaskPix);
}
@@ -632,8 +654,8 @@ exaTryDriverComposite(CARD8 op,
* FIXME: If it cannot, use temporary pixmaps so that the drawing
* happens within limits.
*/
- if (pSrcExaPix->accel_blocked ||
- pDstExaPix->accel_blocked ||
+ if (pDstExaPix->accel_blocked ||
+ (pSrcExaPix && pSrcExaPix->accel_blocked) ||
(pMask && (pMaskExaPix->accel_blocked)))
{
return -1;
@@ -642,13 +664,15 @@ exaTryDriverComposite(CARD8 op,
xDst += pDst->pDrawable->x;
yDst += pDst->pDrawable->y;
- if (pMask) {
+ if (pMaskPix) {
xMask += pMask->pDrawable->x;
yMask += pMask->pDrawable->y;
}
- xSrc += pSrc->pDrawable->x;
- ySrc += pSrc->pDrawable->y;
+ if (pSrcPix) {
+ xSrc += pSrc->pDrawable->x;
+ ySrc += pSrc->pDrawable->y;
+ }
if (pExaScr->info->CheckComposite &&
!(*pExaScr->info->CheckComposite) (op, pSrc, pMask, pDst))
@@ -665,35 +689,53 @@ exaTryDriverComposite(CARD8 op,
REGION_TRANSLATE(pScreen, &region, dst_off_x, dst_off_y);
- pixmaps[0].as_dst = TRUE;
- pixmaps[0].as_src = exaOpReadsDestination(op);
- pixmaps[0].pPix = pDstPix;
- pixmaps[0].pReg = pixmaps[0].as_src ? NULL : &region;
- pixmaps[1].as_dst = FALSE;
- pixmaps[1].as_src = TRUE;
- pixmaps[1].pPix = pSrcPix;
- pixmaps[1].pReg = NULL;
- if (pMask) {
- pixmaps[2].as_dst = FALSE;
- pixmaps[2].as_src = TRUE;
- pixmaps[2].pPix = pMaskPix;
- pixmaps[2].pReg = NULL;
- exaDoMigration(pixmaps, 3, TRUE);
- } else {
- exaDoMigration(pixmaps, 2, TRUE);
+ if (pExaScr->do_migration) {
+ ExaMigrationRec pixmaps[3];
+ int i = 0;
+
+ pixmaps[i].as_dst = TRUE;
+ pixmaps[i].as_src = exaOpReadsDestination(op);
+ pixmaps[i].pPix = pDstPix;
+ pixmaps[i].pReg = pixmaps[0].as_src ? NULL : &region;
+ i++;
+
+ if (pSrcPix) {
+ pixmaps[i].as_dst = FALSE;
+ pixmaps[i].as_src = TRUE;
+ pixmaps[i].pPix = pSrcPix;
+ pixmaps[i].pReg = NULL;
+ i++;
+ }
+
+ if (pMaskPix) {
+ pixmaps[i].as_dst = FALSE;
+ pixmaps[i].as_src = TRUE;
+ pixmaps[i].pPix = pMaskPix;
+ pixmaps[i].pReg = NULL;
+ i++;
+ }
+
+ exaDoMigration(pixmaps, i, TRUE);
}
- pSrcPix = exaGetOffscreenPixmap (pSrc->pDrawable, &src_off_x, &src_off_y);
- if (pMask)
+ if (pSrcPix) {
+ pSrcPix = exaGetOffscreenPixmap (pSrc->pDrawable, &src_off_x, &src_off_y);
+ if (!pSrcPix) {
+ REGION_UNINIT(pDst->pDrawable->pScreen, &region);
+ return 0;
+ }
+ }
+
+ if (pMaskPix) {
pMaskPix = exaGetOffscreenPixmap (pMask->pDrawable, &mask_off_x,
&mask_off_y);
-
- if (!exaPixmapIsOffscreen(pDstPix)) {
- REGION_UNINIT(pDst->pDrawable->pScreen, &region);
- return 0;
+ if (!pMaskPix) {
+ REGION_UNINIT(pDst->pDrawable->pScreen, &region);
+ return 0;
+ }
}
- if (!pSrcPix || (pMask && !pMaskPix)) {
+ if (!exaPixmapIsOffscreen(pDstPix)) {
REGION_UNINIT(pDst->pDrawable->pScreen, &region);
return 0;
}
@@ -844,43 +886,44 @@ exaComposite(CARD8 op,
Bool saveMaskRepeat = pMask ? pMask->repeat : 0;
RegionRec region;
- /* We currently don't support acceleration of gradients, or other pictures
- * with a NULL pDrawable.
- */
- if (pExaScr->swappedOut ||
- pSrc->pDrawable == NULL || (pMask != NULL && pMask->pDrawable == NULL))
- {
+ if (pExaScr->swappedOut)
goto fallback;
- }
/* Remove repeat in source if useless */
- if (pSrc->repeat && !pSrc->transform && xSrc >= 0 &&
+ if (pSrc->pDrawable && pSrc->repeat && !pSrc->transform && xSrc >= 0 &&
(xSrc + width) <= pSrc->pDrawable->width && ySrc >= 0 &&
(ySrc + height) <= pSrc->pDrawable->height)
pSrc->repeat = 0;
- if (!pMask)
+ if (!pMask && !pSrc->alphaMap && !pDst->alphaMap &&
+ (op == PictOpSrc || (op == PictOpOver && !PICT_FORMAT_A(pSrc->format))))
{
- if ((op == PictOpSrc &&
- ((pSrc->format == pDst->format) ||
- (pSrc->format==PICT_a8r8g8b8 && pDst->format==PICT_x8r8g8b8) ||
- (pSrc->format==PICT_a8b8g8r8 && pDst->format==PICT_x8b8g8r8))) ||
- (op == PictOpOver && !pSrc->alphaMap && !pDst->alphaMap &&
- pSrc->format == pDst->format &&
- (pSrc->format==PICT_x8r8g8b8 || pSrc->format==PICT_x8b8g8r8)))
+ if (pSrc->pDrawable ?
+ (pSrc->pDrawable->width == 1 && pSrc->pDrawable->height == 1 &&
+ pSrc->repeat) :
+ (pSrc->pSourcePict->type == SourcePictTypeSolidFill))
{
- if (pSrc->pDrawable->width == 1 &&
- pSrc->pDrawable->height == 1 &&
- pSrc->repeat)
- {
- ret = exaTryDriverSolidFill(pSrc, pDst, xSrc, ySrc, xDst, yDst,
- width, height);
- if (ret == 1)
- goto done;
- }
- else if (pSrc->pDrawable != NULL &&
- !pSrc->repeat &&
- !pSrc->transform)
+ ret = exaTryDriverSolidFill(pSrc, pDst, xSrc, ySrc, xDst, yDst,
+ width, height);
+ if (ret == 1)
+ goto done;
+ } else if (pSrc->pDrawable && !pSrc->transform &&
+ ((op == PictOpSrc &&
+ (pSrc->format == pDst->format ||
+ (PICT_FORMAT_COLOR(pDst->format) &&
+ PICT_FORMAT_COLOR(pSrc->format) &&
+ pDst->format == PICT_FORMAT(PICT_FORMAT_BPP(pSrc->format),
+ PICT_FORMAT_TYPE(pSrc->format),
+ 0,
+ PICT_FORMAT_R(pSrc->format),
+ PICT_FORMAT_G(pSrc->format),
+ PICT_FORMAT_B(pSrc->format))))) ||
+ (op == PictOpOver && pSrc->format == pDst->format &&
+ !PICT_FORMAT_A(pSrc->format))))
+ {
+ if (!pSrc->repeat && xSrc >= 0 && ySrc >= 0 &&
+ (xSrc + width <= pSrc->pDrawable->width) &&
+ (ySrc + height <= pSrc->pDrawable->height))
{
Bool ret;
xDst += pDst->pDrawable->x;
@@ -909,10 +952,9 @@ exaComposite(CARD8 op,
goto done;
}
- else if (pSrc->pDrawable != NULL &&
- pSrc->pDrawable->type == DRAWABLE_PIXMAP &&
- !pSrc->transform &&
- pSrc->repeatType == RepeatNormal)
+
+ if (pSrc->repeat && pSrc->repeatType == RepeatNormal &&
+ pSrc->pDrawable->type == DRAWABLE_PIXMAP)
{
DDXPointRec patOrg;
@@ -962,9 +1004,9 @@ exaComposite(CARD8 op,
}
/* Remove repeat in mask if useless */
- if (pMask && pMask->repeat && !pMask->transform && xMask >= 0 &&
- (xMask + width) <= pMask->pDrawable->width && yMask >= 0 &&
- (yMask + height) <= pMask->pDrawable->height)
+ if (pMask && pMask->pDrawable && pMask->repeat && !pMask->transform &&
+ xMask >= 0 && (xMask + width) <= pMask->pDrawable->width &&
+ yMask >= 0 && (yMask + height) <= pMask->pDrawable->height)
pMask->repeat = 0;
if (pExaScr->info->PrepareComposite &&
@@ -980,9 +1022,10 @@ exaComposite(CARD8 op,
/* For generic masks and solid src pictures, mach64 can do Over in two
* passes, similar to the component-alpha case.
*/
- isSrcSolid = pSrc->pDrawable->width == 1 &&
- pSrc->pDrawable->height == 1 &&
- pSrc->repeat;
+ isSrcSolid = pSrc->pDrawable ?
+ (pSrc->pDrawable->width == 1 && pSrc->pDrawable->height == 1 &&
+ pSrc->repeat) :
+ (pSrc->pSourcePict->type == SourcePictTypeSolidFill);
/* If we couldn't do the Composite in a single pass, and it was a
* component-alpha Over, see if we can do it in two passes with
diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
index 0d53b67d8..f4700adac 100644
--- a/exa/exa_unaccel.c
+++ b/exa/exa_unaccel.c
@@ -492,58 +492,37 @@ ExaCheckAddTraps (PicturePtr pPicture,
/**
* Gets the 0,0 pixel of a pixmap. Used for doing solid fills of tiled pixmaps
* that happen to be 1x1. Pixmap must be at least 8bpp.
- *
- * XXX This really belongs in fb, so it can be aware of tiling and etc.
*/
CARD32
exaGetPixmapFirstPixel (PixmapPtr pPixmap)
{
- CARD32 pixel;
- void *fb;
- Bool need_finish = FALSE;
- BoxRec box;
- RegionRec migration;
- ExaPixmapPriv (pPixmap);
- Bool sys_valid = pExaPixmap->pDamage &&
- !miPointInRegion(&pExaPixmap->validSys, 0, 0, &box);
- Bool damaged = pExaPixmap->pDamage &&
- miPointInRegion(DamageRegion(pExaPixmap->pDamage), 0, 0, &box);
- Bool offscreen = exaPixmapIsOffscreen(pPixmap);
-
- fb = pExaPixmap->sys_ptr;
-
- /* Try to avoid framebuffer readbacks */
- if ((!offscreen && !sys_valid && !damaged) ||
- (offscreen && (!sys_valid || damaged)))
- {
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = 1;
- box.y2 = 1;
- REGION_INIT(pScreen, &migration, &box, 1);
-
- need_finish = TRUE;
-
- exaPrepareAccessReg(&pPixmap->drawable, EXA_PREPARE_SRC, &migration);
- fb = pPixmap->devPrivate.ptr;
- }
-
switch (pPixmap->drawable.bitsPerPixel) {
case 32:
- pixel = *(CARD32 *)fb;
- break;
+ {
+ CARD32 pixel;
+
+ pPixmap->drawable.pScreen->GetImage(&pPixmap->drawable, 0, 0, 1, 1,
+ ZPixmap, ~0, (char*)&pixel);
+ return pixel;
+ }
case 16:
- pixel = *(CARD16 *)fb;
- break;
+ {
+ CARD16 pixel;
+
+ pPixmap->drawable.pScreen->GetImage(&pPixmap->drawable, 0, 0, 1, 1,
+ ZPixmap, ~0, (char*)&pixel);
+ return pixel;
+ }
+ case 8:
+ {
+ CARD8 pixel;
+
+ pPixmap->drawable.pScreen->GetImage(&pPixmap->drawable, 0, 0, 1, 1,
+ ZPixmap, ~0, (char*)&pixel);
+ return pixel;
+ }
default:
- pixel = *(CARD8 *)fb;
- break;
+ FatalError("%s called for invalid bpp %d\n", __func__,
+ pPixmap->drawable.bitsPerPixel);
}
-
- if (need_finish) {
- exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
- REGION_UNINIT(pScreen, &migration);
- }
-
- return pixel;
}
diff --git a/fb/fb.h b/fb/fb.h
index 2d3c85d44..c35e7654b 100644
--- a/fb/fb.h
+++ b/fb/fb.h
@@ -487,22 +487,34 @@ extern _X_EXPORT void fbSetBits (FbStip *bits, int stride, FbStip data);
* The term "lane" comes from the hardware term "byte-lane" which
*/
-#define FbLaneCase1(n,a,o) ((n) == 0x01 ? (void) \
- WRITE((CARD8 *) ((a)+FbPatternOffset(o,CARD8)), \
- fgxor) : (void) 0)
-#define FbLaneCase2(n,a,o) ((n) == 0x03 ? (void) \
- WRITE((CARD16 *) ((a)+FbPatternOffset(o,CARD16)), \
- fgxor) : \
- ((void)FbLaneCase1((n)&1,a,o), \
- FbLaneCase1((n)>>1,a,(o)+1)))
-#define FbLaneCase4(n,a,o) ((n) == 0x0f ? (void) \
- WRITE((CARD32 *) ((a)+FbPatternOffset(o,CARD32)), \
- fgxor) : \
- ((void)FbLaneCase2((n)&3,a,o), \
- FbLaneCase2((n)>>2,a,(o)+2)))
-#define FbLaneCase8(n,a,o) ((n) == 0x0ff ? (void) (*(FbBits *) ((a)+(o)) = fgxor) : \
- ((void)FbLaneCase4((n)&15,a,o), \
- FbLaneCase4((n)>>4,a,(o)+4)))
+#define FbLaneCase1(n,a,o) \
+ if ((n) == 0x01) { \
+ WRITE((CARD8 *) ((a)+FbPatternOffset(o,CARD8)), fgxor); \
+ }
+
+#define FbLaneCase2(n,a,o) \
+ if ((n) == 0x03) { \
+ WRITE((CARD16 *) ((a)+FbPatternOffset(o,CARD16)), fgxor); \
+ } else { \
+ FbLaneCase1((n)&1,a,o) \
+ FbLaneCase1((n)>>1,a,(o)+1) \
+ }
+
+#define FbLaneCase4(n,a,o) \
+ if ((n) == 0x0f) { \
+ WRITE((CARD32 *) ((a)+FbPatternOffset(o,CARD32)), fgxor); \
+ } else { \
+ FbLaneCase2((n)&3,a,o) \
+ FbLaneCase2((n)>>2,a,(o)+2) \
+ }
+
+#define FbLaneCase8(n,a,o) \
+ if ((n) == 0x0ff) { \
+ *(FbBits *) ((a)+(o)) = fgxor; \
+ } else { \
+ FbLaneCase4((n)&15,a,o) \
+ FbLaneCase4((n)>>4,a,(o)+4) \
+ }
#if FB_SHIFT == 6
#define FbLaneCase(n,a) FbLaneCase8(n,(CARD8 *) (a),0)
diff --git a/fb/fbbltone.c b/fb/fbbltone.c
index ffe69775a..5d5d2e6bf 100644
--- a/fb/fbbltone.c
+++ b/fb/fbbltone.c
@@ -59,7 +59,7 @@
#ifndef FBNOPIXADDR
-#define LaneCases1(n,a) case n: (void)FbLaneCase(n,a); break
+#define LaneCases1(n,a) case n: FbLaneCase(n,a); break
#define LaneCases2(n,a) LaneCases1(n,a); LaneCases1(n+1,a)
#define LaneCases4(n,a) LaneCases2(n,a); LaneCases2(n+2,a)
#define LaneCases8(n,a) LaneCases4(n,a); LaneCases4(n+4,a)
diff --git a/fb/fbpict.c b/fb/fbpict.c
index 32052e9e2..dd9cefe15 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
@@ -159,9 +159,9 @@ fbComposite (CARD8 op,
{
pixman_image_t *src, *mask, *dest;
- miCompositeSourceValidate (pSrc, xSrc - xDst, ySrc - yDst, width, height);
+ miCompositeSourceValidate (pSrc, xSrc, ySrc, width, height);
if (pMask)
- miCompositeSourceValidate (pMask, xMask - xDst, yMask - yDst, width, height);
+ miCompositeSourceValidate (pMask, xMask, yMask, width, height);
src = image_from_pict (pSrc, TRUE, TRUE);
mask = image_from_pict (pMask, TRUE, TRUE);
@@ -275,7 +275,7 @@ copy_drawable (DrawablePtr pDraw)
PixmapPtr pPixmap;
GCPtr pGC;
int width, height;
- ChangeGCVal gcv[1];
+ ChangeGCVal gcv[2];
width = pDraw->width;
height = pDraw->height;
@@ -295,7 +295,8 @@ copy_drawable (DrawablePtr pDraw)
/* First fill the pixmap with zeros */
gcv[0].val = 0x00000000;
- dixChangeGC (NullClient, pGC, GCBackground, NULL, gcv);
+ gcv[1].val = IncludeInferiors;
+ dixChangeGC (NullClient, pGC, GCBackground | GCSubwindowMode, NULL, gcv);
ValidateGC ((DrawablePtr)pPixmap, pGC);
miClearDrawable ((DrawablePtr)pPixmap, pGC);
diff --git a/fb/fbpict.h b/fb/fbpict.h
index 0a8082ec0..b89f90ff1 100644
--- a/fb/fbpict.h
+++ b/fb/fbpict.h
@@ -95,6 +95,8 @@ fbCanGetSolid(PicturePtr pict)
case PICT_x8r8g8b8:
case PICT_a8b8g8r8:
case PICT_x8b8g8r8:
+ case PICT_b8g8r8a8:
+ case PICT_b8g8r8x8:
case PICT_r8g8b8:
case PICT_b8g8r8:
case PICT_r5g6b5:
diff --git a/fb/fbstipple.c b/fb/fbstipple.c
index 7d1326367..bc25e462f 100644
--- a/fb/fbstipple.c
+++ b/fb/fbstipple.c
@@ -33,7 +33,7 @@
* transparent stipple
*/
#define LaneCases1(c,a) case c: \
- while (n--) { (void)FbLaneCase(c,a); a++; } \
+ while (n--) { FbLaneCase(c,a); a++; } \
break
#define LaneCases2(c,a) LaneCases1(c,a); LaneCases1(c+1,a)
#define LaneCases4(c,a) LaneCases2(c,a); LaneCases2(c+2,a)
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index d4ff7daf3..f5632d162 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -51,12 +51,6 @@
#include "indirect_table.h"
#include "indirect_util.h"
-void
-GlxSetRenderTables (struct _glapi_table *table)
-{
- _glapi_set_dispatch (table);
-}
-
static int
validGlxScreen(ClientPtr client, int screen, __GLXscreen **pGlxScreen, int *err)
{
diff --git a/glx/glxdrawable.h b/glx/glxdrawable.h
index 0215b3b20..3f165ed4f 100644
--- a/glx/glxdrawable.h
+++ b/glx/glxdrawable.h
@@ -35,8 +35,6 @@
* Silicon Graphics, Inc.
*/
-#include <damage.h>
-
/* We just need to avoid clashing with DRAWABLE_{WINDOW,PIXMAP} */
enum {
GLX_DRAWABLE_WINDOW,
diff --git a/glx/glxdri.c b/glx/glxdri.c
index 5fb75a41f..c9d226bdf 100644
--- a/glx/glxdri.c
+++ b/glx/glxdri.c
@@ -38,6 +38,7 @@
#include <windowstr.h>
#include <os.h>
+#include <damage.h>
#define _XF86DRI_SERVER_
#include <drm_sarea.h>
diff --git a/glx/glxdri2.c b/glx/glxdri2.c
index 529b2df10..ed7fb4c4b 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -551,6 +551,15 @@ initializeExtensions(__GLXDRIscreen *screen)
LogMessage(X_INFO, "AIGLX: enabled GLX_MESA_copy_sub_buffer\n");
for (i = 0; extensions[i]; i++) {
+#ifdef __DRI_READ_DRAWABLE
+ if (strcmp(extensions[i]->name, __DRI_READ_DRAWABLE) == 0) {
+ __glXEnableExtension(screen->glx_enable_bits,
+ "GLX_SGI_make_current_read");
+
+ LogMessage(X_INFO, "AIGLX: enabled GLX_SGI_make_current_read\n");
+ }
+#endif
+
#ifdef __DRI_SWAP_CONTROL
if (strcmp(extensions[i]->name, __DRI_SWAP_CONTROL) == 0) {
screen->swapControl =
diff --git a/glx/glxext.c b/glx/glxext.c
index 520eb2e3f..19d70d495 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -128,8 +128,31 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid)
for (c = glxAllContexts; c; c = c->next) {
if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
+ int i;
+
(*c->loseCurrent)(c);
- __glXFlushContextCache();
+ c->isCurrent = GL_FALSE;
+ if (c == __glXLastContext)
+ __glXFlushContextCache();
+
+ for (i = 1; i < currentMaxClients; i++) {
+ if (clients[i]) {
+ __GLXclientState *cl = glxGetClient(clients[i]);
+
+ if (cl->inUse) {
+ int j;
+
+ for (j = 0; j < cl->numCurrentContexts; j++) {
+ if (cl->currentContexts[j] == c)
+ cl->currentContexts[j] = NULL;
+ }
+ }
+ }
+ }
+
+ if (!c->idExists) {
+ __glXFreeContext(c);
+ }
}
if (c->drawPriv == glxPriv)
c->drawPriv = NULL;
@@ -148,7 +171,7 @@ void __glXAddToContextList(__GLXcontext *cx)
glxAllContexts = cx;
}
-void __glXRemoveFromContextList(__GLXcontext *cx)
+static void __glXRemoveFromContextList(__GLXcontext *cx)
{
__GLXcontext *c, *prev;
diff --git a/glx/glxscreens.c b/glx/glxscreens.c
index 3fff26866..81faddd04 100644
--- a/glx/glxscreens.c
+++ b/glx/glxscreens.c
@@ -212,6 +212,7 @@ glxCloseScreen (int index, ScreenPtr pScreen)
__GLXscreen *pGlxScreen = glxGetScreen(pScreen);
pScreen->CloseScreen = pGlxScreen->CloseScreen;
+ pScreen->DestroyWindow = pGlxScreen->DestroyWindow;
pGlxScreen->destroy(pGlxScreen);
@@ -395,6 +396,31 @@ pickFBConfig(__GLXscreen *pGlxScreen, VisualPtr visual)
return best;
}
+static Bool
+glxDestroyWindow(WindowPtr pWin)
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+ __GLXscreen *pGlxScreen = glxGetScreen(pScreen);
+ Bool retval = TRUE;
+
+ FreeResource(pWin->drawable.id, FALSE);
+
+ /* call lower wrapped functions */
+ if (pGlxScreen->DestroyWindow) {
+ /* unwrap */
+ pScreen->DestroyWindow = pGlxScreen->DestroyWindow;
+
+ /* call lower layers */
+ retval = (*pScreen->DestroyWindow)(pWin);
+
+ /* rewrap */
+ pGlxScreen->DestroyWindow = pScreen->DestroyWindow;
+ pScreen->DestroyWindow = glxDestroyWindow;
+ }
+
+ return retval;
+}
+
void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
{
__GLXconfig *m;
@@ -409,6 +435,8 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
pGlxScreen->CloseScreen = pScreen->CloseScreen;
pScreen->CloseScreen = glxCloseScreen;
+ pGlxScreen->DestroyWindow = pScreen->DestroyWindow;
+ pScreen->DestroyWindow = glxDestroyWindow;
i = 0;
for (m = pGlxScreen->fbconfigs; m != NULL; m = m->next) {
diff --git a/glx/glxscreens.h b/glx/glxscreens.h
index 34e441e7c..3c1bdd4ba 100644
--- a/glx/glxscreens.h
+++ b/glx/glxscreens.h
@@ -162,6 +162,7 @@ struct __GLXscreen {
char *GLXextensions;
Bool (*CloseScreen)(int index, ScreenPtr pScreen);
+ Bool (*DestroyWindow)(WindowPtr pWindow);
};
diff --git a/glx/glxserver.h b/glx/glxserver.h
index 3e44b71fb..46c938268 100644
--- a/glx/glxserver.h
+++ b/glx/glxserver.h
@@ -94,9 +94,6 @@ void GlxExtensionInit(void);
void GlxSetVisualConfigs(int nconfigs,
void *configs, void **privates);
-struct _glapi_table;
-void GlxSetRenderTables (struct _glapi_table *table);
-
void __glXScreenInitVisuals(__GLXscreen *screen);
/*
diff --git a/glx/indirect_util.c b/glx/indirect_util.c
index 58c194c99..44309104e 100644
--- a/glx/indirect_util.c
+++ b/glx/indirect_util.c
@@ -126,7 +126,7 @@ __glXSendReply( ClientPtr client, const void * data, size_t elements,
elements = 0;
}
else if ( (elements > 1) || always_array ) {
- reply_ints = ((elements * element_size) + 3) >> 2;
+ reply_ints = bytes_to_int32(elements * element_size);
}
__glXReply.length = reply_ints;
@@ -174,7 +174,7 @@ __glXSendReplySwap( ClientPtr client, const void * data, size_t elements,
elements = 0;
}
else if ( (elements > 1) || always_array ) {
- reply_ints = ((elements * element_size) + 3) >> 2;
+ reply_ints = bytes_to_int32(elements * element_size);
}
__glXReply.length = bswap_32( reply_ints );
diff --git a/glx/rensize.c b/glx/rensize.c
index 5c6b1500d..8a58e08d7 100644
--- a/glx/rensize.c
+++ b/glx/rensize.c
@@ -195,7 +195,7 @@ int __glXImageSize( GLenum format, GLenum type, GLenum target,
} else {
groupsPerRow = w;
}
- rowSize = (groupsPerRow + 7) >> 3;
+ rowSize = bits_to_bytes(groupsPerRow);
padding = (rowSize % alignment);
if (padding) {
rowSize += alignment - padding;
diff --git a/glx/singlepix.c b/glx/singlepix.c
index 7b2cb4ca6..a0a6a7918 100644
--- a/glx/singlepix.c
+++ b/glx/singlepix.c
@@ -91,6 +91,7 @@ int __glXDisp_ReadPixels(__GLXclientState *cl, GLbyte *pc)
__GLX_SEND_HEADER();
__GLX_SEND_VOID_ARRAY(compsize);
}
+ __GLX_NOTE_FLUSHED_CMDS(cx);
return Success;
}
diff --git a/glx/singlepixswap.c b/glx/singlepixswap.c
index 143f2049a..a7febc9a6 100644
--- a/glx/singlepixswap.c
+++ b/glx/singlepixswap.c
@@ -102,6 +102,7 @@ int __glXDispSwap_ReadPixels(__GLXclientState *cl, GLbyte *pc)
__GLX_SEND_HEADER();
__GLX_SEND_VOID_ARRAY(compsize);
}
+ __GLX_NOTE_FLUSHED_CMDS(cx);
return Success;
}
diff --git a/hw/dmx/dmx.c b/hw/dmx/dmx.c
index 56e5bb64a..87d408d7e 100644
--- a/hw/dmx/dmx.c
+++ b/hw/dmx/dmx.c
@@ -360,10 +360,10 @@ static int ProcDMXGetScreenAttributes(ClientPtr client)
rep.rootWindowYorigin = attr.rootWindowYorigin;
length = attr.displayName ? strlen(attr.displayName) : 0;
- paddedLength = (length + 3) & ~3;
+ paddedLength = pad_to_int32(length);
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
- rep.length = paddedLength >> 2;
+ rep.length = bytes_to_int32(paddedLength);
rep.displayNameLength = length;
if (client->swapped) {
@@ -405,7 +405,7 @@ static int ProcDMXChangeScreensAttributes(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xDMXChangeScreensAttributesReq);
- len = client->req_len - (sizeof(xDMXChangeScreensAttributesReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xDMXChangeScreensAttributesReq));
if (len < stuff->screenCount + stuff->maskCount)
return BadLength;
@@ -474,8 +474,8 @@ static int ProcDMXAddScreen(ClientPtr client)
int paddedLength;
REQUEST_AT_LEAST_SIZE(xDMXAddScreenReq);
- paddedLength = (stuff->displayNameLength + 3) & ~3;
- len = client->req_len - (sizeof(xDMXAddScreenReq) >> 2);
+ paddedLength = pad_to_int32(stuff->displayNameLength);
+ len = client->req_len - bytes_to_int32(sizeof(xDMXAddScreenReq));
if (len != Ones(stuff->valueMask) + paddedLength/4)
return BadLength;
@@ -795,10 +795,10 @@ static int ProcDMXGetInputAttributes(ClientPtr client)
rep.detached = attr.detached;
length = attr.name ? strlen(attr.name) : 0;
- paddedLength = (length + 3) & ~3;
+ paddedLength = pad_to_int32(length);
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
- rep.length = paddedLength >> 2;
+ rep.length = bytes_to_int32(paddedLength);
rep.nameLength = length;
if (client->swapped) {
swaps(&rep.sequenceNumber, n);
@@ -828,7 +828,7 @@ static int ProcDMXAddInput(ClientPtr client)
int id = -1;
REQUEST_AT_LEAST_SIZE(xDMXAddInputReq);
- paddedLength = (stuff->displayNameLength + 3) & ~3;
+ paddedLength = pad_to_int32(stuff->displayNameLength);
len = client->req_len - (sizeof(xDMXAddInputReq) >> 2);
if (len != Ones(stuff->valueMask) + paddedLength/4)
return BadLength;
@@ -997,7 +997,7 @@ static int SProcDMXAddScreen(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xDMXAddScreenReq);
swapl(&stuff->displayNameLength, n);
swapl(&stuff->valueMask, n);
- paddedLength = (stuff->displayNameLength + 3) & ~3;
+ paddedLength = pad_to_int32(stuff->displayNameLength);
SwapLongs((CARD32 *)(stuff+1), LengthRestL(stuff) - paddedLength/4);
return ProcDMXAddScreen(client);
}
@@ -1077,7 +1077,7 @@ static int SProcDMXAddInput(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xDMXAddInputReq);
swapl(&stuff->displayNameLength, n);
swapl(&stuff->valueMask, n);
- paddedLength = (stuff->displayNameLength + 3) & ~3;
+ paddedLength = pad_to_int32(stuff->displayNameLength);
SwapLongs((CARD32 *)(stuff+1), LengthRestL(stuff) - paddedLength/4);
return ProcDMXAddInput(client);
}
diff --git a/hw/dmx/dmxcursor.c b/hw/dmx/dmxcursor.c
index 32934bbad..e8a18451f 100644
--- a/hw/dmx/dmxcursor.c
+++ b/hw/dmx/dmxcursor.c
@@ -90,6 +90,7 @@
#include "globals.h"
#include "cursorstr.h"
#include "dixevents.h" /* For GetSpriteCursor() */
+#include "inputstr.h" /* for inputInfo.pointer */
#if DMX_CURSOR_DEBUG
#define DMXDBG0(f) dmxLog(dmxDebug,f)
diff --git a/hw/dmx/dmxscrinit.c b/hw/dmx/dmxscrinit.c
index 736075094..b5afb5839 100644
--- a/hw/dmx/dmxscrinit.c
+++ b/hw/dmx/dmxscrinit.c
@@ -68,7 +68,7 @@ static unsigned long dmxGeneration;
static unsigned long *dmxCursorGeneration;
static int dmxGCPrivateKeyIndex;
-DevPrivateKey dmxGCPrivateKey = &dmxGCPrivateKey; /**< Private index for GCs */
+DevPrivateKey dmxGCPrivateKey = &dmxGCPrivateKeyIndex; /**< Private index for GCs */
static int dmxWinPrivateKeyIndex;
DevPrivateKey dmxWinPrivateKey = &dmxWinPrivateKeyIndex; /**< Private index for Windows */
static int dmxPixPrivateKeyIndex;
diff --git a/hw/dmx/glxProxy/glxsingle.c b/hw/dmx/glxProxy/glxsingle.c
index 4d2d45bb0..dcc604052 100644
--- a/hw/dmx/glxProxy/glxsingle.c
+++ b/hw/dmx/glxProxy/glxsingle.c
@@ -902,7 +902,7 @@ int __glXDisp_ReadPixels(__GLXclientState *cl, GLbyte *pc)
else {
/* this is a GL_BITMAP pixel type, should copy bits */
int r;
- int src_rowsize = ((sw * ebits) + 7) / 8;
+ int src_rowsize = bits_to_bytes(sw * ebits);
int src_pad = src_rowsize % 4;
if ( src_pad ) {
src_rowsize += (4 - src_pad);
diff --git a/hw/dmx/input/dmxevents.c b/hw/dmx/input/dmxevents.c
index 24275a189..37f8cb33b 100644
--- a/hw/dmx/input/dmxevents.c
+++ b/hw/dmx/input/dmxevents.c
@@ -56,6 +56,7 @@
#include "inputstr.h"
#include "mipointer.h"
#include "mi.h"
+#include "exglobals.h"
#include "XIstubs.h"
@@ -99,7 +100,6 @@ static int dmxCheckFunctionKeys(DMXLocalInputInfoPtr dmxLocal,
KeySym keySym)
{
DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx];
- unsigned short state = 0;
#if 1 /* hack to detect ctrl-alt-q, etc */
static int ctrl = 0, alt = 0;
@@ -119,6 +119,8 @@ static int dmxCheckFunctionKeys(DMXLocalInputInfoPtr dmxLocal,
if (!ctrl || !alt)
return 0;
#else
+ unsigned short state = 0;
+
if (dmxLocal->sendsCore)
state = dmxLocalCoreKeyboard->pDevice->key->state;
else if (dmxLocal->pDevice->key)
@@ -236,7 +238,7 @@ static void enqueueMotion(DevicePtr pDev, int x, int y)
nevents = GetPointerEvents(events, p, MotionNotify, detail,
POINTER_ABSOLUTE, 0, 2, valuators);
for (i = 0; i < nevents; i++)
- mieqEnqueue(p, (events + i)->event);
+ mieqEnqueue(p, (InternalEvent*)(events + i)->event);
return;
}
@@ -694,7 +696,7 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
/*ErrorF("KEY %d sym %d\n", detail, (int) keySym);*/
nevents = GetKeyboardEvents(events, p, type, detail);
for (i = 0; i < nevents; i++)
- mieqEnqueue(p, (events + i)->event);
+ mieqEnqueue(p, (InternalEvent*)(events + i)->event);
return;
case ButtonPress:
@@ -707,7 +709,7 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
0, /* num_valuators = 0 */
valuators);
for (i = 0; i < nevents; i++)
- mieqEnqueue(p, (events + i)->event);
+ mieqEnqueue(p, (InternalEvent*)(events + i)->event);
return;
case MotionNotify:
@@ -718,7 +720,7 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
nevents = GetPointerEvents(events, p, type, detail,
POINTER_ABSOLUTE, 0, 3, valuators);
for (i = 0; i < nevents; i++)
- mieqEnqueue(p, (events + i)->event);
+ mieqEnqueue(p, (InternalEvent*)(events + i)->event);
return;
case EnterNotify:
diff --git a/hw/dmx/input/dmxinputinit.c b/hw/dmx/input/dmxinputinit.c
index 29895c7f7..666db2138 100644
--- a/hw/dmx/input/dmxinputinit.c
+++ b/hw/dmx/input/dmxinputinit.c
@@ -78,14 +78,6 @@
#include "exevents.h"
#include "extinit.h"
-/* From XI.h */
-#ifndef Relative
-#define Relative 0
-#endif
-#ifndef Absolute
-#define Absolute 1
-#endif
-
DMXLocalInputInfoPtr dmxLocalCorePointer, dmxLocalCoreKeyboard;
static DMXLocalInputInfoRec DMXDummyMou = {
@@ -381,12 +373,15 @@ static void dmxKeyboardFreeNames(XkbComponentNamesPtr names)
static int dmxKeyboardOn(DeviceIntPtr pDevice, DMXLocalInitInfo *info)
{
GETDMXINPUTFROMPDEVICE;
+ XkbRMLVOSet rmlvo;
+
+ rmlvo.rules = dmxConfigGetXkbRules();
+ rmlvo.model = dmxConfigGetXkbModel();
+ rmlvo.layout = dmxConfigGetXkbLayout();
+ rmlvo.variant = dmxConfigGetXkbVariant();
+ rmlvo.options = dmxConfigGetXkbOptions();
- XkbSetRulesDflts(dmxConfigGetXkbRules(),
- dmxConfigGetXkbModel(),
- dmxConfigGetXkbLayout(),
- dmxConfigGetXkbVariant(),
- dmxConfigGetXkbOptions());
+ XkbSetRulesDflts(&rmlvo);
if (!info->force && (dmxInput->keycodes
|| dmxInput->symbols
|| dmxInput->geometry)) {
@@ -441,7 +436,9 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
int fd;
DMXLocalInitInfo info;
int i;
-
+ Atom btn_labels[MAX_BUTTONS] = {0}; /* FIXME */
+ Atom axis_labels[MAX_VALUATORS] = {0}; /* FIXME */
+
if (dmxInput->detached) return Success;
memset(&info, 0, sizeof(info));
@@ -462,31 +459,38 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
dmxBell, dmxKbdCtrl);
}
if (info.buttonClass) {
- InitButtonClassDeviceStruct(pDevice, info.numButtons, info.map);
+ InitButtonClassDeviceStruct(pDevice, info.numButtons,
+ btn_labels, info.map);
}
if (info.valuatorClass) {
if (info.numRelAxes && dmxLocal->sendsCore) {
InitValuatorClassDeviceStruct(pDevice, info.numRelAxes,
+ axis_labels,
GetMaximumEventsNum(),
Relative);
for (i = 0; i < info.numRelAxes; i++)
- InitValuatorAxisStruct(pDevice, i, info.minval[0],
- info.maxval[0], info.res[0],
+ InitValuatorAxisStruct(pDevice, i, axis_labels[i],
+ info.minval[0], info.maxval[0],
+ info.res[0],
info.minres[0], info.maxres[0]);
} else if (info.numRelAxes) {
InitValuatorClassDeviceStruct(pDevice, info.numRelAxes,
+ axis_labels,
dmxPointerGetMotionBufferSize(),
Relative);
for (i = 0; i < info.numRelAxes; i++)
- InitValuatorAxisStruct(pDevice, i, info.minval[0],
+ InitValuatorAxisStruct(pDevice, i, axis_labels[i],
+ info.minval[0],
info.maxval[0], info.res[0],
info.minres[0], info.maxres[0]);
} else if (info.numAbsAxes) {
InitValuatorClassDeviceStruct(pDevice, info.numAbsAxes,
+ axis_labels,
dmxPointerGetMotionBufferSize(),
Absolute);
for (i = 0; i < info.numAbsAxes; i++)
InitValuatorAxisStruct(pDevice, i+info.numRelAxes,
+ axis_labels[i + info.numRelAxes],
info.minval[i+1], info.maxval[i+1],
info.res[i+1], info.minres[i+1],
info.maxres[i+1]);
@@ -496,9 +500,6 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
if (info.proximityClass) InitProximityClassDeviceStruct(pDevice);
if (info.ptrFeedbackClass)
InitPtrFeedbackClassDeviceStruct(pDevice, dmxChangePointerControl);
- if (info.kbdFeedbackClass)
- InitKbdFeedbackClassDeviceStruct(pDevice, dmxKeyboardBellProc,
- dmxKeyboardKbdCtrlProc);
if (info.intFeedbackClass || info.strFeedbackClass)
dmxLog(dmxWarning,
"Integer and string feedback not supported for %s\n",
@@ -842,7 +843,7 @@ static void dmxInputScanForExtensions(DMXInputInfo *dmxInput, int doXI)
/* Print out information about the XInput Extension. */
handler = XSetExtensionErrorHandler(dmxInputExtensionErrorHandler);
- ext = XQueryInputVersion(display, XI_2_Major, XI_2_Minor);
+ ext = XGetExtensionVersion(display, INAME);
XSetExtensionErrorHandler(handler);
if (!ext || ext == (XExtensionVersion *)NoSuchExtension) {
@@ -1189,7 +1190,7 @@ int dmxInputDetach(DMXInputInfo *dmxInput)
: (dmxLocal->sendsCore
? " [sends core events]"
: ""));
- DisableDevice(dmxLocal->pDevice);
+ DisableDevice(dmxLocal->pDevice, TRUE);
}
dmxInput->detached = True;
dmxInputLogDevices();
@@ -1257,7 +1258,7 @@ static int dmxInputAttachOld(DMXInputInfo *dmxInput, int *id)
: (dmxLocal->sendsCore
? " [sends core events]"
: ""));
- EnableDevice(dmxLocal->pDevice);
+ EnableDevice(dmxLocal->pDevice, TRUE);
}
dmxInputLogDevices();
return 0;
diff --git a/hw/kdrive/ephyr/Xephyr.man.pre b/hw/kdrive/ephyr/Xephyr.man.pre
index 7f0e811a2..f5e8b984d 100644
--- a/hw/kdrive/ephyr/Xephyr.man.pre
+++ b/hw/kdrive/ephyr/Xephyr.man.pre
@@ -23,8 +23,8 @@ Xephyr - X server outputting to a window on a pre-existing X display
.IR ... ]
.SH DESCRIPTION
.B Xephyr
-is a a kdrive server that outputs to a window on a pre-existing
-'host' X display.
+is a a kdrive server that outputs to a window on a pre-existing "host"
+X display.
Think
.I Xnest
but with support for modern extensions like composite, damage and randr.
@@ -75,7 +75,7 @@ round it. It doesn't appear to break anything however.
.IP \(bu 2
Keyboard handling is basic but works.
.TP \(bu 2
-Mouse button 5 probably wont work.
+Mouse button 5 probably won't work.
.SH "SEE ALSO"
X(__miscmansuffix__), Xserver(__appmansuffix__)
.SH AUTHOR
diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index 6e915abae..84885d8f0 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -701,8 +701,8 @@ ProcXF86DRIOpenConnection (register ClientPtr client)
rep.busIdStringLength = 0;
if (busIdString)
rep.busIdStringLength = strlen(busIdString);
- rep.length = (SIZEOF(xXF86DRIOpenConnectionReply) - SIZEOF(xGenericReply) +
- ((rep.busIdStringLength + 3) & ~3)) >> 2;
+ rep.length = bytes_to_int32(SIZEOF(xXF86DRIOpenConnectionReply) - SIZEOF(xGenericReply) +
+ pad_to_int32(rep.busIdStringLength));
rep.hSAREALow = (CARD32)(hSAREA & 0xffffffff);
#if defined(LONG64) && !defined(__linux__)
@@ -789,9 +789,9 @@ ProcXF86DRIGetClientDriverName (register ClientPtr client)
rep.clientDriverNameLength = 0;
if (clientDriverName)
rep.clientDriverNameLength = strlen(clientDriverName);
- rep.length = (SIZEOF(xXF86DRIGetClientDriverNameReply) -
+ rep.length = bytes_to_int32(SIZEOF(xXF86DRIGetClientDriverNameReply) -
SIZEOF(xGenericReply) +
- ((rep.clientDriverNameLength + 3) & ~3)) >> 2;
+ pad_to_int32(rep.clientDriverNameLength));
WriteToClient(client,
sizeof(xXF86DRIGetClientDriverNameReply), (char *)&rep);
@@ -1235,7 +1235,7 @@ ProcXF86DRIGetDrawableInfo (register ClientPtr client)
EPHYR_LOG ("num host clip rects:%d\n", (int)rep.numClipRects) ;
EPHYR_LOG ("num host back clip rects:%d\n", (int)rep.numBackClipRects) ;
- rep.length = ((rep.length + 3) & ~3) >> 2;
+ rep.length = bytes_to_int32(rep.length);
WriteToClient(client, sizeof(xXF86DRIGetDrawableInfoReply), (char *)&rep);
@@ -1297,9 +1297,9 @@ ProcXF86DRIGetDeviceInfo (register ClientPtr client)
rep.length = 0;
if (rep.devPrivateSize) {
- rep.length = (SIZEOF(xXF86DRIGetDeviceInfoReply) -
+ rep.length = bytes_to_int32(SIZEOF(xXF86DRIGetDeviceInfoReply) -
SIZEOF(xGenericReply) +
- ((rep.devPrivateSize + 3) & ~3)) >> 2;
+ pad_to_int32(rep.devPrivateSize));
}
WriteToClient(client, sizeof(xXF86DRIGetDeviceInfoReply), (char *)&rep);
diff --git a/hw/kdrive/ephyr/ephyrhostglx.c b/hw/kdrive/ephyr/ephyrhostglx.c
index a05bba2e3..728687b46 100644
--- a/hw/kdrive/ephyr/ephyrhostglx.c
+++ b/hw/kdrive/ephyr/ephyrhostglx.c
@@ -428,7 +428,7 @@ ephyrHostGLXSendClientInfo (int32_t a_major, int32_t a_minor,
req->minor = a_minor;
size = strlen (a_extension_list) + 1;
- req->length += (size + 3) >> 2;
+ req->length += bytes_to_int32(size);
req->numbytes = size;
Data (dpy, a_extension_list, size);
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index 5e7ff5376..318d233d4 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -46,6 +46,7 @@
#include "exevents.h"
#include "extinit.h"
#include "exglobals.h"
+#include "eventstr.h"
#include "xserver-properties.h"
#define AtomFromName(x) MakeAtom(x, strlen(x), 1)
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 3b9ff9c3e..b97ebd79f 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -12,10 +12,26 @@ if XF86UTILS
XF86UTILS_SUBDIR = utils
endif
+if XAA
+XAA_SUBDIR = xaa
+endif
+
+if VGAHW
+VGAHW_SUBDIR = vgahw
+endif
+
+if VBE
+VBE_SUBDIR = vbe
+endif
+
+if INT10MODULE
+INT10_SUBDIR = int10
+endif
+
DOC_SUBDIR = doc
-SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support parser \
- ramdac shadowfb vbe vgahw xaa \
+SUBDIRS = common ddc i2c x86emu $(INT10_SUBDIR) fbdevhw os-support parser \
+ ramdac shadowfb $(VBE_SUBDIR) $(VGAHW_SUBDIR) $(XAA_SUBDIR) \
xf8_16bpp loader dixmods exa modes \
$(DRI_SUBDIR) $(DRI2_SUBDIR) $(XF86UTILS_SUBDIR) $(DOC_SUBDIR)
@@ -37,7 +53,7 @@ libxorg_la_LIBADD = \
loader/libloader.la \
os-support/libxorgos.la \
common/libcommon.la \
- parser/libxf86config.la \
+ parser/libxf86config_internal.la \
dixmods/libdixmods.la \
modes/libxf86modes.la \
ramdac/libramdac.la \
diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am
index fbd052c6c..ad27210cd 100644
--- a/hw/xfree86/common/Makefile.am
+++ b/hw/xfree86/common/Makefile.am
@@ -35,24 +35,24 @@ AM_LDFLAGS = -r
libcommon_la_SOURCES = xf86Configure.c xf86ShowOpts.c xf86Bus.c xf86Config.c \
xf86Cursor.c $(DGASOURCES) xf86DPMS.c \
xf86Events.c xf86Globals.c xf86AutoConfig.c \
- xf86Option.c xf86Init.c \
+ xf86Option.c xf86Init.c xf86VGAarbiter.c \
xf86VidMode.c xf86fbman.c xf86cmap.c \
- xf86Helper.c xf86PM.c xf86RAC.c xf86Xinput.c xisb.c \
+ xf86Helper.c xf86PM.c xf86Xinput.c xisb.c \
xf86Mode.c xorgHelper.c \
$(XVSOURCES) $(BUSSOURCES) $(RANDRSOURCES)
nodist_libcommon_la_SOURCES = xf86DefModeSet.c xf86Build.h
INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
- -I$(srcdir)/../loader -I$(srcdir)/../rac -I$(srcdir)/../parser \
+ -I$(srcdir)/../loader -I$(srcdir)/../parser \
-I$(srcdir)/../vbe -I$(srcdir)/../int10 \
-I$(srcdir)/../vgahw -I$(srcdir)/../dixmods/extmod \
-I$(srcdir)/../modes -I$(srcdir)/../ramdac
sdk_HEADERS = compiler.h fourcc.h xf86.h xf86Module.h xf86Opt.h \
- xf86PciInfo.h xf86Priv.h xf86Privstr.h xf86Resources.h \
- xf86cmap.h xf86fbman.h xf86str.h xf86RAC.h xf86Xinput.h xisb.h \
+ xf86PciInfo.h xf86Priv.h xf86Privstr.h \
+ xf86cmap.h xf86fbman.h xf86str.h xf86Xinput.h xisb.h \
$(XVSDKINCS) $(XF86VMODE_SDK) xorgVersion.h \
- xf86sbusBus.h
+ xf86sbusBus.h xf86VGAarbiter.h
DISTCLEANFILES = xf86Build.h
CLEANFILES = $(BUILT_SOURCES)
@@ -71,7 +71,6 @@ EXTRA_DIST = \
xf86PciInfo.h \
xf86Priv.h \
xf86Privstr.h \
- xf86Resources.h \
xf86Xinput.h \
xf86cmap.h \
xf86fbman.h \
@@ -84,6 +83,8 @@ EXTRA_DIST = \
xorgVersion.h \
$(MODEDEFSOURCES) \
modeline2c.awk \
+ xf86VGAarbiter.h \
+ xf86VGAarbiterPriv.h \
$(DISTKBDSOURCES)
if LNXACPI
diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
index 2ef95d8d3..95ef72c39 100644
--- a/hw/xfree86/common/compiler.h
+++ b/hw/xfree86/common/compiler.h
@@ -59,6 +59,8 @@
# include <X11/Xfuncproto.h>
#endif
+# include <pixman.h> /* for uint*_t types */
+
/* Allow drivers to use the GCC-supported __inline__ and/or __inline. */
# ifndef __inline__
# if defined(__GNUC__)
@@ -129,6 +131,182 @@ extern unsigned short ldw_brx(volatile unsigned char *, int);
# ifndef NO_INLINE
# ifdef __GNUC__
+# ifdef __i386__
+
+# ifdef __SSE__
+# define write_mem_barrier() __asm__ __volatile__ ("sfence" : : : "memory")
+# else
+# define write_mem_barrier() __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory")
+# endif
+
+# ifdef __SSE2__
+# define mem_barrier() __asm__ __volatile__ ("mfence" : : : "memory")
+# else
+# define mem_barrier() __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory")
+# endif
+
+# elif defined __alpha__
+
+# define mem_barrier() __asm__ __volatile__ ("mb" : : : "memory")
+# define write_mem_barrier() __asm__ __volatile__ ("wmb" : : : "memory")
+
+# elif defined __amd64__
+
+# define mem_barrier() __asm__ __volatile__ ("mfence" : : : "memory")
+# define write_mem_barrier() __asm__ __volatile__ ("sfence" : : : "memory")
+
+# elif defined __ia64__
+
+# ifndef __INTEL_COMPILER
+# define mem_barrier() __asm__ __volatile__ ("mf" : : : "memory")
+# define write_mem_barrier() __asm__ __volatile__ ("mf" : : : "memory")
+# else
+# include "ia64intrin.h"
+# define mem_barrier() __mf()
+# define write_mem_barrier() __mf()
+# endif
+
+# elif defined __mips__
+ /* Note: sync instruction requires MIPS II instruction set */
+# define mem_barrier() \
+ __asm__ __volatile__( \
+ ".set push\n\t" \
+ ".set noreorder\n\t" \
+ ".set mips2\n\t" \
+ "sync\n\t" \
+ ".set pop" \
+ : /* no output */ \
+ : /* no input */ \
+ : "memory")
+# define write_mem_barrier() mem_barrier()
+
+# elif defined __powerpc__
+
+# if defined(linux) && defined(__powerpc64__)
+# include <linux/version.h>
+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+# include <asm/memory.h>
+# endif
+# endif /* defined(linux) && defined(__powerpc64__) */
+
+# ifndef eieio /* We deal with arch-specific eieio() routines above... */
+# define eieio() __asm__ __volatile__ ("eieio" ::: "memory")
+# endif /* eieio */
+# define mem_barrier() eieio()
+# define write_mem_barrier() eieio()
+
+# elif defined __sparc__
+
+# define barrier() __asm__ __volatile__ (".word 0x8143e00a" : : : "memory")
+# define mem_barrier() /* XXX: nop for now */
+# define write_mem_barrier() /* XXX: nop for now */
+# endif
+# endif /* __GNUC__ */
+# endif /* NO_INLINE */
+
+# ifndef mem_barrier
+# define mem_barrier() /* NOP */
+# endif
+
+# ifndef write_mem_barrier
+# define write_mem_barrier() /* NOP */
+# endif
+
+
+# ifndef NO_INLINE
+# ifdef __GNUC__
+
+/* Define some packed structures to use with unaligned accesses */
+
+struct __una_u64 { uint64_t x __attribute__((packed)); };
+struct __una_u32 { uint32_t x __attribute__((packed)); };
+struct __una_u16 { uint16_t x __attribute__((packed)); };
+
+/* Elemental unaligned loads */
+
+static __inline__ uint64_t ldq_u(uint64_t *p)
+{
+ const struct __una_u64 *ptr = (const struct __una_u64 *) p;
+ return ptr->x;
+}
+
+static __inline__ uint32_t ldl_u(uint32_t *p)
+{
+ const struct __una_u32 *ptr = (const struct __una_u32 *) p;
+ return ptr->x;
+}
+
+static __inline__ uint16_t ldw_u(uint16_t *p)
+{
+ const struct __una_u16 *ptr = (const struct __una_u16 *) p;
+ return ptr->x;
+}
+
+/* Elemental unaligned stores */
+
+static __inline__ void stq_u(uint64_t val, uint64_t *p)
+{
+ struct __una_u64 *ptr = (struct __una_u64 *) p;
+ ptr->x = val;
+}
+
+static __inline__ void stl_u(uint32_t val, uint32_t *p)
+{
+ struct __una_u32 *ptr = (struct __una_u32 *) p;
+ ptr->x = val;
+}
+
+static __inline__ void stw_u(uint16_t val, uint16_t *p)
+{
+ struct __una_u16 *ptr = (struct __una_u16 *) p;
+ ptr->x = val;
+}
+# else /* !__GNUC__ */
+
+static __inline__ uint64_t ldq_u(uint64_t *p)
+{
+ uint64_t ret;
+ memmove(&ret, p, sizeof(*p));
+ return ret;
+}
+
+static __inline__ uint32_t ldl_u(uint32_t *p)
+{
+ uint32_t ret;
+ memmove(&ret, p, sizeof(*p));
+ return ret;
+}
+
+static __inline__ uint16_t ldw_u(uint16_t *p)
+{
+ uint16_t ret;
+ memmove(&ret, p, sizeof(*p));
+ return ret;
+}
+
+static __inline__ void stq_u(uint64_t val, uint64_t *p)
+{
+ uint64_t tmp = val;
+ memmove(p, &tmp, sizeof(*p));
+}
+
+static __inline__ void stl_u(uint32_t val, uint32_t *p)
+{
+ uint32_t tmp = val;
+ memmove(p, &tmp, sizeof(*p));
+}
+
+static __inline__ void stw_u(uint16_t val, uint16_t *p)
+{
+ uint16_t tmp = val;
+ memmove(p, &tmp, sizeof(*p));
+}
+
+# endif /* __GNUC__ */
+# endif /* NO_INLINE */
+
+# ifndef NO_INLINE
+# ifdef __GNUC__
# if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)) && (defined(__alpha__))
# ifdef linux
@@ -202,253 +380,12 @@ extern _X_EXPORT unsigned int inl(unsigned int port);
#include <machine/pio.h>
#endif /* __NetBSD__ */
-/*
- * inline functions to do unaligned accesses
- * from linux/include/asm-alpha/unaligned.h
- */
-
-/*
- * EGCS 1.1 knows about arbitrary unaligned loads. Define some
- * packed structures to talk about such things with.
- */
-
-struct __una_u64 { unsigned long x __attribute__((packed)); };
-struct __una_u32 { unsigned int x __attribute__((packed)); };
-struct __una_u16 { unsigned short x __attribute__((packed)); };
-
-/*
- * Elemental unaligned loads
- */
-/* let's try making these things static */
-
-static __inline__ unsigned long ldq_u(unsigned long * r11)
-{
-# if defined(__GNUC__)
- const struct __una_u64 *ptr = (const struct __una_u64 *) r11;
- return ptr->x;
-# else
- unsigned long r1,r2;
- __asm__("ldq_u %0,%3\n\t"
- "ldq_u %1,%4\n\t"
- "extql %0,%2,%0\n\t"
- "extqh %1,%2,%1"
- :"=&r" (r1), "=&r" (r2)
- :"r" (r11),
- "m" (*r11),
- "m" (*(const unsigned long *)(7+(char *) r11)));
- return r1 | r2;
-# endif
-}
-
-static __inline__ unsigned long ldl_u(unsigned int * r11)
-{
-# if defined(__GNUC__)
- const struct __una_u32 *ptr = (const struct __una_u32 *) r11;
- return ptr->x;
-# else
- unsigned long r1,r2;
- __asm__("ldq_u %0,%3\n\t"
- "ldq_u %1,%4\n\t"
- "extll %0,%2,%0\n\t"
- "extlh %1,%2,%1"
- :"=&r" (r1), "=&r" (r2)
- :"r" (r11),
- "m" (*r11),
- "m" (*(const unsigned long *)(3+(char *) r11)));
- return r1 | r2;
-# endif
-}
-
-static __inline__ unsigned long ldw_u(unsigned short * r11)
-{
-# if defined(__GNUC__)
- const struct __una_u16 *ptr = (const struct __una_u16 *) r11;
- return ptr->x;
-# else
- unsigned long r1,r2;
- __asm__("ldq_u %0,%3\n\t"
- "ldq_u %1,%4\n\t"
- "extwl %0,%2,%0\n\t"
- "extwh %1,%2,%1"
- :"=&r" (r1), "=&r" (r2)
- :"r" (r11),
- "m" (*r11),
- "m" (*(const unsigned long *)(1+(char *) r11)));
- return r1 | r2;
-# endif
-}
-
-/*
- * Elemental unaligned stores
- */
-
-static __inline__ void stq_u(unsigned long r5, unsigned long * r11)
-{
-# if defined(__GNUC__)
- struct __una_u64 *ptr = (struct __una_u64 *) r11;
- ptr->x = r5;
-# else
- unsigned long r1,r2,r3,r4;
-
- __asm__("ldq_u %3,%1\n\t"
- "ldq_u %2,%0\n\t"
- "insqh %6,%7,%5\n\t"
- "insql %6,%7,%4\n\t"
- "mskqh %3,%7,%3\n\t"
- "mskql %2,%7,%2\n\t"
- "bis %3,%5,%3\n\t"
- "bis %2,%4,%2\n\t"
- "stq_u %3,%1\n\t"
- "stq_u %2,%0"
- :"=m" (*r11),
- "=m" (*(unsigned long *)(7+(char *) r11)),
- "=&r" (r1), "=&r" (r2), "=&r" (r3), "=&r" (r4)
- :"r" (r5), "r" (r11));
-# endif
-}
-
-static __inline__ void stl_u(unsigned long r5, unsigned int * r11)
-{
-# if defined(__GNUC__)
- struct __una_u32 *ptr = (struct __una_u32 *) r11;
- ptr->x = r5;
-# else
- unsigned long r1,r2,r3,r4;
-
- __asm__("ldq_u %3,%1\n\t"
- "ldq_u %2,%0\n\t"
- "inslh %6,%7,%5\n\t"
- "insll %6,%7,%4\n\t"
- "msklh %3,%7,%3\n\t"
- "mskll %2,%7,%2\n\t"
- "bis %3,%5,%3\n\t"
- "bis %2,%4,%2\n\t"
- "stq_u %3,%1\n\t"
- "stq_u %2,%0"
- :"=m" (*r11),
- "=m" (*(unsigned long *)(3+(char *) r11)),
- "=&r" (r1), "=&r" (r2), "=&r" (r3), "=&r" (r4)
- :"r" (r5), "r" (r11));
-# endif
-}
-
-static __inline__ void stw_u(unsigned long r5, unsigned short * r11)
-{
-# if defined(__GNUC__)
- struct __una_u16 *ptr = (struct __una_u16 *) r11;
- ptr->x = r5;
-# else
- unsigned long r1,r2,r3,r4;
-
- __asm__("ldq_u %3,%1\n\t"
- "ldq_u %2,%0\n\t"
- "inswh %6,%7,%5\n\t"
- "inswl %6,%7,%4\n\t"
- "mskwh %3,%7,%3\n\t"
- "mskwl %2,%7,%2\n\t"
- "bis %3,%5,%3\n\t"
- "bis %2,%4,%2\n\t"
- "stq_u %3,%1\n\t"
- "stq_u %2,%0"
- :"=m" (*r11),
- "=m" (*(unsigned long *)(1+(char *) r11)),
- "=&r" (r1), "=&r" (r2), "=&r" (r3), "=&r" (r4)
- :"r" (r5), "r" (r11));
-# endif
-}
-
-# define mem_barrier() __asm__ __volatile__("mb" : : : "memory")
-# define write_mem_barrier() __asm__ __volatile__("wmb" : : : "memory")
-
# elif defined(linux) && defined(__ia64__)
# include <inttypes.h>
# include <sys/io.h>
-struct __una_u64 { uint64_t x __attribute__((packed)); };
-struct __una_u32 { uint32_t x __attribute__((packed)); };
-struct __una_u16 { uint16_t x __attribute__((packed)); };
-
-static __inline__ unsigned long
-__uldq (const unsigned long * r11)
-{
- const struct __una_u64 *ptr = (const struct __una_u64 *) r11;
- return ptr->x;
-}
-
-static __inline__ unsigned long
-__uldl (const unsigned int * r11)
-{
- const struct __una_u32 *ptr = (const struct __una_u32 *) r11;
- return ptr->x;
-}
-
-static __inline__ unsigned long
-__uldw (const unsigned short * r11)
-{
- const struct __una_u16 *ptr = (const struct __una_u16 *) r11;
- return ptr->x;
-}
-
-static __inline__ void
-__ustq (unsigned long r5, unsigned long * r11)
-{
- struct __una_u64 *ptr = (struct __una_u64 *) r11;
- ptr->x = r5;
-}
-
-static __inline__ void
-__ustl (unsigned long r5, unsigned int * r11)
-{
- struct __una_u32 *ptr = (struct __una_u32 *) r11;
- ptr->x = r5;
-}
-
-static __inline__ void
-__ustw (unsigned long r5, unsigned short * r11)
-{
- struct __una_u16 *ptr = (struct __una_u16 *) r11;
- ptr->x = r5;
-}
-
-# define ldq_u(p) __uldq(p)
-# define ldl_u(p) __uldl(p)
-# define ldw_u(p) __uldw(p)
-# define stq_u(v,p) __ustq(v,p)
-# define stl_u(v,p) __ustl(v,p)
-# define stw_u(v,p) __ustw(v,p)
-
-# ifndef __INTEL_COMPILER
-# define mem_barrier() __asm__ __volatile__ ("mf" ::: "memory")
-# define write_mem_barrier() __asm__ __volatile__ ("mf" ::: "memory")
-# else
-# include "ia64intrin.h"
-# define mem_barrier() __mf()
-# define write_mem_barrier() __mf()
-# endif
-
-/*
- * This is overkill, but for different reasons depending on where it is used.
- * This is thus general enough to be used everywhere cache flushes are needed.
- * It doesn't handle memory access serialisation by other processors, though.
- */
-# ifndef __INTEL_COMPILER
-# define ia64_flush_cache(Addr) \
- __asm__ __volatile__ ( \
- "fc.i %0;;;" \
- "sync.i;;;" \
- "mf;;;" \
- "srlz.i;;;" \
- :: "r"(Addr) : "memory")
-# else
-# define ia64_flush_cache(Addr) { \
- __fc(Addr);\
- __synci();\
- __mf();\
- __isrlz();\
- }
-# endif
# undef outb
# undef outw
# undef outl
@@ -466,19 +403,6 @@ extern _X_EXPORT unsigned int inl(unsigned long port);
# include <inttypes.h>
-# define ldq_u(p) (*((unsigned long *)(p)))
-# define ldl_u(p) (*((unsigned int *)(p)))
-# define ldw_u(p) (*((unsigned short *)(p)))
-# define stq_u(v,p) (*(unsigned long *)(p)) = (v)
-# define stl_u(v,p) (*(unsigned int *)(p)) = (v)
-# define stw_u(v,p) (*(unsigned short *)(p)) = (v)
-
-# define mem_barrier() \
- __asm__ __volatile__ ("lock; addl $0,0(%%rsp)": : :"memory")
-# define write_mem_barrier() \
- __asm__ __volatile__ ("": : :"memory")
-
-
static __inline__ void
outb(unsigned short port, unsigned char val)
{
@@ -534,8 +458,6 @@ inl(unsigned short port)
# define ASI_PL 0x88
# endif
-# define barrier() __asm__ __volatile__(".word 0x8143e00a": : :"memory")
-
static __inline__ void
outb(unsigned long port, unsigned char val)
{
@@ -768,98 +690,6 @@ xf86WriteMmio32LeNB(__volatile__ void *base, const unsigned long offset,
: "r" (val), "r" (addr), "i" (ASI_PL));
}
-
-/*
- * EGCS 1.1 knows about arbitrary unaligned loads. Define some
- * packed structures to talk about such things with.
- */
-
-# if defined(__arch64__) || defined(__sparcv9)
-struct __una_u64 { unsigned long x __attribute__((packed)); };
-# endif
-struct __una_u32 { unsigned int x __attribute__((packed)); };
-struct __una_u16 { unsigned short x __attribute__((packed)); };
-
-static __inline__ unsigned long ldq_u(unsigned long *p)
-{
-# if defined(__GNUC__)
-# if defined(__arch64__) || defined(__sparcv9)
- const struct __una_u64 *ptr = (const struct __una_u64 *) p;
-# else
- const struct __una_u32 *ptr = (const struct __una_u32 *) p;
-# endif
- return ptr->x;
-# else
- unsigned long ret;
- memmove(&ret, p, sizeof(*p));
- return ret;
-# endif
-}
-
-static __inline__ unsigned long ldl_u(unsigned int *p)
-{
-# if defined(__GNUC__)
- const struct __una_u32 *ptr = (const struct __una_u32 *) p;
- return ptr->x;
-# else
- unsigned int ret;
- memmove(&ret, p, sizeof(*p));
- return ret;
-# endif
-}
-
-static __inline__ unsigned long ldw_u(unsigned short *p)
-{
-# if defined(__GNUC__)
- const struct __una_u16 *ptr = (const struct __una_u16 *) p;
- return ptr->x;
-# else
- unsigned short ret;
- memmove(&ret, p, sizeof(*p));
- return ret;
-# endif
-}
-
-static __inline__ void stq_u(unsigned long val, unsigned long *p)
-{
-# if defined(__GNUC__)
-# if defined(__arch64__) || defined(__sparcv9)
- struct __una_u64 *ptr = (struct __una_u64 *) p;
-# else
- struct __una_u32 *ptr = (struct __una_u32 *) p;
-# endif
- ptr->x = val;
-# else
- unsigned long tmp = val;
- memmove(p, &tmp, sizeof(*p));
-# endif
-}
-
-static __inline__ void stl_u(unsigned long val, unsigned int *p)
-{
-# if defined(__GNUC__)
- struct __una_u32 *ptr = (struct __una_u32 *) p;
- ptr->x = val;
-# else
- unsigned int tmp = val;
- memmove(p, &tmp, sizeof(*p));
-# endif
-}
-
-static __inline__ void stw_u(unsigned long val, unsigned short *p)
-{
-# if defined(__GNUC__)
- struct __una_u16 *ptr = (struct __una_u16 *) p;
- ptr->x = val;
-# else
- unsigned short tmp = val;
- memmove(p, &tmp, sizeof(*p));
-# endif
-}
-
-# define mem_barrier() /* XXX: nop for now */
-# define write_mem_barrier() /* XXX: nop for now */
-
# elif defined(__mips__) || (defined(__arm32__) && !defined(__linux__))
# ifdef __arm32__
# define PORT_SIZE long
@@ -907,65 +737,7 @@ inl(unsigned PORT_SIZE port)
# if defined(__mips__)
-static __inline__ unsigned long ldq_u(unsigned long * r11)
-{
- unsigned long r1;
- __asm__("lwr %0,%2\n\t"
- "lwl %0,%3\n\t"
- :"=&r" (r1)
- :"r" (r11),
- "m" (*r11),
- "m" (*(unsigned long *)(3+(char *) r11)));
- return r1;
-}
-
-static __inline__ unsigned long ldl_u(unsigned int * r11)
-{
- unsigned long r1;
- __asm__("lwr %0,%2\n\t"
- "lwl %0,%3\n\t"
- :"=&r" (r1)
- :"r" (r11),
- "m" (*r11),
- "m" (*(unsigned long *)(3+(char *) r11)));
- return r1;
-}
-
-static __inline__ unsigned long ldw_u(unsigned short * r11)
-{
- unsigned long r1;
- __asm__("lwr %0,%2\n\t"
- "lwl %0,%3\n\t"
- :"=&r" (r1)
- :"r" (r11),
- "m" (*r11),
- "m" (*(unsigned long *)(1+(char *) r11)));
- return r1;
-}
-
# ifdef linux /* don't mess with other OSs */
-
-/*
- * EGCS 1.1 knows about arbitrary unaligned loads (and we don't support older
- * versions anyway. Define some packed structures to talk about such things
- * with.
- */
-
-struct __una_u32 { unsigned int x __attribute__((packed)); };
-struct __una_u16 { unsigned short x __attribute__((packed)); };
-
-static __inline__ void stw_u(unsigned long val, unsigned short *p)
-{
- struct __una_u16 *ptr = (struct __una_u16 *) p;
- ptr->x = val;
-}
-
-static __inline__ void stl_u(unsigned long val, unsigned int *p)
-{
- struct __una_u32 *ptr = (struct __una_u32 *) p;
- ptr->x = val;
-}
-
# if X_BYTE_ORDER == X_BIG_ENDIAN
static __inline__ unsigned int
xf86ReadMmio32Be(__volatile__ void *base, const unsigned long offset)
@@ -990,45 +762,9 @@ xf86WriteMmio32Be(__volatile__ void *base, const unsigned long offset,
: "r" (val), "r" (addr));
}
# endif
-
-# define mem_barrier() \
- __asm__ __volatile__( \
- "# prevent instructions being moved around\n\t" \
- ".set\tnoreorder\n\t" \
- "# 8 nops to fool the R4400 pipeline\n\t" \
- "nop;nop;nop;nop;nop;nop;nop;nop\n\t" \
- ".set\treorder" \
- : /* no output */ \
- : /* no input */ \
- : "memory")
-# define write_mem_barrier() mem_barrier()
-
-# else /* !linux */
-
-# define stq_u(v,p) stl_u(v,p)
-# define stl_u(v,p) (*(unsigned char *)(p)) = (v); \
- (*(unsigned char *)(p)+1) = ((v) >> 8); \
- (*(unsigned char *)(p)+2) = ((v) >> 16); \
- (*(unsigned char *)(p)+3) = ((v) >> 24)
-
-# define stw_u(v,p) (*(unsigned char *)(p)) = (v); \
- (*(unsigned char *)(p)+1) = ((v) >> 8)
-
-# define mem_barrier() /* NOP */
# endif /* !linux */
# endif /* __mips__ */
-# if defined(__arm32__)
-# define ldq_u(p) (*((unsigned long *)(p)))
-# define ldl_u(p) (*((unsigned int *)(p)))
-# define ldw_u(p) (*((unsigned short *)(p)))
-# define stq_u(v,p) (*(unsigned long *)(p)) = (v)
-# define stl_u(v,p) (*(unsigned int *)(p)) = (v)
-# define stw_u(v,p) (*(unsigned short *)(p)) = (v)
-# define mem_barrier() /* NOP */
-# define write_mem_barrier() /* NOP */
-# endif /* __arm32__ */
-
# elif (defined(linux) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__)) && defined(__powerpc__)
# ifndef MAP_FAILED
@@ -1037,16 +773,6 @@ xf86WriteMmio32Be(__volatile__ void *base, const unsigned long offset,
extern _X_EXPORT volatile unsigned char *ioBase;
-#if defined(linux) && defined(__powerpc64__)
-# include <linux/version.h>
-# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
-# include <asm/memory.h>
-# endif
-#endif /* defined(linux) && defined(__powerpc64__) */
-#ifndef eieio /* We deal with arch-specific eieio() routines above... */
-# define eieio() __asm__ __volatile__ ("eieio" ::: "memory")
-#endif /* eieio */
-
static __inline__ unsigned char
xf86ReadMmio8(__volatile__ void *base, const unsigned long offset)
{
@@ -1245,36 +971,8 @@ inl(unsigned short port)
return xf86ReadMmio32Le((void *)ioBase, port);
}
-# define ldq_u(p) ldl_u(p)
-# define ldl_u(p) ((*(unsigned char *)(p)) | \
- (*((unsigned char *)(p)+1)<<8) | \
- (*((unsigned char *)(p)+2)<<16) | \
- (*((unsigned char *)(p)+3)<<24))
-# define ldw_u(p) ((*(unsigned char *)(p)) | \
- (*((unsigned char *)(p)+1)<<8))
-
-# define stq_u(v,p) stl_u(v,p)
-# define stl_u(v,p) (*(unsigned char *)(p)) = (v); \
- (*((unsigned char *)(p)+1)) = ((v) >> 8); \
- (*((unsigned char *)(p)+2)) = ((v) >> 16); \
- (*((unsigned char *)(p)+3)) = ((v) >> 24)
-# define stw_u(v,p) (*(unsigned char *)(p)) = (v); \
- (*((unsigned char *)(p)+1)) = ((v) >> 8)
-
-# define mem_barrier() eieio()
-# define write_mem_barrier() eieio()
-
#elif defined(__arm__) && defined(__linux__)
-#define ldq_u(p) (*((unsigned long *)(p)))
-#define ldl_u(p) (*((unsigned int *)(p)))
-#define ldw_u(p) (*((unsigned short *)(p)))
-#define stq_u(v,p) (*(unsigned long *)(p)) = (v)
-#define stl_u(v,p) (*(unsigned int *)(p)) = (v)
-#define stw_u(v,p) (*(unsigned short *)(p)) = (v)
-#define mem_barrier() /* NOP */
-#define write_mem_barrier() /* NOP */
-
/* for Linux on ARM, we use the LIBC inx/outx routines */
/* note that the appropriate setup via "ioperm" needs to be done */
/* *before* any inx/outx is done. */
@@ -1303,27 +1001,8 @@ xf_outl(unsigned short port, unsigned int val)
#define outw xf_outw
#define outl xf_outl
-#define arm_flush_cache(addr) \
-do { \
- register unsigned long _beg __asm ("a1") = (unsigned long) (addr); \
- register unsigned long _end __asm ("a2") = (unsigned long) (addr) + 4;\
- register unsigned long _flg __asm ("a3") = 0; \
- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
- : "=r" (_beg) \
- : "0" (_beg), "r" (_end), "r" (_flg)); \
-} while (0)
-
# else /* ix86 */
-# define ldq_u(p) (*((unsigned long *)(p)))
-# define ldl_u(p) (*((unsigned int *)(p)))
-# define ldw_u(p) (*((unsigned short *)(p)))
-# define stq_u(v,p) (*(unsigned long *)(p)) = (v)
-# define stl_u(v,p) (*(unsigned int *)(p)) = (v)
-# define stw_u(v,p) (*(unsigned short *)(p)) = (v)
-# define mem_barrier() /* NOP */
-# define write_mem_barrier() /* NOP */
-
# if !defined(__SUNPRO_C)
# if !defined(FAKEIT) && !defined(__mc68000__) && !defined(__arm__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__m32r__)
# ifdef GCCUSESGAS
@@ -1505,14 +1184,6 @@ inl(unsigned short port)
# pragma asm partial_optimization inw
# pragma asm partial_optimization inb
# endif
-# define ldq_u(p) (*((unsigned long *)(p)))
-# define ldl_u(p) (*((unsigned int *)(p)))
-# define ldw_u(p) (*((unsigned short *)(p)))
-# define stq_u(v,p) (*(unsigned long *)(p)) = (v)
-# define stl_u(v,p) (*(unsigned int *)(p)) = (v)
-# define stw_u(v,p) (*(unsigned short *)(p)) = (v)
-# define mem_barrier() /* NOP */
-# define write_mem_barrier() /* NOP */
# endif /* __GNUC__ */
# endif /* NO_INLINE */
@@ -1528,7 +1199,7 @@ extern _X_EXPORT int (*xf86ReadMmio32)(void *, unsigned long);
static __inline__ int
xf86ReadMmio32(void *Base, unsigned long Offset)
{
- __asm__ __volatile__("mb" : : : "memory");
+ mem_barrier();
return *(volatile unsigned int*)((unsigned long)Base+(Offset));
}
# endif
@@ -1538,8 +1209,6 @@ extern _X_EXPORT void (*xf86WriteMmio32)(int, void *, unsigned long);
extern _X_EXPORT void (*xf86WriteMmioNB8)(int, void *, unsigned long);
extern _X_EXPORT void (*xf86WriteMmioNB16)(int, void *, unsigned long);
extern _X_EXPORT void (*xf86WriteMmioNB32)(int, void *, unsigned long);
-extern _X_EXPORT void xf86SlowBCopyFromBus(unsigned char *, unsigned char *, int);
-extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int);
/* Some macros to hide the system dependencies for MMIO accesses */
/* Changed to kill noise generated by gcc's -Wcast-align */
@@ -1609,17 +1278,6 @@ extern _X_EXPORT void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int);
# define MMIO_MOVE32(base, offset, val) \
xf86WriteMmio32Be(base, offset, (CARD32)(val))
-static __inline__ void ppc_flush_icache(char *addr)
-{
- __asm__ volatile (
- "dcbf 0,%0;"
- "sync;"
- "icbi 0,%0;"
- "sync;"
- "isync;"
- : : "r"(addr) : "memory");
-}
-
# elif defined(__sparc__) || defined(sparc) || defined(__sparc)
/*
* Like powerpc, we provide byteswapping and no byteswapping functions
@@ -1682,18 +1340,4 @@ static __inline__ void ppc_flush_icache(char *addr)
# define MMIO_MOVE32(base, offset, val) MMIO_OUT32(base, offset, val)
# endif /* __alpha__ */
-
-/*
- * With Intel, the version in os-support/misc/SlowBcopy.s is used.
- * This avoids port I/O during the copy (which causes problems with
- * some hardware).
- */
-# ifdef __alpha__
-# define slowbcopy_tobus(src,dst,count) xf86SlowBCopyToBus(src,dst,count)
-# define slowbcopy_frombus(src,dst,count) xf86SlowBCopyFromBus(src,dst,count)
-# else /* __alpha__ */
-# define slowbcopy_tobus(src,dst,count) xf86SlowBcopy(src,dst,count)
-# define slowbcopy_frombus(src,dst,count) xf86SlowBcopy(src,dst,count)
-# endif /* __alpha__ */
-
#endif /* _COMPILER_H */
diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h
index e49f28db0..e9266abd4 100644
--- a/hw/xfree86/common/xf86.h
+++ b/hw/xfree86/common/xf86.h
@@ -56,7 +56,6 @@
/* General parameters */
extern _X_EXPORT int xf86DoConfigure;
extern _X_EXPORT int xf86DoShowOptions;
-extern _X_EXPORT Bool xf86DoModalias;
extern _X_EXPORT Bool xf86DoConfigurePass1;
extern _X_EXPORT DevPrivateKey xf86ScreenKey;
extern _X_EXPORT DevPrivateKey xf86CreateRootWindowKey;
@@ -97,21 +96,17 @@ extern _X_EXPORT Bool VTSwitchEnabled; /* kbd driver */
extern _X_EXPORT Bool xf86CheckPciSlot( const struct pci_device * );
extern _X_EXPORT int xf86ClaimPciSlot( struct pci_device *, DriverPtr drvp,
int chipset, GDevPtr dev, Bool active);
+extern _X_EXPORT void xf86UnclaimPciSlot(struct pci_device *);
extern _X_EXPORT Bool xf86ParsePciBusString(const char *busID, int *bus, int *device,
int *func);
extern _X_EXPORT Bool xf86ComparePciBusString(const char *busID, int bus, int device, int func);
extern _X_EXPORT void xf86FormatPciBusNumber(int busnum, char *buffer);
-extern _X_EXPORT resPtr xf86AddRangesToList(resPtr list, resRange *pRange, int entityIndex);
extern _X_EXPORT int xf86GetFbInfoForScreen(int scrnIndex);
extern _X_EXPORT int xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
extern _X_EXPORT int xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
extern _X_EXPORT void xf86EnableAccess(ScrnInfoPtr pScrn);
-extern _X_EXPORT void xf86SetCurrentAccess(Bool Enable, ScrnInfoPtr pScrn);
extern _X_EXPORT Bool xf86IsPrimaryPci(struct pci_device * pPci);
/* new RAC */
-extern _X_EXPORT resPtr xf86AddResToList(resPtr rlist, resRange *Range, int entityIndex);
-extern _X_EXPORT void xf86FreeResList(resPtr rlist);
-extern _X_EXPORT void xf86ClaimFixedResources(resList list, int entityIndex);
extern _X_EXPORT Bool xf86DriverHasEntities(DriverPtr drvp);
extern _X_EXPORT void xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex);
extern _X_EXPORT void xf86SetEntityInstanceForScreen(ScrnInfoPtr pScrn, int entityIndex,
@@ -123,20 +118,10 @@ extern _X_EXPORT EntityInfoPtr xf86GetEntityInfo(int entityIndex);
extern _X_EXPORT struct pci_device * xf86GetPciInfoForEntity(int entityIndex);
extern _X_EXPORT Bool xf86SetEntityFuncs(int entityIndex, EntityProc init,
EntityProc enter, EntityProc leave, pointer);
-extern _X_EXPORT void xf86DeallocateResourcesForEntity(int entityIndex, unsigned long type);
-extern _X_EXPORT resPtr xf86RegisterResources(int entityIndex, resList list,
- unsigned long Access);
extern _X_EXPORT Bool xf86CheckPciMemBase(struct pci_device * pPci, memType base);
-extern _X_EXPORT void xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
- xf86SetAccessFuncPtr oldFuncs);
extern _X_EXPORT Bool xf86IsEntityPrimary(int entityIndex);
-extern _X_EXPORT resPtr xf86SetOperatingState(resList list, int entityIndex, int mask);
extern _X_EXPORT void xf86EnterServerState(xf86State state);
extern _X_EXPORT ScrnInfoPtr xf86FindScreenForEntity(int entityIndex);
-extern _X_EXPORT Bool xf86NoSharedResources(int screenIndex, resType res);
-extern _X_EXPORT resPtr xf86FindIntersectOfLists(resPtr l1, resPtr l2);
-extern _X_EXPORT void xf86RegisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func, pointer arg);
-extern _X_EXPORT Bool xf86DeregisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func);
extern _X_EXPORT int xf86GetLastScrnFlag(int entityIndex);
extern _X_EXPORT void xf86SetLastScrnFlag(int entityIndex, int scrnIndex);
@@ -261,7 +246,6 @@ extern _X_EXPORT Bool xf86ServerIsExiting(void);
extern _X_EXPORT Bool xf86ServerIsResetting(void);
extern _X_EXPORT Bool xf86ServerIsInitialising(void);
extern _X_EXPORT Bool xf86ServerIsOnlyDetecting(void);
-extern _X_EXPORT Bool xf86ServerIsOnlyProbing(void);
extern _X_EXPORT Bool xf86CaughtSignal(void);
extern _X_EXPORT Bool xf86GetVidModeAllowNonLocal(void);
extern _X_EXPORT Bool xf86GetVidModeEnabled(void);
@@ -284,27 +268,21 @@ extern _X_EXPORT pointer xf86FindXvOptions(int scrnIndex, int adapt_index, char
extern _X_EXPORT void xf86GetOS(const char **name, int *major, int *minor, int *teeny);
extern _X_EXPORT ScrnInfoPtr xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag,
int entityIndex,PciChipsets *p_chip,
- resList res, EntityProc init,
+ void *dummy, EntityProc init,
EntityProc enter, EntityProc leave,
pointer private);
extern _X_EXPORT ScrnInfoPtr xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag,
int entityIndex, EntityProc init,
EntityProc enter, EntityProc leave,
pointer private);
+
/* Obsolete! don't use */
extern _X_EXPORT Bool xf86ConfigActivePciEntity(ScrnInfoPtr pScrn,
- int entityIndex,PciChipsets *p_chip,
- resList res, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-/* Obsolete! don't use */
-extern _X_EXPORT void xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
- resList res, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
-extern _X_EXPORT void xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
- EntityProc enter, EntityProc leave,
- pointer private);
+ int entityIndex,PciChipsets *p_chip,
+ void *dummy, EntityProc init,
+ EntityProc enter, EntityProc leave,
+ pointer private);
+
extern _X_EXPORT Bool xf86IsScreenPrimary(int scrnIndex);
extern _X_EXPORT int xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
int format, unsigned long len,
diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index ada1ca5f4..b3c31fd70 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -144,10 +144,6 @@ static int
videoPtrToDriverList(struct pci_device *dev,
char *returnList[], int returnListMax)
{
- /*
- * things not handled yet:
- * cyrix/nsc. should be merged into geode anyway.
- */
int i;
/* Add more entries here if we ever return more than 4 drivers for
any device */
@@ -155,11 +151,27 @@ videoPtrToDriverList(struct pci_device *dev,
switch (dev->vendor_id)
{
+ /* AMD Geode LX */
case 0x1022:
- if (dev->device_id == 0x2081) {
+ if (dev->device_id == 0x2081)
driverList[0] = "geode";
- driverList[1] = "amd";
- }
+ break;
+ /* older Geode products acquired by AMD still carry an NSC vendor_id */
+ case 0x100B:
+ if (dev->device_id == 0x0030) {
+ /* NSC Geode GX2 specifically ... */
+ driverList[0] = "geode";
+ /* GX2 support started its life in the NSC tree and was later
+ forked by AMD for GEODE so we keep it as a backup */
+ driverList[1] = "nsc";
+ } else
+ /* ... or any other NSC Geode e.g. SC series */
+ driverList[0] = "nsc";
+ break;
+ /* Cyrix Geode GX1 */
+ case 0x1078:
+ if (dev->device_id == 0x0104)
+ driverList[0] = "cyrix";
break;
case 0x1142: driverList[0] = "apm"; break;
case 0xedd8: driverList[0] = "ark"; break;
@@ -176,7 +188,6 @@ videoPtrToDriverList(struct pci_device *dev,
break; /* "hooray" for poulsbo */
} else {
driverList[0] = "intel";
- driverList[1] = "i810";
}
break;
case 0x102b: driverList[0] = "mga"; break;
@@ -272,7 +283,7 @@ xf86AutoConfig(void)
return (ret == CONFIG_OK);
}
-int
+static int
xchomp(char *line)
{
size_t len = 0;
@@ -288,46 +299,6 @@ xchomp(char *line)
return 0;
}
-GDevPtr
-autoConfigDevice(GDevPtr preconf_device)
-{
- GDevPtr ptr = NULL;
-
- if (!xf86configptr) {
- return NULL;
- }
-
- /* If there's a configured section with no driver chosen, use it */
- if (preconf_device) {
- ptr = preconf_device;
- } else {
- ptr = xcalloc(1, sizeof(GDevRec));
- if (!ptr) {
- return NULL;
- }
- ptr->chipID = -1;
- ptr->chipRev = -1;
- ptr->irq = -1;
-
- ptr->active = TRUE;
- ptr->claimed = FALSE;
- ptr->identifier = "Autoconfigured Video Device";
- ptr->driver = NULL;
- }
- if (!ptr->driver) {
- ptr->driver = chooseVideoDriver();
- }
-
- /* TODO Handle multiple screen sections */
- if (xf86ConfigLayout.screens && !xf86ConfigLayout.screens->screen->device) {
- xf86ConfigLayout.screens->screen->device = ptr;
- ptr->myScreenSection = xf86ConfigLayout.screens->screen;
- }
- xf86Msg(X_DEFAULT, "Assigned the driver to the xf86ConfigLayout\n");
-
- return ptr;
-}
-
#ifdef __linux__
/* This function is used to provide a workaround for binary drivers that
* don't export their PCI ID's properly. If distros don't end up using this
@@ -451,8 +422,25 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
if (xf86Info.consoleFd >= 0) {
struct vis_identifier visid;
const char *cp;
+ extern char xf86SolarisFbDev[PATH_MAX];
+ int iret;
- if (ioctl(xf86Info.consoleFd, VIS_GETIDENTIFIER, &visid) >= 0) {
+ SYSCALL(iret = ioctl(xf86Info.consoleFd, VIS_GETIDENTIFIER, &visid));
+ if (iret < 0) {
+ int fbfd;
+
+ fbfd = open(xf86SolarisFbDev, O_RDONLY);
+ if (fbfd >= 0) {
+ SYSCALL(iret = ioctl(fbfd, VIS_GETIDENTIFIER, &visid));
+ close(fbfd);
+ }
+ }
+
+ if (iret < 0) {
+ xf86Msg(X_WARNING,
+ "could not get frame buffer identifier from %s\n",
+ xf86SolarisFbDev);
+ } else {
xf86Msg(X_PROBED, "console driver: %s\n", visid.name);
/* Special case from before the general case was set */
@@ -532,7 +520,7 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
}
}
-char*
+static char*
chooseVideoDriver(void)
{
char *chosen_driver = NULL;
@@ -555,3 +543,43 @@ chooseVideoDriver(void)
return chosen_driver;
}
+
+GDevPtr
+autoConfigDevice(GDevPtr preconf_device)
+{
+ GDevPtr ptr = NULL;
+
+ if (!xf86configptr) {
+ return NULL;
+ }
+
+ /* If there's a configured section with no driver chosen, use it */
+ if (preconf_device) {
+ ptr = preconf_device;
+ } else {
+ ptr = xcalloc(1, sizeof(GDevRec));
+ if (!ptr) {
+ return NULL;
+ }
+ ptr->chipID = -1;
+ ptr->chipRev = -1;
+ ptr->irq = -1;
+
+ ptr->active = TRUE;
+ ptr->claimed = FALSE;
+ ptr->identifier = "Autoconfigured Video Device";
+ ptr->driver = NULL;
+ }
+ if (!ptr->driver) {
+ ptr->driver = chooseVideoDriver();
+ }
+
+ /* TODO Handle multiple screen sections */
+ if (xf86ConfigLayout.screens && !xf86ConfigLayout.screens->screen->device) {
+ xf86ConfigLayout.screens->screen->device = ptr;
+ ptr->myScreenSection = xf86ConfigLayout.screens->screen;
+ }
+ xf86Msg(X_DEFAULT, "Assigned the driver to the xf86ConfigLayout\n");
+
+ return ptr;
+}
diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
index 0d732d0b1..f0a0723f9 100644
--- a/hw/xfree86/common/xf86Bus.c
+++ b/hw/xfree86/common/xf86Bus.c
@@ -40,59 +40,28 @@
#include "os.h"
#include "xf86.h"
#include "xf86Priv.h"
-#include "xf86Resources.h"
/* Bus-specific headers */
#include "xf86Bus.h"
#define XF86_OS_PRIVS
-#define NEED_OS_RAC_PROTOS
#include "xf86_OSproc.h"
+#include "xf86VGAarbiter.h"
-#include "xf86RAC.h"
#include "Pci.h"
/* Entity data */
EntityPtr *xf86Entities = NULL; /* Bus slots claimed by drivers */
int xf86NumEntities = 0;
static int xf86EntityPrivateCount = 0;
-BusAccPtr xf86BusAccInfo = NULL;
-
-static void
-noopEnableDisable(void *arg) { }
-
-xf86AccessRec AccessNULL = { noopEnableDisable, noopEnableDisable, NULL };
-
-xf86CurrentAccessRec xf86CurrentAccess = {NULL,NULL};
BusRec primaryBus = { BUS_NONE, { 0 } };
static Bool xf86ResAccessEnter = FALSE;
-/* resource lists */
-static resPtr Acc = NULL;
-
-/* predefined special resources */
-resRange resVgaExclusive[] = {_VGA_EXCLUSIVE, _END};
-resRange resVgaShared[] = {_VGA_SHARED, _END};
-resRange resVgaMemShared[] = {_VGA_SHARED_MEM,_END};
-resRange resVgaIoShared[] = {_VGA_SHARED_IO,_END};
-resRange resVgaUnusedExclusive[] = {_VGA_EXCLUSIVE_UNUSED, _END};
-resRange resVgaUnusedShared[] = {_VGA_SHARED_UNUSED, _END};
-resRange resVgaSparseExclusive[] = {_VGA_EXCLUSIVE_SPARSE, _END};
-resRange resVgaSparseShared[] = {_VGA_SHARED_SPARSE, _END};
-resRange res8514Exclusive[] = {_8514_EXCLUSIVE, _END};
-resRange res8514Shared[] = {_8514_SHARED, _END};
-
-/* Flag: do we need RAC ? */
-static Bool needRAC = FALSE;
static Bool doFramebufferMode = FALSE;
-/* state change notification callback list */
-static StateChangeNotificationPtr StateChangeNotificationList;
-static void notifyStateChange(xf86NotifyState state);
-
/*
* Call the bus probes relevant to the architecture.
*
@@ -151,17 +120,10 @@ void
xf86EntityInit(void)
{
int i;
- xf86AccessPtr pacc;
for (i = 0; i < xf86NumEntities; i++)
if (xf86Entities[i]->entityInit) {
- if (xf86Entities[i]->access->busAcc)
- ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
- (xf86Entities[i]->access->busAcc);
- pacc = xf86Entities[i]->access->fallback;
- pacc->AccessEnable(pacc->arg);
xf86Entities[i]->entityInit(i,xf86Entities[i]->private);
- pacc->AccessDisable(pacc->arg);
}
}
@@ -181,17 +143,10 @@ static void
EntityEnter(void)
{
int i;
- xf86AccessPtr pacc;
for (i = 0; i < xf86NumEntities; i++)
if (xf86Entities[i]->entityEnter) {
- if (xf86Entities[i]->access->busAcc)
- ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
- (xf86Entities[i]->access->busAcc);
- pacc = xf86Entities[i]->access->fallback;
- pacc->AccessEnable(pacc->arg);
xf86Entities[i]->entityEnter(i,xf86Entities[i]->private);
- pacc->AccessDisable(pacc->arg);
}
}
@@ -199,17 +154,10 @@ static void
EntityLeave(void)
{
int i;
- xf86AccessPtr pacc;
for (i = 0; i < xf86NumEntities; i++)
if (xf86Entities[i]->entityLeave) {
- if (xf86Entities[i]->access->busAcc)
- ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
- (xf86Entities[i]->access->busAcc);
- pacc = xf86Entities[i]->access->fallback;
- pacc->AccessEnable(pacc->arg);
xf86Entities[i]->entityLeave(i,xf86Entities[i]->private);
- pacc->AccessDisable(pacc->arg);
}
}
@@ -269,8 +217,6 @@ xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex)
pScrn->entityList = xnfrealloc(pScrn->entityList,
pScrn->numEntities * sizeof(int));
pScrn->entityList[pScrn->numEntities - 1] = entityIndex;
- xf86Entities[entityIndex]->access->next = pScrn->access;
- pScrn->access = xf86Entities[entityIndex]->access;
xf86Entities[entityIndex]->inUse = TRUE;
pScrn->entityInstanceList = xnfrealloc(pScrn->entityInstanceList,
pScrn->numEntities * sizeof(int));
@@ -320,26 +266,15 @@ void
xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex)
{
int i;
- EntityAccessPtr *ptr = (EntityAccessPtr *)&pScrn->access;
- EntityAccessPtr peacc;
for (i = 0; i < pScrn->numEntities; i++) {
if (pScrn->entityList[i] == entityIndex) {
- peacc = xf86Entities[pScrn->entityList[i]]->access;
- (*ptr) = peacc->next;
- /* disable entity: call disable func */
- if (peacc->pAccess)
- peacc->pAccess->AccessDisable(peacc->pAccess->arg);
- /* also disable fallback - just in case */
- if (peacc->fallback)
- peacc->fallback->AccessDisable(peacc->fallback->arg);
for (i++; i < pScrn->numEntities; i++)
pScrn->entityList[i-1] = pScrn->entityList[i];
pScrn->numEntities--;
xf86Entities[entityIndex]->inUse = FALSE;
break;
}
- ptr = &(xf86Entities[pScrn->entityList[i]]->access->next);
}
}
@@ -351,7 +286,6 @@ void
xf86ClearEntityListForScreen(int scrnIndex)
{
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
- EntityAccessPtr peacc;
int i, entityIndex;
if (pScrn->entityList == NULL || pScrn->numEntities == 0) return;
@@ -360,43 +294,13 @@ xf86ClearEntityListForScreen(int scrnIndex)
entityIndex = pScrn->entityList[i];
xf86Entities[entityIndex]->inUse = FALSE;
/* disable resource: call the disable function */
- peacc = xf86Entities[entityIndex]->access;
- if (peacc->pAccess)
- peacc->pAccess->AccessDisable(peacc->pAccess->arg);
- /* and the fallback function */
- if (peacc->fallback)
- peacc->fallback->AccessDisable(peacc->fallback->arg);
- /* shared resources are only needed when entity is active: remove */
- xf86DeallocateResourcesForEntity(entityIndex, ResShared);
}
xfree(pScrn->entityList);
xfree(pScrn->entityInstanceList);
- if (pScrn->CurrentAccess->pIoAccess == (EntityAccessPtr)pScrn->access)
- pScrn->CurrentAccess->pIoAccess = NULL;
- if (pScrn->CurrentAccess->pMemAccess == (EntityAccessPtr)pScrn->access)
- pScrn->CurrentAccess->pMemAccess = NULL;
pScrn->entityList = NULL;
pScrn->entityInstanceList = NULL;
}
-void
-xf86DeallocateResourcesForEntity(int entityIndex, unsigned long type)
-{
- resPtr *pprev_next = &Acc;
- resPtr res = Acc;
-
- while (res) {
- if (res->entityIndex == entityIndex &&
- (type & ResAccMask & res->res_type))
- {
- (*pprev_next) = res->next;
- xfree(res);
- } else
- pprev_next = &(res->next);
- res = (*pprev_next);
- }
-}
-
/*
* Add an extra device section (GDevPtr) to an entity.
*/
@@ -439,7 +343,6 @@ xf86GetEntityInfo(int entityIndex)
pEnt->location = xf86Entities[entityIndex]->bus;
pEnt->active = xf86Entities[entityIndex]->active;
pEnt->chipset = xf86Entities[entityIndex]->chipset;
- pEnt->resources = xf86Entities[entityIndex]->resources;
pEnt->driver = xf86Entities[entityIndex]->driver;
if ( (xf86Entities[entityIndex]->devices) &&
(xf86Entities[entityIndex]->devices[0]) ) {
@@ -483,72 +386,12 @@ xf86GetDevFromEntity(int entityIndex, int instance)
}
/*
- * general generic disable function.
- */
-static void
-disableAccess(void)
-{
- int i;
- xf86AccessPtr pacc;
- EntityAccessPtr peacc;
-
- /* call disable funcs and reset current access pointer */
- /* the entity specific access funcs are in an enabled */
- /* state - driver must restore their state explicitely */
- for (i = 0; i < xf86NumScreens; i++) {
- peacc = xf86Screens[i]->CurrentAccess->pIoAccess;
- while (peacc) {
- if (peacc->pAccess)
- peacc->pAccess->AccessDisable(peacc->pAccess->arg);
- peacc = peacc->next;
- }
- xf86Screens[i]->CurrentAccess->pIoAccess = NULL;
- peacc = xf86Screens[i]->CurrentAccess->pMemAccess;
- while (peacc) {
- if (peacc->pAccess)
- peacc->pAccess->AccessDisable(peacc->pAccess->arg);
- peacc = peacc->next;
- }
- xf86Screens[i]->CurrentAccess->pMemAccess = NULL;
- }
- /* then call the generic entity disable funcs */
- for (i = 0; i < xf86NumEntities; i++) {
- pacc = xf86Entities[i]->access->fallback;
- pacc->AccessDisable(pacc->arg);
- }
-}
-
-static void
-clearAccess(void)
-{
- int i;
-
- /* call disable funcs and reset current access pointer */
- /* the entity specific access funcs are in an enabled */
- /* state - driver must restore their state explicitely */
- for (i = 0; i < xf86NumScreens; i++) {
- xf86Screens[i]->CurrentAccess->pIoAccess = NULL;
- xf86Screens[i]->CurrentAccess->pMemAccess = NULL;
- }
-
-}
-
-/*
- * Generic interface to bus specific code - add other buses here
- */
-
-/*
* xf86AccessInit() - set up everything needed for access control
* called only once on first server generation.
*/
void
xf86AccessInit(void)
{
- initPciState();
- initPciBusState();
- DisablePciBusAccess();
- DisablePciAccess();
-
xf86ResAccessEnter = TRUE;
}
@@ -566,12 +409,7 @@ xf86AccessEnter(void)
* on enter we simply disable routing of special resources
* to any bus and let the RAC code to "open" the right bridges.
*/
- PciBusStateEnter();
- DisablePciBusAccess();
- PciStateEnter();
- disableAccess();
EntityEnter();
- notifyStateChange(NOTIFY_ENTER);
xf86EnterServerState(SETUP);
xf86ResAccessEnter = TRUE;
}
@@ -590,35 +428,9 @@ xf86AccessLeave(void)
{
if (!xf86ResAccessEnter)
return;
- notifyStateChange(NOTIFY_LEAVE);
- disableAccess();
- DisablePciBusAccess();
EntityLeave();
}
-void
-xf86AccessLeaveState(void)
-{
- if (!xf86ResAccessEnter)
- return;
- xf86ResAccessEnter = FALSE;
- PciStateLeave();
- PciBusStateLeave();
-}
-
-/*
- * xf86AccessRestoreState() - Restore the access registers to the
- * state before X was started. This is handy for framebuffers.
- */
-static void
-xf86AccessRestoreState(void)
-{
- if (!xf86ResAccessEnter)
- return;
- PciStateLeave();
- PciBusStateLeave();
-}
-
/*
* xf86EnableAccess() -- enable access to controlled resources.
* To reduce latency when switching access the ScrnInfoRec has
@@ -637,879 +449,11 @@ xf86AccessRestoreState(void)
void
xf86EnableAccess(ScrnInfoPtr pScrn)
{
- register EntityAccessPtr peAcc = (EntityAccessPtr) pScrn->access;
- register EntityAccessPtr pceAcc;
- register xf86AccessPtr pAcc;
- EntityAccessPtr tmp;
-
DebugF("Enable access %i\n",pScrn->scrnIndex);
- /* Entity is not under access control or currently enabled */
- if (!pScrn->access) {
- if (pScrn->busAccess) {
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- }
- return;
- }
-
- switch (pScrn->resourceType) {
- case IO:
- pceAcc = pScrn->CurrentAccess->pIoAccess;
- if (peAcc == pceAcc) {
- return;
- }
- if (pScrn->CurrentAccess->pMemAccess == pceAcc)
- pScrn->CurrentAccess->pMemAccess = NULL;
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if (pAcc)
- pAcc->AccessDisable(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- if (pScrn->busAccess)
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- while (peAcc) {
- pAcc = peAcc->pAccess;
- if (pAcc)
- pAcc->AccessEnable(pAcc->arg);
- peAcc = peAcc->next;
- }
- pScrn->CurrentAccess->pIoAccess = (EntityAccessPtr) pScrn->access;
- return;
-
- case MEM_IO:
- pceAcc = pScrn->CurrentAccess->pIoAccess;
- if (peAcc != pceAcc) { /* current Io != pAccess */
- tmp = pceAcc;
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if (pAcc)
- pAcc->AccessDisable(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- if (peAcc != pceAcc /* current Mem != pAccess */
- && tmp !=pceAcc) {
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if (pAcc)
- pAcc->AccessDisable(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- }
- } else { /* current Io == pAccess */
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- if (pceAcc == peAcc) { /* current Mem == pAccess */
- return;
- }
- while (pceAcc) { /* current Mem != pAccess */
- pAcc = pceAcc->pAccess;
- if (pAcc)
- pAcc->AccessDisable(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- }
- if (pScrn->busAccess)
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- while (peAcc) {
- pAcc = peAcc->pAccess;
- if (pAcc)
- pAcc->AccessEnable(pAcc->arg);
- peAcc = peAcc->next;
- }
- pScrn->CurrentAccess->pMemAccess =
- pScrn->CurrentAccess->pIoAccess = (EntityAccessPtr) pScrn->access;
- return;
-
- case MEM:
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- if (peAcc == pceAcc) {
- return;
- }
- if (pScrn->CurrentAccess->pIoAccess == pceAcc)
- pScrn->CurrentAccess->pIoAccess = NULL;
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if (pAcc)
- pAcc->AccessDisable(pAcc->arg);
- pceAcc = pceAcc->next;
- }
- if (pScrn->busAccess)
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- while (peAcc) {
- pAcc = peAcc->pAccess;
- if (pAcc)
- pAcc->AccessEnable(pAcc->arg);
- peAcc = peAcc->next;
- }
- pScrn->CurrentAccess->pMemAccess = (EntityAccessPtr) pScrn->access;
- return;
-
- case NONE:
- if (pScrn->busAccess) {
- ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
- }
- return;
- }
-}
-
-void
-xf86SetCurrentAccess(Bool Enable, ScrnInfoPtr pScrn)
-{
- EntityAccessPtr pceAcc2 = NULL;
- register EntityAccessPtr pceAcc = NULL;
- register xf86AccessPtr pAcc;
-
-
- switch(pScrn->resourceType) {
- case IO:
- pceAcc = pScrn->CurrentAccess->pIoAccess;
- break;
- case MEM:
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- break;
- case MEM_IO:
- pceAcc = pScrn->CurrentAccess->pMemAccess;
- pceAcc2 = pScrn->CurrentAccess->pIoAccess;
- break;
- default:
- break;
- }
-
- while (pceAcc) {
- pAcc = pceAcc->pAccess;
- if (pAcc) {
- if (Enable) {
- pAcc->AccessEnable(pAcc->arg);
- } else {
- pAcc->AccessDisable(pAcc->arg);
- }
- }
- pceAcc = pceAcc->next;
- if (!pceAcc) {
- pceAcc = pceAcc2;
- pceAcc2 = NULL;
- }
- }
-}
-
-void
-xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
- xf86SetAccessFuncPtr oldFuncs)
-{
- AccessFuncPtr rac;
-
- if (!xf86Entities[pEnt->index]->rac)
- xf86Entities[pEnt->index]->rac = xnfcalloc(1,sizeof(AccessFuncRec));
-
- rac = xf86Entities[pEnt->index]->rac;
-
- rac->mem_new = funcs->mem;
- rac->io_new = funcs->io;
- rac->io_mem_new = funcs->io_mem;
-
- rac->old = oldFuncs;
-}
-
-/*
- * Conflict checking
- */
-
-static memType
-getMask(memType val)
-{
- memType mask = 0;
- memType tmp = 0;
-
- mask=~mask;
- tmp = ~((~tmp) >> 1);
-
- while (!(val & tmp)) {
- mask = mask >> 1;
- val = val << 1;
- }
- return mask;
-}
-
-/*
- * checkConflictBlock() -- check for conflicts of a block resource range.
- * If conflict is found return end of conflicting range. Else return 0.
- */
-static memType
-checkConflictBlock(resRange *range, resPtr pRes)
-{
- memType val,tmp,prev;
- int i;
-
- switch (pRes->res_type & ResExtMask) {
- case ResBlock:
- if (range->rBegin < pRes->block_end &&
- range->rEnd > pRes->block_begin) {
- DebugF("b-b conflict w: %lx %lx\n",
- pRes->block_begin,pRes->block_end);
- return pRes->block_end < range->rEnd ?
- pRes->block_end : range->rEnd;
- }
- return 0;
- case ResSparse:
- if (pRes->sparse_base > range->rEnd) return 0;
-
- val = (~pRes->sparse_mask | pRes->sparse_base) & getMask(range->rEnd);
- DebugF("base = 0x%lx, mask = 0x%lx, begin = 0x%lx, end = 0x%lx ,"
- "val = 0x%lx\n",
- pRes->sparse_base, pRes->sparse_mask, range->rBegin,
- range->rEnd, val);
- i = sizeof(memType) * 8;
- tmp = prev = pRes->sparse_base;
-
- while (i) {
- tmp |= 1<< (--i) & val;
- if (tmp > range->rEnd)
- tmp = prev;
- else
- prev = tmp;
- }
- if (tmp >= range->rBegin) {
- DebugF("conflict found at: 0x%lx\n",tmp);
- DebugF("b-d conflict w: %lx %lx\n",
- pRes->sparse_base,pRes->sparse_mask);
- return tmp;
- }
- else
- return 0;
- }
- return 0;
-}
-
-/*
- * checkConflictSparse() -- check for conflicts of a sparse resource range.
- * If conflict is found return base of conflicting region. Else return 0.
- */
-#define mt_max ~(memType)0
-#define length sizeof(memType) * 8
-static memType
-checkConflictSparse(resRange *range, resPtr pRes)
-{
- memType val, tmp, prev;
- int i;
-
- switch (pRes->res_type & ResExtMask) {
- case ResSparse:
- tmp = pRes->sparse_mask & range->rMask;
- if ((tmp & pRes->sparse_base) == (tmp & range->rBase)) {
- DebugF("s-b conflict w: %lx %lx\n",
- pRes->sparse_base,pRes->sparse_mask);
- return pRes->sparse_mask;
- }
- return 0;
-
- case ResBlock:
- if (pRes->block_end < range->rBase) return 0;
-
- val = (~range->rMask | range->rBase) & getMask(pRes->block_end);
- i = length;
- tmp = prev = range->rBase;
-
- while (i) {
- DebugF("tmp = 0x%lx\n",tmp);
- tmp |= 1<< (--i) & val;
- if (tmp > pRes->block_end)
- tmp = prev;
- else
- prev = tmp;
- }
- if (tmp < pRes->block_begin)
- return 0;
- else {
- /*
- * now we subdivide the block region in sparse regions
- * with base values = 2^n and find the smallest mask.
- * This might be done in a simpler way....
- */
- memType mask, m_mask = 0, base = pRes->block_begin;
- int i;
- while (base < pRes->block_end) {
- for (i = 1; i < length; i++)
- if ( base != (base & (mt_max << i))) break;
- mask = mt_max >> (length - i);
- do mask >>= 1;
- while ((mask + base + 1) > pRes->block_end);
- /* m_mask and are _inverted_ sparse masks */
- m_mask = mask > m_mask ? mask : m_mask;
- base = base + mask + 1;
- }
- DebugF("conflict found at: 0x%lx\n",tmp);
- DebugF("b-b conflict w: %lx %lx\n",
- pRes->block_begin,pRes->block_end);
- return ~m_mask;
- }
- }
- return 0;
-}
-#undef mt_max
-#undef length
-
-/*
- * needCheck() -- this function decides whether to check for conflicts
- * depending on the types of the resource ranges and their locations
- */
-static Bool
-needCheck(resPtr pRes, unsigned long type, int entityIndex, xf86State state)
-{
- /* the same entity shouldn't conflict with itself */
- ScrnInfoPtr pScrn;
- int i;
- BusType loc = BUS_NONE;
- BusType r_loc = BUS_NONE;
-
- if ((pRes->res_type & ResTypeMask) != (type & ResTypeMask))
- return FALSE;
-
- /*
- * Resources set by BIOS (ResBios) are allowed to conflict
- * with resources marked (ResBios).
- */
- if (pRes->res_type & type & ResBios)
- return FALSE;
-
- if (type & pRes->res_type & ResUnused)
- return FALSE;
-
- if (state == OPERATING) {
- if (type & ResDisableOpr || pRes->res_type & ResDisableOpr)
- return FALSE;
- if (type & pRes->res_type & ResUnusedOpr) return FALSE;
- /*
- * Maybe we should have ResUnused set The resUnusedOpr
- * bit, too. This way we could avoid this confusion
- */
- if ((type & ResUnusedOpr && pRes->res_type & ResUnused) ||
- (type & ResUnused && pRes->res_type & ResUnusedOpr))
- return FALSE;
- }
-
- if (entityIndex > -1)
- loc = xf86Entities[entityIndex]->bus.type;
- if (pRes->entityIndex > -1)
- r_loc = xf86Entities[pRes->entityIndex]->bus.type;
-
- if ((type & ResAccMask) == ResShared &&
- (pRes->res_type & ResAccMask) == ResShared)
- return FALSE;
-
- if (pRes->entityIndex == entityIndex) return FALSE;
-
- if (pRes->entityIndex > -1 &&
- (pScrn = xf86FindScreenForEntity(entityIndex))) {
- for (i = 0; i < pScrn->numEntities; i++)
- if (pScrn->entityList[i] == pRes->entityIndex) return FALSE;
- }
- return TRUE;
-}
-
-/*
- * checkConflict() - main conflict checking function which all other
- * function call.
- */
-static memType
-checkConflict(resRange *rgp, resPtr pRes, int entityIndex,
- xf86State state, Bool ignoreIdentical)
-{
- memType ret;
-
- while(pRes) {
- if (!needCheck(pRes,rgp->type, entityIndex ,state)) {
- pRes = pRes->next;
- continue;
- }
- switch (rgp->type & ResExtMask) {
- case ResBlock:
- if (rgp->rEnd < rgp->rBegin) {
- xf86Msg(X_ERROR,"end of block range 0x%lx < begin 0x%lx\n",
- (long)rgp->rEnd, (long)rgp->rBegin);
- return 0;
- }
- if ((ret = checkConflictBlock(rgp, pRes))) {
- if (!ignoreIdentical || (rgp->rBegin != pRes->block_begin)
- || (rgp->rEnd != pRes->block_end))
- return ret;
- }
- break;
- case ResSparse:
- if ((rgp->rBase & rgp->rMask) != rgp->rBase) {
- xf86Msg(X_ERROR,"sparse io range (base: 0x%lx mask: 0x%lx)"
- "doesn't satisfy (base & mask = mask)\n",
- (long)rgp->rBase, (long)rgp->rMask);
- return 0;
- }
- if ((ret = checkConflictSparse(rgp, pRes))) {
- if (!ignoreIdentical || (rgp->rBase != pRes->sparse_base)
- || (rgp->rMask != pRes->sparse_mask))
- return ret;
- }
- break;
- }
- pRes = pRes->next;
- }
- return 0;
-}
-
-/*
- * xf86ChkConflict() - This function is the low level interface to
- * the resource broker that gets exported. Tests all resources ie.
- * performs test with SETUP flag.
- */
-static memType
-xf86ChkConflict(resRange *rgp, int entityIndex)
-{
- return checkConflict(rgp, Acc, entityIndex, SETUP, FALSE);
-}
-
-/*
- * Resources List handling
- */
-
-static resPtr
-xf86JoinResLists(resPtr rlist1, resPtr rlist2)
-{
- resPtr pRes;
-
- if (!rlist1)
- return rlist2;
-
- if (!rlist2)
- return rlist1;
-
- for (pRes = rlist1; pRes->next; pRes = pRes->next)
- ;
- pRes->next = rlist2;
- return rlist1;
-}
-
-resPtr
-xf86AddResToList(resPtr rlist, resRange *range, int entityIndex)
-{
- resPtr new;
-
- switch (range->type & ResExtMask) {
- case ResBlock:
- if (range->rEnd < range->rBegin) {
- xf86Msg(X_ERROR,"end of block range 0x%lx < begin 0x%lx\n",
- (long)range->rEnd, (long)range->rBegin);
- return rlist;
- }
- break;
- case ResSparse:
- if ((range->rBase & range->rMask) != range->rBase) {
- xf86Msg(X_ERROR,"sparse io range (base: 0x%lx mask: 0x%lx)"
- "doesn't satisfy (base & mask = mask)\n",
- (long)range->rBase, (long)range->rMask);
- return rlist;
- }
- break;
- }
-
- new = xnfalloc(sizeof(resRec));
- /*
- * Only background resources may be registered with ResBios
- * and ResEstimated set. Other resources only set it for
- * testing.
- */
- if (entityIndex != (-1))
- range->type &= ~(ResBios | ResEstimated);
- new->val = *range;
- new->entityIndex = entityIndex;
- new->next = rlist;
- return new;
-}
-
-void
-xf86FreeResList(resPtr rlist)
-{
- resPtr pRes;
-
- if (!rlist)
- return;
-
- for (pRes = rlist->next; pRes; rlist = pRes, pRes = pRes->next)
- xfree(rlist);
- xfree(rlist);
-}
-
-static resPtr
-xf86DupResList(const resPtr rlist)
-{
- resPtr pRes, ret, prev, new;
-
- if (!rlist)
- return NULL;
-
- ret = xnfalloc(sizeof(resRec));
- *ret = *rlist;
- prev = ret;
- for (pRes = rlist->next; pRes; pRes = pRes->next) {
- new = xnfalloc(sizeof(resRec));
- *new = *pRes;
- prev->next = new;
- prev = new;
- }
- return ret;
-}
-
-static void
-xf86PrintResList(int verb, resPtr list)
-{
- int i = 0;
- const char *s, *r;
- resPtr tmp = list;
- unsigned long type;
-
- if (!list)
- return;
-
- type = ResMem;
- r = "M";
- while (1) {
- while (list) {
- if ((list->res_type & ResPhysMask) == type) {
- switch (list->res_type & ResExtMask) {
- case ResBlock:
- xf86ErrorFVerb(verb,
- "\t[%d] %d\t%ld\t0x%08lx - 0x%08lx (0x%lx)",
- i, list->entityIndex,
- (list->res_type & ResDomain) >> 24,
- (long)list->block_begin,
- (long)list->block_end,
- (long)(list->block_end -
- list->block_begin + 1));
- break;
- case ResSparse:
- xf86ErrorFVerb(verb, "\t[%d] %d\t%ld\t0x%08lx - 0x%08lx ",
- i, list->entityIndex,
- (list->res_type & ResDomain) >> 24,
- (long)list->sparse_base,
- (long)list->sparse_mask);
- break;
- default:
- list = list->next;
- continue;
- }
- xf86ErrorFVerb(verb, " %s", r);
- switch (list->res_type & ResAccMask) {
- case ResExclusive:
- if (list->res_type & ResUnused)
- s = "x";
- else
- s = "X";
- break;
- case ResShared:
- if (list->res_type & ResUnused)
- s = "s";
- else
- s = "S";
- break;
- default:
- s = "?";
- }
- xf86ErrorFVerb(verb, "%s", s);
- switch (list->res_type & ResExtMask) {
- case ResBlock:
- s = "[B]";
- break;
- case ResSparse:
- s = "[S]";
- break;
- default:
- s = "[?]";
- }
- xf86ErrorFVerb(verb, "%s", s);
- if (list->res_type & ResInit)
- xf86ErrorFVerb(verb, "t");
- if (list->res_type & ResBios)
- xf86ErrorFVerb(verb, "(B)");
- if (list->res_type & ResBus)
- xf86ErrorFVerb(verb, "(b)");
- if (list->res_type & ResOprMask) {
- switch (list->res_type & ResOprMask) {
- case ResUnusedOpr:
- s = "(OprU)";
- break;
- case ResDisableOpr:
- s = "(OprD)";
- break;
- default:
- s = "(Opr?)";
- break;
- }
- xf86ErrorFVerb(verb, "%s", s);
- }
- xf86ErrorFVerb(verb, "\n");
- i++;
- }
- list = list->next;
- }
- if (type == ResIo) break;
- type = ResIo;
- r = "I";
- list = tmp;
- }
-}
-
-resPtr
-xf86AddRangesToList(resPtr list, resRange *pRange, int entityIndex)
-{
- while(pRange && pRange->type != ResEnd) {
- list = xf86AddResToList(list,pRange,entityIndex);
- pRange++;
- }
- return list;
-}
-
-void
-xf86ResourceBrokerInit(void)
-{
- Acc = NULL;
-
- /* Get the ranges used exclusively by the system */
- Acc = xf86AccResFromOS(Acc);
- xf86MsgVerb(X_INFO, 3, "System resource ranges:\n");
- xf86PrintResList(3, Acc);
-}
-
-/*
- * Resource registration
- */
-
-static void
-convertRange2Host(int entityIndex, resRange *pRange)
-{
- if (pRange->type & ResBus) {
- switch (xf86Entities[entityIndex]->bus.type) {
- case BUS_PCI:
- pciConvertRange2Host(entityIndex,pRange);
- break;
- default:
- break;
- }
-
- pRange->type &= ~ResBus;
- }
-}
-
-static void
-xf86ConvertListToHost(int entityIndex, resPtr list)
-{
- while (list) {
- convertRange2Host(entityIndex, &list->val);
- list = list->next;
- }
-}
-
-/*
- * xf86RegisterResources() -- attempts to register listed resources.
- * Returns a resPtr listing all resources not successfully registered, by
- * which we mean, NULL.
- */
-
-resPtr
-xf86RegisterResources(int entityIndex, resList list, unsigned long access)
-{
- resRange range;
- resList list_f = NULL;
-
- if (!list)
- return NULL;
-
- while(list->type != ResEnd) {
- range = *list;
-
- convertRange2Host(entityIndex,&range);
-
- if ((access != ResNone) && (access & ResAccMask)) {
- range.type = (range.type & ~ResAccMask) | (access & ResAccMask);
- }
- range.type &= ~ResEstimated; /* Not allowed for drivers */
- Acc = xf86AddResToList(Acc,&range,entityIndex);
- list++;
- }
- if (list_f)
- xfree(list_f);
-
-#ifdef DEBUG
- xf86MsgVerb(X_INFO, 3,"Resources after driver initialization\n");
- xf86PrintResList(3, Acc);
-#endif
- return NULL;
-
-}
-
-static void
-busTypeSpecific(EntityPtr pEnt, xf86AccessPtr *acc_mem,
- xf86AccessPtr *acc_io, xf86AccessPtr *acc_mem_io)
-{
- switch (pEnt->bus.type) {
- case BUS_SBUS:
- *acc_mem = *acc_io = *acc_mem_io = &AccessNULL;
- break;
- case BUS_PCI: {
- struct pci_device *const dev = pEnt->bus.id.pci;
-
- if ((dev != NULL) && ((void *)dev->user_data != NULL)) {
- pciAccPtr const paccp = (pciAccPtr) dev->user_data;
-
- *acc_io = & paccp->ioAccess;
- *acc_mem = & paccp->memAccess;
- *acc_mem_io = & paccp->io_memAccess;
- }
- else {
- /* FIXME: This is an error path. We should probably have an
- * FIXME: assertion here or something.
- */
- *acc_io = NULL;
- *acc_mem = NULL;
- *acc_mem_io = NULL;
- }
- break;
- }
- default:
- *acc_mem = *acc_io = *acc_mem_io = NULL;
- break;
- }
return;
}
-static void
-setAccess(EntityPtr pEnt, xf86State state)
-{
-
- xf86AccessPtr acc_mem, acc_io, acc_mem_io;
- xf86AccessPtr org_mem = NULL, org_io = NULL, org_mem_io = NULL;
- int prop;
-
- busTypeSpecific(pEnt, &acc_mem, &acc_io, &acc_mem_io);
-
- /* The replacement function needs to handle _all_ shared resources */
- /* unless they are handeled locally and disabled otherwise */
- if (pEnt->rac) {
- if (pEnt->rac->io_new) {
- org_io = acc_io;
- acc_io = pEnt->rac->io_new;
- }
- if (pEnt->rac->mem_new) {
- org_mem = acc_mem;
- acc_mem = pEnt->rac->mem_new;
- }
- if (pEnt->rac->io_mem_new) {
- org_mem_io = acc_mem_io;
- acc_mem_io = pEnt->rac->io_mem_new;
- }
- }
-
- if (state == OPERATING) {
- prop = pEnt->entityProp;
- switch(pEnt->entityProp & NEED_SHARED) {
- case NEED_SHARED:
- pEnt->access->rt = MEM_IO;
- break;
- case NEED_IO_SHARED:
- pEnt->access->rt = IO;
- break;
- case NEED_MEM_SHARED:
- pEnt->access->rt = MEM;
- break;
- default:
- pEnt->access->rt = NONE;
- }
- } else {
- prop = NEED_SHARED | NEED_MEM | NEED_IO;
- pEnt->access->rt = MEM_IO;
- }
-
- switch(pEnt->access->rt) {
- case IO:
- pEnt->access->pAccess = acc_io;
- break;
- case MEM:
- pEnt->access->pAccess = acc_mem;
- break;
- case MEM_IO:
- pEnt->access->pAccess = acc_mem_io;
- break;
- default: /* no conflicts at all */
- pEnt->access->pAccess = NULL; /* remove from RAC */
- break;
- }
-
- if (org_io) {
- /* does the driver want the old access func? */
- if (pEnt->rac->old) {
- /* give it to the driver, leave state disabled */
- pEnt->rac->old->io = org_io;
- } else {
- /* driver doesn't want it - enable generic access */
- org_io->AccessEnable(org_io->arg);
- }
- }
-
- if (org_mem_io) {
- /* does the driver want the old access func? */
- if (pEnt->rac->old) {
- /* give it to the driver, leave state disabled */
- pEnt->rac->old->io_mem = org_mem_io;
- } else {
- /* driver doesn't want it - enable generic access */
- org_mem_io->AccessEnable(org_mem_io->arg);
- }
- }
-
- if (org_mem) {
- /* does the driver want the old access func? */
- if (pEnt->rac->old) {
- /* give it to the driver, leave state disabled */
- pEnt->rac->old->mem = org_mem;
- } else {
- /* driver doesn't want it - enable generic access */
- org_mem->AccessEnable(org_mem->arg);
- }
- }
-
- if (!(prop & NEED_MEM_SHARED)){
- if (prop & NEED_MEM) {
- if (acc_mem)
- acc_mem->AccessEnable(acc_mem->arg);
- } else {
- if (acc_mem)
- acc_mem->AccessDisable(acc_mem->arg);
- }
- }
-
- if (!(prop & NEED_IO_SHARED)) {
- if (prop & NEED_IO) {
- if (acc_io)
- acc_io->AccessEnable(acc_io->arg);
- } else {
- if (acc_io)
- acc_io->AccessDisable(acc_io->arg);
- }
- }
-
- /* disable shared resources */
- if (pEnt->access->pAccess)
- pEnt->access->pAccess->AccessDisable(pEnt->access->pAccess->arg);
-
- /*
- * If device is not under access control it is enabled.
- * If it needs bus routing do it here as it isn't bus
- * type specific. Any conflicts should be checked at this
- * stage
- */
- if (!pEnt->access->pAccess
- && (pEnt->entityProp & (state == SETUP ? NEED_VGA_ROUTED_SETUP :
- NEED_VGA_ROUTED)))
- ((BusAccPtr)pEnt->busAcc)->set_f(pEnt->busAcc);
-}
-
-
/*
* xf86EnterServerState() -- set state the server is in.
*/
@@ -1534,11 +478,6 @@ SetSIGIOForState(xf86State state)
void
xf86EnterServerState(xf86State state)
{
- EntityPtr pEnt;
- ScrnInfoPtr pScrn;
- int i,j;
- int needVGA = 0;
- resType rt;
/*
* This is a good place to block SIGIO during SETUP state.
* SIGIO should be blocked in SETUP state otherwise (u)sleep()
@@ -1551,253 +490,7 @@ xf86EnterServerState(xf86State state)
else
DebugF("Entering OPERATING state\n");
- /* When servicing a dumb framebuffer we don't need to do anything */
- if (doFramebufferMode) return;
-
- for (i=0; i<xf86NumScreens; i++) {
- pScrn = xf86Screens[i];
- j = pScrn->entityList[pScrn->numEntities - 1];
- pScrn->access = xf86Entities[j]->access;
-
- for (j = 0; j<xf86Screens[i]->numEntities; j++) {
- pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
- if (pEnt->entityProp & (state == SETUP ? NEED_VGA_ROUTED_SETUP
- : NEED_VGA_ROUTED))
- xf86Screens[i]->busAccess = pEnt->busAcc;
- }
- if (xf86Screens[i]->busAccess)
- needVGA ++;
- }
-
- /*
- * if we just have one screen we don't have RAC.
- * Therefore just enable the screen and return.
- */
- if (!needRAC) {
- xf86EnableAccess(xf86Screens[0]);
- notifyStateChange(NOTIFY_ENABLE);
- return;
- }
-
- if (state == SETUP)
- notifyStateChange(NOTIFY_SETUP_TRANSITION);
- else
- notifyStateChange(NOTIFY_OPERATING_TRANSITION);
-
- clearAccess();
- for (i=0; i<xf86NumScreens;i++) {
-
- rt = NONE;
-
- for (j = 0; j<xf86Screens[i]->numEntities; j++) {
- pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
- setAccess(pEnt,state);
-
- if (pEnt->access->rt != NONE) {
- if (rt != NONE && rt != pEnt->access->rt)
- rt = MEM_IO;
- else
- rt = pEnt->access->rt;
- }
- }
- xf86Screens[i]->resourceType = rt;
- if (rt == NONE) {
- xf86Screens[i]->access = NULL;
- if (needVGA < 2)
- xf86Screens[i]->busAccess = NULL;
- }
-
- if (xf86Screens[i]->busAccess)
- DebugF("Screen %i setting vga route\n",i);
- switch (rt) {
- case MEM_IO:
- xf86MsgVerb(X_INFO, 3, "Screen %i shares mem & io resources\n",i);
- break;
- case IO:
- xf86MsgVerb(X_INFO, 3, "Screen %i shares io resources\n",i);
- break;
- case MEM:
- xf86MsgVerb(X_INFO, 3, "Screen %i shares mem resources\n",i);
- break;
- default:
- xf86MsgVerb(X_INFO, 3, "Entity %i shares no resources\n",i);
- break;
- }
- }
- if (state == SETUP)
- notifyStateChange(NOTIFY_SETUP);
- else
- notifyStateChange(NOTIFY_OPERATING);
-}
-
-/*
- * xf86SetOperatingState() -- Set ResOperMask for resources listed.
- */
-resPtr
-xf86SetOperatingState(resList list, int entityIndex, int mask)
-{
- resPtr acc;
- resPtr r_fail = NULL;
- resRange range;
-
- while (list->type != ResEnd) {
- range = *list;
- convertRange2Host(entityIndex,&range);
-
- acc = Acc;
- while (acc) {
-#define MASK (ResTypeMask | ResExtMask)
- if ((acc->entityIndex == entityIndex)
- && (acc->val.a == range.a) && (acc->val.b == range.b)
- && ((acc->val.type & MASK) == (range.type & MASK)))
- break;
-#undef MASK
- acc = acc->next;
- }
- if (acc)
- acc->val.type = (acc->val.type & ~ResOprMask)
- | (mask & ResOprMask);
- else {
- r_fail = xf86AddResToList(r_fail,&range,entityIndex);
- }
- list ++;
- }
-
- return r_fail;
-}
-
-/*
- * Stage specific code
- */
-
-/*
- * xf86ClaimFixedResources() is used to allocate non-relocatable resources.
- * This should only be done by a driver's Probe() function.
- */
-void
-xf86ClaimFixedResources(resList list, int entityIndex)
-{
- resPtr ptr = NULL;
- resRange range;
-
- if (!list) return;
-
- while (list->type !=ResEnd) {
- range = *list;
-
- convertRange2Host(entityIndex,&range);
-
- range.type &= ~ResEstimated; /* Not allowed for drivers */
- switch (range.type & ResAccMask) {
- case ResExclusive:
- if (!xf86ChkConflict(&range, entityIndex)) {
- Acc = xf86AddResToList(Acc, &range, entityIndex);
- } else FatalError("xf86ClaimFixedResources conflict\n");
- break;
- case ResShared:
- /* at this stage the resources are just added to the
- * EntityRec. After the Probe() phase this list is checked by
- * xf86PostProbe(). All resources which don't
- * conflict with already allocated ones are allocated
- * and removed from the EntityRec. Thus a non-empty resource
- * list in the EntityRec indicates resource conflicts the
- * driver should either handle or fail.
- */
- if (xf86Entities[entityIndex]->active)
- ptr = xf86AddResToList(ptr,&range,entityIndex);
- break;
- }
- list++;
- }
- xf86Entities[entityIndex]->resources =
- xf86JoinResLists(xf86Entities[entityIndex]->resources,ptr);
- xf86MsgVerb(X_INFO, 3,
- "resource ranges after xf86ClaimFixedResources() call:\n");
- xf86PrintResList(3,Acc);
-#ifdef DEBUG
- if (ptr) {
- xf86MsgVerb(X_INFO, 3, "to be registered later:\n");
- xf86PrintResList(3,ptr);
- }
-#endif
-}
-
-static void
-checkRoutingForScreens(xf86State state)
-{
- resList list = resVgaUnusedExclusive;
- resPtr pResVGA = NULL;
- resPtr pResVGAHost;
- pointer vga = NULL;
- int i,j;
- int entityIndex;
- EntityPtr pEnt;
- resPtr pAcc;
- resRange range;
-
- /*
- * find devices that need VGA routed: ie the ones that have
- * registered VGA resources without ResUnused. ResUnused
- * doesn't conflict with itself therefore use it here.
- */
- while (list->type != ResEnd) { /* create resPtr from resList for VGA */
- range = *list;
- range.type &= ~(ResBios | ResEstimated); /* if set remove them */
- pResVGA = xf86AddResToList(pResVGA, &range, -1);
- list++;
- }
-
- for (i = 0; i < xf86NumScreens; i++) {
- for (j = 0; j < xf86Screens[i]->numEntities; j++) {
- entityIndex = xf86Screens[i]->entityList[j];
- pEnt = xf86Entities[entityIndex];
- pAcc = Acc;
- vga = NULL;
- pResVGAHost = xf86DupResList(pResVGA);
- xf86ConvertListToHost(entityIndex,pResVGAHost);
- while (pAcc) {
- if (pAcc->entityIndex == entityIndex)
- if (checkConflict(&pAcc->val, pResVGAHost,
- entityIndex, state, FALSE)) {
- if (vga && vga != pEnt->busAcc) {
- xf86Msg(X_ERROR, "Screen %i needs vga routed to"
- "different buses - deleting\n",i);
- xf86DeleteScreen(i--,0);
- }
-#ifdef DEBUG
- {
- resPtr rlist = xf86AddResToList(NULL,&pAcc->val,
- pAcc->entityIndex);
- xf86MsgVerb(X_INFO,3,"====== %s\n",
- state == OPERATING ? "OPERATING"
- : "SETUP");
- xf86MsgVerb(X_INFO,3,"%s Resource:\n",
- (pAcc->val.type) & ResMem ? "Mem" :"Io");
- xf86PrintResList(3,rlist);
- xf86FreeResList(rlist);
- xf86MsgVerb(X_INFO,3,"Conflicts with:\n");
- xf86PrintResList(3,pResVGAHost);
- xf86MsgVerb(X_INFO,3,"=====\n");
- }
-#endif
- vga = pEnt->busAcc;
- pEnt->entityProp |= (state == SETUP
- ? NEED_VGA_ROUTED_SETUP : NEED_VGA_ROUTED);
- if (state == OPERATING) {
- if (pAcc->val.type & ResMem)
- pEnt->entityProp |= NEED_VGA_MEM;
- else
- pEnt->entityProp |= NEED_VGA_IO;
- }
- }
- pAcc = pAcc->next;
- }
- if (vga)
- xf86MsgVerb(X_INFO, 3,"Setting vga for screen %i.\n",i);
- xf86FreeResList(pResVGAHost);
- }
- }
- xf86FreeResList(pResVGA);
+ return;
}
/*
@@ -1807,10 +500,6 @@ checkRoutingForScreens(xf86State state)
void
xf86PostProbe(void)
{
- memType val;
- int i,j;
- resPtr resp, acc, tmp, resp_x;
-
if (fbSlotClaimed) {
if (pciSlotClaimed
#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
@@ -1822,519 +511,43 @@ xf86PostProbe(void)
return;
} else {
xf86Msg(X_INFO,"Running in FRAMEBUFFER Mode\n");
- xf86AccessRestoreState();
- notifyStateChange(NOTIFY_ENABLE);
doFramebufferMode = TRUE;
return;
}
}
- acc = tmp = xf86DupResList(Acc);
-
- for (i=0; i<xf86NumEntities; i++) {
- resp = xf86Entities[i]->resources;
- xf86Entities[i]->resources = NULL;
- resp_x = NULL;
- while (resp) {
- if (! (val = checkConflict(&resp->val,acc,i,SETUP,FALSE))) {
- resp->res_type &= ~(ResBios); /* just used for chkConflict() */
- tmp = resp_x;
- resp_x = resp;
- resp = resp->next;
- resp_x->next = tmp;
- } else {
- xf86MsgVerb(X_INFO, 3, "Found conflict at: 0x%lx\n",
- (long)val);
- resp->res_type &= ~ResEstimated;
- tmp = xf86Entities[i]->resources;
- xf86Entities[i]->resources = resp;
- resp = resp->next;
- xf86Entities[i]->resources->next = tmp;
- }
- }
- xf86JoinResLists(Acc,resp_x);
- }
- xf86FreeResList(acc);
-
- xf86MsgVerb(X_INFO, 3, "resource ranges after probing:\n");
- xf86PrintResList(3, Acc);
- checkRoutingForScreens(SETUP);
-
- for (i = 0; i < xf86NumScreens; i++) {
- for (j = 0; j<xf86Screens[i]->numEntities; j++) {
- EntityPtr pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
- if ((pEnt->entityProp & NEED_VGA_ROUTED_SETUP) &&
- ((xf86Screens[i]->busAccess = pEnt->busAcc)))
- break;
- }
- }
-}
-
-static void
-checkRequiredResources(int entityIndex)
-{
- resRange range;
- resPtr pAcc = Acc;
- const EntityPtr pEnt = xf86Entities[entityIndex];
- while (pAcc) {
- if (pAcc->entityIndex == entityIndex) {
- range = pAcc->val;
- /* ResAny to find conflicts with anything. */
- range.type = (range.type & ~ResAccMask) | ResAny | ResBios;
- if (checkConflict(&range,Acc,entityIndex,OPERATING,FALSE))
- switch (pAcc->res_type & ResPhysMask) {
- case ResMem:
- pEnt->entityProp |= NEED_MEM_SHARED;
- break;
- case ResIo:
- pEnt->entityProp |= NEED_IO_SHARED;
- break;
- }
- if (!(pAcc->res_type & ResOprMask)) {
- switch (pAcc->res_type & ResPhysMask) {
- case ResMem:
- pEnt->entityProp |= NEED_MEM;
- break;
- case ResIo:
- pEnt->entityProp |= NEED_IO;
- break;
- }
- }
- }
- pAcc = pAcc->next;
- }
-
- /*
- * After we have checked all resources of an entity agains any
- * other resource we know if the entity need this resource type
- * (ie. mem/io) at all. if not we can disable this type completely,
- * so no need to share it either.
- */
- if ((pEnt->entityProp & NEED_MEM_SHARED)
- && (!(pEnt->entityProp & NEED_MEM)))
- pEnt->entityProp &= ~(unsigned long)NEED_MEM_SHARED;
-
- if ((pEnt->entityProp & NEED_IO_SHARED)
- && (!(pEnt->entityProp & NEED_IO)))
- pEnt->entityProp &= ~(unsigned long)NEED_IO_SHARED;
-}
-
-void
-xf86PostPreInit(void)
-{
- if (doFramebufferMode) return;
-
- if (xf86NumScreens > 1)
- needRAC = TRUE;
-
- xf86MsgVerb(X_INFO, 3, "do I need RAC?");
-
- if (needRAC) {
- xf86ErrorFVerb(3, " Yes, I do.\n");
- } else {
- xf86ErrorFVerb(3, " No, I don't.\n");
- }
-
- xf86MsgVerb(X_INFO, 3, "resource ranges after preInit:\n");
- xf86PrintResList(3, Acc);
}
void
xf86PostScreenInit(void)
{
- int i,j;
- ScreenPtr pScreen;
- unsigned int flags;
- int nummem = 0, numio = 0;
-
+#ifdef HAVE_PCI_DEVICE_VGAARB_INIT
+ int vga_count;
+#endif
if (doFramebufferMode) {
SetSIGIOForState(OPERATING);
return;
}
- DebugF("PostScreenInit generation: %i\n",serverGeneration);
- if (serverGeneration == 1) {
- checkRoutingForScreens(OPERATING);
- for (i=0; i<xf86NumEntities; i++) {
- checkRequiredResources(i);
- }
-
- /*
- * after removing NEED_XXX_SHARED from entities that
- * don't need need XXX resources at all we might have
- * a single entity left that has NEED_XXX_SHARED set.
- * In this case we can delete that, too.
- */
- for (i = 0; i < xf86NumEntities; i++) {
- if (xf86Entities[i]->entityProp & NEED_MEM_SHARED)
- nummem++;
- if (xf86Entities[i]->entityProp & NEED_IO_SHARED)
- numio++;
- }
- for (i = 0; i < xf86NumEntities; i++) {
- if (nummem < 2)
- xf86Entities[i]->entityProp &= ~NEED_MEM_SHARED;
- if (numio < 2)
- xf86Entities[i]->entityProp &= ~NEED_IO_SHARED;
- }
- }
-
- if (xf86Screens && needRAC) {
- int needRACforVga = 0;
-
- for (i = 0; i < xf86NumScreens; i++) {
- for (j = 0; j < xf86Screens[i]->numEntities; j++) {
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_VGA_ROUTED) {
- needRACforVga ++;
- break; /* only count each screen once */
- }
- }
- }
-
- for (i = 0; i < xf86NumScreens; i++) {
- Bool needRACforMem = FALSE, needRACforIo = FALSE;
-
- for (j = 0; j < xf86Screens[i]->numEntities; j++) {
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_MEM_SHARED)
- needRACforMem = TRUE;
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_IO_SHARED)
- needRACforIo = TRUE;
- /*
- * We may need RAC although we don't share any resources
- * as we need to route VGA to the correct bus. This can
- * only be done simultaniously for MEM and IO.
- */
- if (needRACforVga > 1) {
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_VGA_MEM)
- needRACforMem = TRUE;
- if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
- & NEED_VGA_IO)
- needRACforIo = TRUE;
- }
- }
-
- pScreen = xf86Screens[i]->pScreen;
- flags = 0;
- if (needRACforMem) {
- flags |= xf86Screens[i]->racMemFlags;
- xf86ErrorFVerb(3, "Screen %d is using RAC for mem\n", i);
- }
- if (needRACforIo) {
- flags |= xf86Screens[i]->racIoFlags;
- xf86ErrorFVerb(3, "Screen %d is using RAC for io\n", i);
- }
-
- xf86RACInit(pScreen,flags);
- }
+ /*
+ * we need to wrap the arbiter if we have more than
+ * one VGA card - hotplug cries.
+ */
+#ifdef HAVE_PCI_DEVICE_VGAARB_INIT
+ pci_device_vgaarb_get_info(NULL, &vga_count, NULL);
+ if (vga_count > 1 && xf86Screens) {
+ int i;
+ xf86Msg(X_INFO,"Number of VGA devices: %d: arbiter wrapping enabled\n", vga_count);
+ for (i = 0; i < xf86NumScreens; i++)
+ xf86VGAarbiterWrapFunctions(xf86Screens[i]->pScreen);
}
-
+#endif
+ DebugF("PostScreenInit generation: %i\n",serverGeneration);
xf86EnterServerState(OPERATING);
}
/*
- * Sets
- */
-
-
-static resPtr
-decomposeSparse(resRange range)
-{
- resRange new;
- resPtr ret = NULL;
- memType val = range.rBegin;
- int i = 0;
-
- new.type = (range.type & ~ResExtMask) | ResSparse;
-
- while (1) {
- if (val & 0x01) {
- new.rBase = (val << i);
- new.rMask = ~((1 << i) - 1);
- ret = xf86AddResToList(ret,&new,-1);
- val ++;
- }
- i++;
- val >>= 1;
- if ((((val + 1) << i) - 1) > range.rEnd)
- break;
- }
- i--;
- val <<= 1;
-
- while (1) {
- if((((val + 1) << i) - 1)> range.rEnd) {
- if (--i < 0) break;
- val <<= 1;
- } else {
- new.rBase = (val << i);
- new.rMask = ~((1 << i) - 1);
- val++;
- ret = xf86AddResToList(ret,&new,-1);
- }
- }
- return ret;
-}
-
-static Bool
-x_isSubsetOf(resRange range, resPtr list1, resPtr list2)
-{
- resRange range1, range2;
- memType m1_A_m2;
- Bool ret;
- resPtr list;
-
- if (list1) {
- list = list1;
- if ((range.type & ResTypeMask) == (list->res_type & ResTypeMask)) {
- switch (range.type & ResExtMask) {
- case ResBlock:
- if ((list->res_type & ResExtMask) == ResBlock) {
- if (range.rBegin >= list->block_begin
- && range.rEnd <= list->block_end)
- return TRUE;
- else if (range.rBegin < list->block_begin
- && range.rEnd > list->block_end) {
- RANGE(range1, range.rBegin, list->block_begin - 1,
- range.type);
- RANGE(range2, list->block_end + 1, range.rEnd,
- range.type);
- return (x_isSubsetOf(range1,list->next,list2) &&
- x_isSubsetOf(range2,list->next,list2));
- }
- else if (range.rBegin >= list->block_begin
- && range.rBegin <= list->block_end) {
- RANGE(range1, list->block_end + 1, range.rEnd,
- range.type);
- return (x_isSubsetOf(range1,list->next,list2));
- } else if (range.rEnd >= list->block_begin
- && range.rEnd <= list->block_end) {
- RANGE(range1,range.rBegin, list->block_begin - 1,
- range.type);
- return (x_isSubsetOf(range1,list->next,list2));
- }
- }
- break;
- case ResSparse:
- if ((list->res_type & ResExtMask) == ResSparse) {
- memType test;
- int i;
-
- m1_A_m2 = range.rMask & list->sparse_mask;
- if ((range.rBase ^ list->sparse_base) & m1_A_m2)
- break;
- /*
- * We use the following system:
- * let 0 ^= mask:1 base:0, 1 ^= mask:1 base:1,
- * X mask:0 ; S: set TSS: test set for subset
- * NTSS: new test set after test
- * S: 1 0 1 0 X X 0 1 X
- * TSS: 1 0 0 1 1 0 X X X
- * T: 0 0 1 1 0 0 0 0 0
- * NTSS: 1 0 0/X 1/X 1 0 1 0 X
- * R: 0 0 0 0 0 0 1 1 0
- * If R != 0 TSS and S are disjunct
- * If R == 0 TSS is subset of S
- * If R != 0 NTSS contains elements from TSS
- * which are not also members of S.
- * If a T is set one of the correspondig bits
- * in NTSS must be set to the specified value
- * all other are X
- */
- test = list->sparse_mask & ~range.rMask;
- if (test == 0)
- return TRUE;
- for (i = 0; i < sizeof(memType); i++) {
- if ((test >> i) & 0x1) {
- RANGE(range1, ((range.rBase & list->sparse_base)
- | (range.rBase & ~list->sparse_mask)
- | ((~list->sparse_base & list->sparse_mask)
- & ~range.rMask)) & range1.rMask,
- ((range.rMask | list->sparse_mask) & ~test)
- | (1 << i), range.type);
- return (x_isSubsetOf(range1,list->next,list2));
- }
- }
- }
- break;
- }
- }
- return (x_isSubsetOf(range,list->next,list2));
- } else if (list2) {
- resPtr tmpList = NULL;
- switch (range.type & ResExtMask) {
- case ResBlock:
- tmpList = decomposeSparse(range);
- while (tmpList) {
- if (!x_isSubsetOf(tmpList->val,list2,NULL)) {
- xf86FreeResList(tmpList);
- return FALSE;
- }
- tmpList = tmpList->next;
- }
- xf86FreeResList(tmpList);
- return TRUE;
- break;
- case ResSparse:
- while (list2) {
- tmpList = xf86JoinResLists(tmpList,decomposeSparse(list2->val));
- list2 = list2->next;
- }
- ret = x_isSubsetOf(range,tmpList,NULL);
- xf86FreeResList(tmpList);
- return ret;
- break;
- }
- } else
- return FALSE;
-
- return FALSE;
-}
-
-Bool
-xf86IsSubsetOf(resRange range, resPtr list)
-{
- resPtr dup = xf86DupResList(list);
- resPtr r_sp = NULL, r = NULL, tmp = NULL;
- Bool ret = FALSE;
-
- while (dup) {
- tmp = dup;
- dup = dup->next;
- switch (tmp->res_type & ResExtMask) {
- case ResBlock:
- tmp->next = r;
- r = tmp;
- break;
- case ResSparse:
- tmp->next = r_sp;
- r_sp = tmp;
- break;
- }
- }
-
- switch (range.type & ResExtMask) {
- case ResBlock:
- ret = x_isSubsetOf(range,r,r_sp);
- break;
- case ResSparse:
- ret = x_isSubsetOf(range,r_sp,r);
- break;
- }
- xf86FreeResList(r);
- xf86FreeResList(r_sp);
-
- return ret;
-}
-
-static resPtr
-findIntersect(resRange Range, resPtr list)
-{
- resRange range;
- resPtr new = NULL;
-
- while (list) {
- if ((Range.type & ResTypeMask) == (list->res_type & ResTypeMask)) {
- switch (Range.type & ResExtMask) {
- case ResBlock:
- switch (list->res_type & ResExtMask) {
- case ResBlock:
- if (Range.rBegin >= list->block_begin)
- range.rBegin = Range.rBegin;
- else
- range.rBegin = list->block_begin;
- if (Range.rEnd <= list->block_end)
- range.rEnd = Range.rEnd;
- else
- range.rEnd = list->block_end;
- if (range.rEnd > range.rBegin) {
- range.type = Range.type;
- new = xf86AddResToList(new,&range,-1);
- }
- break;
- case ResSparse:
- new = xf86JoinResLists(new,xf86FindIntersectOfLists(new,decomposeSparse(list->val)));
- break;
- }
- break;
- case ResSparse:
- switch (list->res_type & ResExtMask) {
- case ResSparse:
- if (!((~(range.rBase ^ list->sparse_base)
- & (range.rMask & list->sparse_mask)))) {
- RANGE(range, (range.rBase & list->sparse_base)
- | (~range.rMask & list->sparse_base)
- | (~list->sparse_mask & range.rBase),
- range.rMask | list->sparse_mask,
- Range.type);
- new = xf86AddResToList(new,&range,-1);
- }
- break;
- case ResBlock:
- new = xf86JoinResLists(new,xf86FindIntersectOfLists(
- decomposeSparse(range),list));
- break;
- }
- }
- }
- list = list->next;
- }
- return new;
-}
-
-resPtr
-xf86FindIntersectOfLists(resPtr l1, resPtr l2)
-{
- resPtr ret = NULL;
-
- while (l1) {
- ret = xf86JoinResLists(ret,findIntersect(l1->val,l2));
- l1 = l1->next;
- }
- return ret;
-}
-
-#if 0 /* Not used */
-static resPtr
-xf86FindComplement(resRange Range)
-{
- resRange range;
- memType tmp;
- resPtr new = NULL;
- int i;
-
- switch (Range.type & ResExtMask) {
- case ResBlock:
- if (Range.rBegin > 0) {
- RANGE(range, 0, Range.rBegin - 1, Range.type);
- new = xf86AddResToList(new,&range,-1);
- }
- if (Range.rEnd < (memType)~0) {
- RANGE(range,Range.rEnd + 1, (memType)~0, Range.type);
- new = xf86AddResToList(new,&range,-1);
- }
- break;
- case ResSparse:
- tmp = Range.rMask;
- for (i = 0; i < sizeof(memType); i++) {
- if (tmp & 0x1) {
- RANGE(range,(~Range.rMask & range.rMask),(1 << i), Range.type);
- new = xf86AddResToList(new,&range,-1);
- }
- }
- break;
- default:
- break;
- }
- return new;
-}
-#endif
-
-/*
* xf86FindPrimaryDevice() - Find the display device which
* was active when the server was started.
*/
@@ -2367,80 +580,6 @@ xf86FindPrimaryDevice(void)
}
}
-Bool
-xf86NoSharedResources(int screenIndex,resType res)
-{
- int j;
-
- if (screenIndex > xf86NumScreens)
- return TRUE;
-
- for (j = 0; j < xf86Screens[screenIndex]->numEntities; j++) {
- switch (res) {
- case IO:
- if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
- & NEED_IO_SHARED)
- return FALSE;
- break;
- case MEM:
- if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
- & NEED_MEM_SHARED)
- return FALSE;
- break;
- case MEM_IO:
- if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
- & NEED_SHARED)
- return FALSE;
- break;
- case NONE:
- break;
- }
- }
- return TRUE;
-}
-
-void
-xf86RegisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func, pointer arg)
-{
- StateChangeNotificationPtr ptr =
- (StateChangeNotificationPtr)xnfalloc(sizeof(StateChangeNotificationRec));
-
- ptr->func = func;
- ptr->arg = arg;
- ptr->next = StateChangeNotificationList;
- StateChangeNotificationList = ptr;
-}
-
-Bool
-xf86DeregisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func)
-{
- StateChangeNotificationPtr *ptr = &StateChangeNotificationList;
- StateChangeNotificationPtr tmp;
-
- while (*ptr) {
- if ((*ptr)->func == func) {
- tmp = (*ptr);
- (*ptr) = (*ptr)->next;
- xfree(tmp);
- return TRUE;
- }
- ptr = &((*ptr)->next);
- }
- return FALSE;
-}
-
-static void
-notifyStateChange(xf86NotifyState state)
-{
- StateChangeNotificationPtr ptr = StateChangeNotificationList;
- while (ptr) {
- ptr->func(state,ptr->arg);
- ptr = ptr->next;
- }
-}
-
-/* Multihead accel sharing accessor functions and entity Private handling */
-
int
xf86GetLastScrnFlag(int entityIndex)
{
diff --git a/hw/xfree86/common/xf86Bus.h b/hw/xfree86/common/xf86Bus.h
index 83ba83c85..b22e2e772 100644
--- a/hw/xfree86/common/xf86Bus.h
+++ b/hw/xfree86/common/xf86Bus.h
@@ -43,14 +43,6 @@
#include "xf86sbusBus.h"
#endif
-typedef struct racInfo {
- xf86AccessPtr mem_new;
- xf86AccessPtr io_new;
- xf86AccessPtr io_mem_new;
- xf86SetAccessFuncPtr old;
-} AccessFuncRec, *AccessFuncPtr;
-
-
typedef struct {
DriverPtr driver;
int chipset;
@@ -59,12 +51,9 @@ typedef struct {
EntityProc entityEnter;
EntityProc entityLeave;
pointer private;
- resPtr resources;
Bool active;
Bool inUse;
BusRec bus;
- EntityAccessPtr access;
- AccessFuncPtr rac;
pointer busAcc;
int lastScrnFlag;
DevUnion * entityPrivates;
@@ -73,63 +62,15 @@ typedef struct {
IOADDRESS domainIO;
} EntityRec, *EntityPtr;
-#define NO_SEPARATE_IO_FROM_MEM 0x0001
-#define NO_SEPARATE_MEM_FROM_IO 0x0002
-#define NEED_VGA_ROUTED 0x0004
-#define NEED_VGA_ROUTED_SETUP 0x0008
-#define NEED_MEM 0x0010
-#define NEED_IO 0x0020
-#define NEED_MEM_SHARED 0x0040
-#define NEED_IO_SHARED 0x0080
-#define ACCEL_IS_SHARABLE 0x0100
-#define IS_SHARED_ACCEL 0x0200
-#define SA_PRIM_INIT_DONE 0x0400
-#define NEED_VGA_MEM 0x1000
-#define NEED_VGA_IO 0x2000
-
-#define NEED_SHARED (NEED_MEM_SHARED | NEED_IO_SHARED)
-
-struct x_BusAccRec;
-typedef void (*BusAccProcPtr)(struct x_BusAccRec *ptr);
-
-typedef struct x_BusAccRec {
- BusAccProcPtr set_f;
- BusAccProcPtr enable_f;
- BusAccProcPtr disable_f;
- BusAccProcPtr save_f;
- BusAccProcPtr restore_f;
- struct x_BusAccRec *current; /* pointer to bridge open on this bus */
- struct x_BusAccRec *primary; /* pointer to the bus connecting to this */
- struct x_BusAccRec *next; /* this links the different buses together */
- BusType type;
- BusType busdep_type;
- /* Bus-specific fields */
- union {
- struct {
- int bus;
- int primary_bus;
- struct pci_device * dev;
- pciBridgesSave save;
- } pci;
- } busdep;
-} BusAccRec, *BusAccPtr;
-
-/* state change notification callback */
-typedef struct _stateChange {
- xf86StateChangeNotificationCallbackFunc func;
- pointer arg;
- struct _stateChange *next;
-} StateChangeNotificationRec, *StateChangeNotificationPtr;
-
+#define ACCEL_IS_SHARABLE 0x100
+#define IS_SHARED_ACCEL 0x200
+#define SA_PRIM_INIT_DONE 0x400
extern EntityPtr *xf86Entities;
extern int xf86NumEntities;
-extern xf86AccessRec AccessNULL;
extern BusRec primaryBus;
-extern BusAccPtr xf86BusAccInfo;
int xf86AllocateEntity(void);
BusType StringToBusType(const char* busID, const char **retID);
-Bool xf86IsSubsetOf(resRange range, resPtr list);
#endif /* _XF86_BUS_H */
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 24049aaa0..e81eb0f63 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -108,12 +108,18 @@ extern DeviceAssocRec mouse_assoc;
static ModuleDefault ModuleDefaults[] = {
{.name = "extmod", .toLoad = TRUE, .load_opt=NULL},
+#ifdef DBE
{.name = "dbe", .toLoad = TRUE, .load_opt=NULL},
+#endif
+#ifdef GLXEXT
{.name = "glx", .toLoad = TRUE, .load_opt=NULL},
+#endif
#ifdef XRECORD
{.name = "record", .toLoad = TRUE, .load_opt=NULL},
#endif
+#ifdef XF86DRI
{.name = "dri", .toLoad = TRUE, .load_opt=NULL},
+#endif
#ifdef DRI2
{.name = "dri2", .toLoad = TRUE, .load_opt=NULL},
#endif
@@ -1857,16 +1863,6 @@ configScreen(confScreenPtr screenp, XF86ConfScreenPtr conf_screen, int scrnum,
bzero(&defMon, sizeof(defMon));
defMon.mon_identifier = "<default monitor>";
- /*
- * TARGET_REFRESH_RATE may be defined to effectively limit the
- * default resolution to the largest that has a "good" refresh
- * rate.
- */
-#ifdef TARGET_REFRESH_RATE
- defMon.mon_option_lst = xf86ReplaceRealOption(defMon.mon_option_lst,
- "TargetRefresh",
- TARGET_REFRESH_RATE);
-#endif
if (!configMonitor(screenp->monitor, &defMon))
return FALSE;
defaultMonitor = TRUE;
diff --git a/hw/xfree86/common/xf86Config.h b/hw/xfree86/common/xf86Config.h
index a174e463b..de287041a 100644
--- a/hw/xfree86/common/xf86Config.h
+++ b/hw/xfree86/common/xf86Config.h
@@ -41,7 +41,7 @@
/*
* global structure that holds the result of parsing the config file
*/
-extern XF86ConfigPtr xf86configptr;
+extern _X_EXPORT XF86ConfigPtr xf86configptr;
#endif
typedef enum _ConfigStatus {
@@ -68,7 +68,5 @@ ConfigStatus xf86HandleConfigFile(Bool);
Bool xf86AutoConfig(void);
GDevPtr autoConfigDevice(GDevPtr preconf_device);
-char* chooseVideoDriver(void);
-int xchomp(char *line);
#endif /* _xf86_config_h */
diff --git a/hw/xfree86/common/xf86Configure.c b/hw/xfree86/common/xf86Configure.c
index 307e0c42d..bce5aae58 100644
--- a/hw/xfree86/common/xf86Configure.c
+++ b/hw/xfree86/common/xf86Configure.c
@@ -27,33 +27,17 @@
#include <xorg-config.h>
#endif
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <pciaccess.h>
-#include "Pci.h"
-#include "os.h"
-#include "loaderProcs.h"
#include "xf86.h"
#include "xf86Config.h"
#include "xf86_OSlib.h"
#include "xf86Priv.h"
#define IN_XSERVER
-#include "xf86Parser.h"
-#include "xf86tokens.h"
#include "Configint.h"
-#include "vbe.h"
#include "xf86DDC.h"
#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
#include "xf86Bus.h"
#include "xf86Sbus.h"
#endif
-#include "globals.h"
typedef struct _DevToConfig {
GDevRec GDev;
@@ -87,24 +71,12 @@ static char *DFLT_MOUSE_DEV = "/dev/mouse";
static char *DFLT_MOUSE_PROTO = "auto";
#endif
-/*
- * This is called by the driver, either through xf86Match???Instances() or
- * directly. We allocate a GDevRec and fill it in as much as we can, letting
- * the caller fill in the rest and/or change it as it sees fit.
- */
-GDevPtr
-xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData, int chipset)
+static Bool
+bus_pci_configure(void *busData)
{
- int i, j;
+ int i;
struct pci_device * pVideo = NULL;
- Bool isPrimary = FALSE;
-
- if (xf86DoProbe || !xf86DoConfigure || !xf86DoConfigurePass1)
- return NULL;
- /* Check for duplicates */
- switch (bus) {
- case BUS_PCI:
pVideo = (struct pci_device *) busData;
for (i = 0; i < nDevToConfig; i++)
if (DevToConfig[i].pVideo &&
@@ -112,51 +84,37 @@ xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData, int
(DevToConfig[i].pVideo->bus == pVideo->bus) &&
(DevToConfig[i].pVideo->dev == pVideo->dev) &&
(DevToConfig[i].pVideo->func == pVideo->func))
- return NULL;
- isPrimary = xf86IsPrimaryPci(pVideo);
- break;
-#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
- case BUS_SBUS:
- for (i = 0; i < nDevToConfig; i++)
- if (DevToConfig[i].sVideo &&
- DevToConfig[i].sVideo->fbNum == ((sbusDevicePtr) busData)->fbNum)
- return NULL;
- break;
-#endif
- default:
- return NULL;
- }
+ return 0;
- /* Allocate new structure occurrence */
- i = nDevToConfig++;
- DevToConfig =
- xnfrealloc(DevToConfig, nDevToConfig * sizeof(DevToConfigRec));
-#if 1 /* Doesn't work when a driver detects more than one adapter */
- if ((i > 0) && isPrimary) {
- memmove(DevToConfig + 1,DevToConfig,
- (nDevToConfig - 1) * sizeof(DevToConfigRec));
- i = 0;
- }
-#endif
- memset(DevToConfig + i, 0, sizeof(DevToConfigRec));
-
-# define NewDevice DevToConfig[i]
+ return 1;
+}
- NewDevice.GDev.chipID = NewDevice.GDev.chipRev = NewDevice.GDev.irq = -1;
+static Bool
+bus_sbus_configure(void *busData)
+{
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
+ int i;
- NewDevice.iDriver = CurrentDriver;
+ for (i = 0; i < nDevToConfig; i++)
+ if (DevToConfig[i].sVideo &&
+ DevToConfig[i].sVideo->fbNum == ((sbusDevicePtr) busData)->fbNum)
+ return 0;
- /* Fill in what we know, converting the driver name to lower case */
- NewDevice.GDev.driver = xnfalloc(strlen(driver) + 1);
- for (j = 0; (NewDevice.GDev.driver[j] = tolower(driver[j])); j++);
+#endif
+ return 1;
+}
- switch (bus) {
- case BUS_PCI: {
+static void
+bus_pci_newdev_configure(void *busData, int i, int *chipset)
+{
const char *VendorName;
const char *CardName;
char busnum[8];
+ struct pci_device * pVideo = NULL;
- NewDevice.pVideo = pVideo;
+ pVideo = (struct pci_device *) busData;
+
+ DevToConfig[i].pVideo = pVideo;
VendorName = pci_device_get_vendor_name( pVideo );
CardName = pci_device_get_device_name( pVideo );
@@ -171,58 +129,113 @@ xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData, int
sprintf((char*)CardName, "Unknown Board");
}
- NewDevice.GDev.identifier =
+ DevToConfig[i].GDev.identifier =
xnfalloc(strlen(VendorName) + strlen(CardName) + 2);
- sprintf(NewDevice.GDev.identifier, "%s %s", VendorName, CardName);
+ sprintf(DevToConfig[i].GDev.identifier, "%s %s", VendorName, CardName);
- NewDevice.GDev.vendor = (char *)VendorName;
- NewDevice.GDev.board = (char *)CardName;
+ DevToConfig[i].GDev.vendor = (char *)VendorName;
+ DevToConfig[i].GDev.board = (char *)CardName;
- NewDevice.GDev.busID = xnfalloc(16);
+ DevToConfig[i].GDev.busID = xnfalloc(16);
xf86FormatPciBusNumber(pVideo->bus, busnum);
- sprintf(NewDevice.GDev.busID, "PCI:%s:%d:%d",
+ sprintf(DevToConfig[i].GDev.busID, "PCI:%s:%d:%d",
busnum, pVideo->dev, pVideo->func);
- NewDevice.GDev.chipID = pVideo->device_id;
- NewDevice.GDev.chipRev = pVideo->revision;
+ DevToConfig[i].GDev.chipID = pVideo->device_id;
+ DevToConfig[i].GDev.chipRev = pVideo->revision;
- if (chipset < 0)
- chipset = (pVideo->vendor_id << 16) | pVideo->device_id;
+ if (*chipset < 0) {
+ *chipset = (pVideo->vendor_id << 16) | pVideo->device_id;
}
- break;
+}
+
+static void
+bus_sbus_newdev_configure(void *busData, int i)
+{
#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
- case BUS_SBUS: {
char *promPath = NULL;
- NewDevice.sVideo = (sbusDevicePtr) busData;
- NewDevice.GDev.identifier = NewDevice.sVideo->descr;
+ DevToConfig[i].sVideo = (sbusDevicePtr) busData;
+ DevToConfig[i].GDev.identifier = DevToConfig[i].sVideo->descr;
if (sparcPromInit() >= 0) {
- promPath = sparcPromNode2Pathname(&NewDevice.sVideo->node);
+ promPath = sparcPromNode2Pathname(&DevToConfig[i].sVideo->node);
sparcPromClose();
}
if (promPath) {
- NewDevice.GDev.busID = xnfalloc(strlen(promPath) + 6);
- sprintf(NewDevice.GDev.busID, "SBUS:%s", promPath);
+ DevToConfig[i].GDev.busID = xnfalloc(strlen(promPath) + 6);
+ sprintf(DevToConfig[i].GDev.busID, "SBUS:%s", promPath);
xfree(promPath);
} else {
- NewDevice.GDev.busID = xnfalloc(12);
- sprintf(NewDevice.GDev.busID, "SBUS:fb%d", NewDevice.sVideo->fbNum);
- }
+ DevToConfig[i].GDev.busID = xnfalloc(12);
+ sprintf(DevToConfig[i].GDev.busID, "SBUS:fb%d",
+ DevToConfig[i].sVideo->fbNum);
}
- break;
#endif
- default:
- break;
+}
+
+/*
+ * This is called by the driver, either through xf86Match???Instances() or
+ * directly. We allocate a GDevRec and fill it in as much as we can, letting
+ * the caller fill in the rest and/or change it as it sees fit.
+ */
+GDevPtr
+xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData, int chipset)
+{
+ int ret, i, j;
+
+ if (!xf86DoConfigure || !xf86DoConfigurePass1)
+ return NULL;
+
+ /* Check for duplicates */
+ switch (bus) {
+ case BUS_PCI:
+ ret = bus_pci_configure(busData);
+ break;
+ case BUS_SBUS:
+ ret = bus_sbus_configure(busData);
+ break;
+ default:
+ return NULL;
+ }
+
+ if (ret == 0)
+ goto out;
+
+ /* Allocate new structure occurrence */
+ i = nDevToConfig++;
+ DevToConfig =
+ xnfrealloc(DevToConfig, nDevToConfig * sizeof(DevToConfigRec));
+ memset(DevToConfig + i, 0, sizeof(DevToConfigRec));
+
+ DevToConfig[i].GDev.chipID =
+ DevToConfig[i].GDev.chipRev = DevToConfig[i].GDev.irq = -1;
+
+ DevToConfig[i].iDriver = CurrentDriver;
+
+ /* Fill in what we know, converting the driver name to lower case */
+ DevToConfig[i].GDev.driver = xnfalloc(strlen(driver) + 1);
+ for (j = 0; (DevToConfig[i].GDev.driver[j] = tolower(driver[j])); j++);
+
+ switch (bus) {
+ case BUS_PCI:
+ bus_pci_newdev_configure(busData, i, &chipset);
+ break;
+ case BUS_SBUS:
+ bus_sbus_newdev_configure(busData, i);
+ break;
+ default:
+ break;
}
/* Get driver's available options */
if (xf86DriverList[CurrentDriver]->AvailableOptions)
- NewDevice.GDev.options = (OptionInfoPtr)
+ DevToConfig[i].GDev.options = (OptionInfoPtr)
(*xf86DriverList[CurrentDriver]->AvailableOptions)(chipset,
bus);
- return &NewDevice.GDev;
+ return &DevToConfig[i].GDev;
-# undef NewDevice
+out:
+ return NULL;
}
static XF86ConfInputPtr
@@ -658,9 +671,6 @@ DoConfigure(void)
xorgHWAccess = FALSE;
}
- /* Disable PCI devices */
- xf86ResourceBrokerInit();
- xf86AccessInit();
xf86FindPrimaryDevice();
/* Create XF86Config file structure */
diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index f83bcd5e3..8328f5875 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -35,7 +35,7 @@
#include "xf86str.h"
#include "xf86Priv.h"
#include "dgaproc.h"
-#include <X11/extensions/xf86dgastr.h>
+#include <X11/extensions/xf86dgaproto.h>
#include "colormapst.h"
#include "pixmapstr.h"
#include "inputstr.h"
@@ -46,7 +46,7 @@
#include "xf86Xinput.h"
#include "exglobals.h"
#include "exevents.h"
-#include "events.h"
+#include "eventstr.h"
#include "eventconvert.h"
#include "mi.h"
@@ -528,11 +528,6 @@ DGAAvailable(int index)
if(DGAScreenKey == NULL)
return FALSE;
- if (!xf86NoSharedResources(((ScrnInfoPtr)dixLookupPrivate(
- &screenInfo.screens[index]->devPrivates,
- xf86ScreenKey))->scrnIndex, MEM))
- return FALSE;
-
if(DGA_GET_SCREEN_PRIV(screenInfo.screens[index]))
return TRUE;
@@ -1178,7 +1173,7 @@ DGAGetOldDGAMode(int index)
w = pScrn->currentMode->HDisplay;
h = pScrn->currentMode->VDisplay;
- p = ((pScrn->displayWidth * (pScrn->bitsPerPixel >> 3)) + 3) & ~3L;
+ p = pad_to_int32(pScrn->displayWidth * bits_to_bytes(pScrn->bitsPerPixel));
for(i = 0; i < pScreenPriv->numModes; i++) {
mode = &(pScreenPriv->modes[i]);
diff --git a/hw/xfree86/common/xf86DPMS.c b/hw/xfree86/common/xf86DPMS.c
index 0f40e1b0b..22174c74e 100644
--- a/hw/xfree86/common/xf86DPMS.c
+++ b/hw/xfree86/common/xf86DPMS.c
@@ -39,10 +39,10 @@
#include "xf86.h"
#include "xf86Priv.h"
#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
#include "dpmsproc.h"
#endif
+#include "xf86VGAarbiter.h"
#ifdef DPMSExtension
@@ -163,8 +163,9 @@ DPMSSet(ClientPtr client, int level)
pScrn = xf86Screens[i];
pDPMS = dixLookupPrivate(&screenInfo.screens[i]->devPrivates, DPMSKey);
if (pDPMS && pScrn->DPMSSet && pDPMS->Enabled && pScrn->vtSema) {
- xf86EnableAccess(pScrn);
+ xf86VGAarbiterLock(pScrn);
pScrn->DPMSSet(pScrn, level, 0);
+ xf86VGAarbiterUnlock(pScrn);
}
}
return Success;
diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index 98175e9d3..9487fe7b2 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -80,18 +80,11 @@
#include "xkbstr.h"
#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
#include "dpmsproc.h"
#endif
/*
- * The first of many hacks to get VT switching to work under
- * Solaris 2.1 for x86. The basic problem is that Solaris is supposed
- * to be SVR4. It is for the most part, except where the video interface
- * is concerned. These hacks work around those problems.
- * See the comments for Linux, and SCO.
- *
* This is a toggling variable:
* FALSE = No VT switching keys have been pressed last time around
* TRUE = Possible VT switch Pending
@@ -201,21 +194,27 @@ xf86ProcessActionEvent(ActionEvent action, void *arg)
if (!xf86Info.dontZoom)
xf86ZoomViewport(xf86Info.currentScreen, -1);
break;
-#if !defined(__SOL8__) && \
- (!defined(sun) || defined(__i386__)) && defined(VT_ACTIVATE)
+#if defined(VT_ACTIVATE)
case ACTION_SWITCHSCREEN:
if (VTSwitchEnabled && !xf86Info.dontVTSwitch && arg) {
int vtno = *((int *) arg);
#if defined(__SCO__) || defined(__UNIXWARE__)
vtno--;
#endif
+#if defined(sun)
+ if (vtno == xf86Info.vtno)
+ break;
+
+ xf86Info.vtRequestsPending = TRUE;
+ xf86Info.vtPendingNum = vtno;
+#else
if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, vtno) < 0)
ErrorF("Failed to switch consoles (%s)\n", strerror(errno));
+#endif
}
break;
case ACTION_SWITCHSCREEN_NEXT:
if (VTSwitchEnabled && !xf86Info.dontVTSwitch) {
-/* Shouldn't this be true for (sun) && (i386) && (SVR4) ? */
#if defined(__SCO__) || defined(__UNIXWARE__)
if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) < 0)
#else
@@ -470,7 +469,6 @@ xf86VTSwitch(void)
xf86Screens[i]->LeaveVT(i, 0);
xf86AccessLeave(); /* We need this here, otherwise */
- xf86AccessLeaveState(); /* console won't be restored */
if (!xf86VTSwitchAway()) {
/*
@@ -518,8 +516,6 @@ xf86VTSwitch(void)
* trap calls when switched away.
*/
xf86Screens[i]->vtSema = FALSE;
- xf86Screens[i]->access = NULL;
- xf86Screens[i]->busAccess = NULL;
}
if (xorgHWAccess)
xf86DisableIO();
diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
index a14f20cfd..d8f7f7f27 100644
--- a/hw/xfree86/common/xf86Globals.c
+++ b/hw/xfree86/common/xf86Globals.c
@@ -43,6 +43,7 @@
#include "xf86Parser.h"
#include "xf86Xinput.h"
#include "xf86InPriv.h"
+#include "xf86Config.h"
/* Globals that video drivers may access */
@@ -103,6 +104,9 @@ xf86InfoRec xf86Info = {
.vtSysreq = FALSE,
.lastEventTime = -1,
.vtRequestsPending = FALSE,
+#ifdef sun
+ .vtPendingNum = -1,
+#endif
.dontVTSwitch = FALSE,
.dontZap = FALSE,
.dontZoom = FALSE,
@@ -149,10 +153,8 @@ confDRIRec xf86ConfigDRI = {0, };
XF86ConfigPtr xf86configptr = NULL;
Bool xf86Resetting = FALSE;
Bool xf86Initialising = FALSE;
-Bool xf86DoProbe = FALSE;
Bool xf86DoConfigure = FALSE;
Bool xf86DoShowOptions = FALSE;
-Bool xf86DoModalias = FALSE;
DriverPtr *xf86DriverList = NULL;
int xf86NumDrivers = 0;
InputDriverPtr *xf86InputDriverList = NULL;
@@ -183,7 +185,6 @@ char *xf86LayoutName = NULL;
char *xf86ScreenName = NULL;
char *xf86PointerName = NULL;
char *xf86KeyboardName = NULL;
-Bool xf86ProbeOnly = FALSE;
int xf86Verbose = DEFAULT_VERBOSE;
int xf86LogVerbose = DEFAULT_LOG_VERBOSE;
int xf86FbBpp = -1;
diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
index eac819b9c..9a2468dd3 100644
--- a/hw/xfree86/common/xf86Helper.c
+++ b/hw/xfree86/common/xf86Helper.c
@@ -53,12 +53,10 @@
#include "xf86Priv.h"
#include "xf86_OSlib.h"
#include "micmap.h"
-#include "xf86PciInfo.h"
#include "xf86DDC.h"
#include "xf86Xinput.h"
#include "xf86InPriv.h"
#include "mivalidate.h"
-#include "xf86RAC.h"
#include "xf86Bus.h"
#include "xf86Crtc.h"
@@ -194,20 +192,6 @@ xf86AllocateScreen(DriverPtr drv, int flags)
xf86Screens[i]->drv = drv;
drv->refCount++;
xf86Screens[i]->module = DuplicateModule(drv->module, NULL);
- /*
- * set the initial access state. This will be modified after PreInit.
- * XXX Or should we do it some other place?
- */
- xf86Screens[i]->CurrentAccess = &xf86CurrentAccess;
- xf86Screens[i]->resourceType = MEM_IO;
-
- /* OOps -- What's this ? */
- DebugF("xf86AllocateScreen - xf86Screens[%d]->pScreen = %p\n",
- i, xf86Screens[i]->pScreen );
- if ( NULL != xf86Screens[i]->pScreen ) {
- DebugF("xf86Screens[%d]->pScreen->CreateWindow = %p\n",
- i, xf86Screens[i]->pScreen->CreateWindow );
- }
xf86Screens[i]->DriverFunc = drv->driverFunc;
@@ -1460,10 +1444,6 @@ xf86MatchDevice(const char *drivername, GDevPtr **sectlist)
if (sectlist)
*sectlist = NULL;
- if (xf86DoModalias) return 0;
-
- if (xf86DoProbe) return 1;
-
if (xf86DoConfigure && xf86DoConfigurePass1) return 1;
/*
@@ -1609,7 +1589,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
* Do this calculation and memory allocation once now to eliminate the
* need for realloc calls inside the loop.
*/
- if ( !xf86DoProbe && !(xf86DoConfigure && xf86DoConfigurePass1) ) {
+ if (!(xf86DoConfigure && xf86DoConfigurePass1)) {
unsigned max_entries = numDevs;
iter = pci_slot_match_iterator_create(NULL);
@@ -1940,30 +1920,6 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
return numFound;
}
-static void
-xf86SetPriority(Bool up)
-{
- static int saved_nice;
-
- if (up) {
-#ifdef HAS_SETPRIORITY
- saved_nice = getpriority(PRIO_PROCESS, 0);
- setpriority(PRIO_PROCESS, 0, -20);
-#endif
-#if defined(SYSV) || defined(SVR4) || defined(linux)
- saved_nice = nice(0);
- nice(-20 - saved_nice);
-#endif
- } else {
-#ifdef HAS_SETPRIORITY
- setpriority(PRIO_PROCESS, 0, saved_nice);
-#endif
-#if defined(SYSV) || defined(SVR4) || defined(linux)
- nice(20 + saved_nice);
-#endif
- }
-}
-
/*
* xf86GetClocks -- get the dot-clocks via a BIG BAD hack ...
*/
@@ -1979,8 +1935,6 @@ xf86GetClocks(ScrnInfoPtr pScrn, int num, Bool (*ClockFunc)(ScrnInfoPtr, int),
/* First save registers that get written on */
(*ClockFunc)(pScrn, CLK_REG_SAVE);
- xf86SetPriority(TRUE);
-
if (num > MAXCLOCKS)
num = MAXCLOCKS;
@@ -2028,8 +1982,6 @@ finish:
(*BlankScreen)(pScrn, TRUE);
}
- xf86SetPriority(FALSE);
-
for (i = 0; i < num; i++)
{
if (i != knownclkindex)
@@ -2140,14 +2092,7 @@ xf86ServerIsInitialising(void)
Bool
xf86ServerIsOnlyDetecting(void)
{
- return xf86DoProbe || xf86DoConfigure;
-}
-
-
-Bool
-xf86ServerIsOnlyProbing(void)
-{
- return xf86ProbeOnly;
+ return xf86DoConfigure;
}
@@ -2353,13 +2298,8 @@ xf86SetSilkenMouse (ScreenPtr pScreen)
/* check for commandline option here */
/* disable if screen shares resources */
- if (((pScrn->racMemFlags & RAC_CURSOR) &&
- !xf86NoSharedResources(pScrn->scrnIndex,MEM)) ||
- ((pScrn->racIoFlags & RAC_CURSOR) &&
- !xf86NoSharedResources(pScrn->scrnIndex,IO))) {
- useSM = FALSE;
- from = X_PROBED;
- } else if (xf86silkenMouseDisableFlag) {
+ /* TODO VGA arb disable silken mouse */
+ if (xf86silkenMouseDisableFlag) {
from = X_CMDLINE;
useSM = FALSE;
} else {
@@ -2410,13 +2350,43 @@ xf86FindXvOptions(int scrnIndex, int adaptor_index, char *port_name,
#include "loader/os.c"
/* new RAC */
+/*
+ * xf86ConfigPciEntityInactive() -- This function can be used
+ * to configure an inactive entity as well as to reconfigure an
+ * previously active entity inactive. If the entity has been
+ * assigned to a screen before it will be removed. If p_chip is
+ * non-NULL all static resources listed there will be registered.
+ */
+static void
+xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
+ EntityProc init, EntityProc enter,
+ EntityProc leave, pointer private)
+{
+ ScrnInfoPtr pScrn;
+
+ if ((pScrn = xf86FindScreenForEntity(pEnt->index)))
+ xf86RemoveEntityFromScreen(pScrn,pEnt->index);
+
+ /* shared resources are only needed when entity is active: remove */
+ xf86SetEntityFuncs(pEnt->index,init,enter,leave,private);
+}
+
+static void
+xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
+ EntityProc enter, EntityProc leave, pointer private)
+{
+ ScrnInfoPtr pScrn;
+
+ if ((pScrn = xf86FindScreenForEntity(pEnt->index)))
+ xf86RemoveEntityFromScreen(pScrn,pEnt->index);
+ xf86SetEntityFuncs(pEnt->index,init,enter,leave,private);
+}
ScrnInfoPtr
xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
- PciChipsets *p_chip, resList res, EntityProc init,
+ PciChipsets *p_chip, void *dummy, EntityProc init,
EntityProc enter, EntityProc leave, pointer private)
{
- PciChipsets *p_id;
EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
if (!pEnt) return pScrn;
@@ -2426,7 +2396,7 @@ xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
return pScrn;
}
if (!pEnt->active) {
- xf86ConfigPciEntityInactive(pEnt, p_chip, res, init, enter,
+ xf86ConfigPciEntityInactive(pEnt, p_chip, init, enter,
leave, private);
xfree(pEnt);
return pScrn;
@@ -2441,15 +2411,8 @@ xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
if (xf86IsEntityShared(entityIndex)) {
return pScrn;
}
- if (p_chip) {
- for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
- if (pEnt->chipset == p_id->numChipset) break;
- }
- xf86ClaimFixedResources(p_id->resList,entityIndex);
- }
xfree(pEnt);
- xf86ClaimFixedResources(res,entityIndex);
xf86SetEntityFuncs(entityIndex,init,enter,leave,private);
return pScrn;
@@ -2491,10 +2454,9 @@ xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
Bool
xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
- PciChipsets *p_chip, resList res, EntityProc init,
+ PciChipsets *p_chip, void *dummy, EntityProc init,
EntityProc enter, EntityProc leave, pointer private)
{
- PciChipsets *p_id;
EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
if (!pEnt) return FALSE;
@@ -2504,61 +2466,13 @@ xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
}
xf86AddEntityToScreen(pScrn,entityIndex);
- if (p_chip) {
- for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
- if (pEnt->chipset == p_id->numChipset) break;
- }
- xf86ClaimFixedResources(p_id->resList,entityIndex);
- }
xfree(pEnt);
-
- xf86ClaimFixedResources(res,entityIndex);
if (!xf86SetEntityFuncs(entityIndex,init,enter,leave,private))
return FALSE;
return TRUE;
}
-/*
- * xf86ConfigPciEntityInactive() -- This function can be used
- * to configure an inactive entity as well as to reconfigure an
- * previously active entity inactive. If the entity has been
- * assigned to a screen before it will be removed. If p_chip is
- * non-NULL all static resources listed there will be registered.
- */
-void
-xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
- resList res, EntityProc init, EntityProc enter,
- EntityProc leave, pointer private)
-{
- PciChipsets *p_id;
- ScrnInfoPtr pScrn;
-
- if ((pScrn = xf86FindScreenForEntity(pEnt->index)))
- xf86RemoveEntityFromScreen(pScrn,pEnt->index);
- else if (p_chip) {
- for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
- if (pEnt->chipset == p_id->numChipset) break;
- }
- xf86ClaimFixedResources(p_id->resList,pEnt->index);
- }
- xf86ClaimFixedResources(res,pEnt->index);
- /* shared resources are only needed when entity is active: remove */
- xf86DeallocateResourcesForEntity(pEnt->index, ResShared);
- xf86SetEntityFuncs(pEnt->index,init,enter,leave,private);
-}
-
-void
-xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
- EntityProc enter, EntityProc leave, pointer private)
-{
- ScrnInfoPtr pScrn;
-
- if ((pScrn = xf86FindScreenForEntity(pEnt->index)))
- xf86RemoveEntityFromScreen(pScrn,pEnt->index);
- xf86SetEntityFuncs(pEnt->index,init,enter,leave,private);
-}
-
Bool
xf86IsScreenPrimary(int scrnIndex)
{
@@ -2672,10 +2586,3 @@ xf86MotionHistoryAllocate(LocalDevicePtr local)
{
AllocateMotionHistory(local->dev);
}
-
-int
-xf86GetMotionEvents(DeviceIntPtr pDev, xTimecoord *buff, unsigned long start,
- unsigned long stop, ScreenPtr pScreen, BOOL core)
-{
- return GetMotionHistory(pDev, buff, start, stop, pScreen, core);
-}
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 11f4cf1b1..f9224b1a6 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -78,11 +78,11 @@
#include "picturestr.h"
#endif
+#include "xf86VGAarbiter.h"
#include "globals.h"
#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
#include "dpmsproc.h"
#endif
@@ -93,7 +93,6 @@
/* forward declarations */
static Bool probe_devices_from_device_sections(DriverPtr drvp);
static Bool add_matching_devices_to_configure_list(DriverPtr drvp);
-static Bool check_for_matching_devices(DriverPtr drvp);
#ifdef XF86PM
void (*xf86OSPMClose)(void) = NULL;
@@ -190,6 +189,21 @@ xf86PrintBanner(void)
if (uname(&name) >= 0) {
ErrorF("Current Operating System: %s %s %s %s %s\n",
name.sysname, name.nodename, name.release, name.version, name.machine);
+#ifdef linux
+ do {
+ char buf[80];
+ int fd = open("/proc/cmdline", O_RDONLY);
+ if (fd != -1) {
+ ErrorF("Kernel command line: ");
+ memset(buf, 0, 80);
+ while (read(fd, buf, 80) > 0) {
+ ErrorF("%.80s", buf);
+ memset(buf, 0, 80);
+ }
+ close(fd);
+ }
+ } while (0);
+#endif
}
}
#endif
@@ -229,84 +243,6 @@ xf86PrintMarkers(void)
LogPrintMarkers();
}
-static void
-DoModalias(void)
-{
- int i = -1;
- char **vlist;
-
- /* Get all the drivers */
- vlist = xf86DriverlistFromCompile();
- if (!vlist) {
- ErrorF("Missing output drivers. PCI Access dump failed.\n");
- goto bail;
- }
-
- /* Load all the drivers that were found. */
- xf86LoadModules(vlist, NULL);
-
- xfree(vlist);
-
- /* Iterate through each driver */
- for (i = 0; i < xf86NumDrivers; i++) {
- struct pci_id_match *match;
-
- /* Iterate through each pci id match data, dumping it to the screen */
- for (match = (struct pci_id_match *) xf86DriverList[i]->supported_devices ;
- match && !(!match->vendor_id && !match->device_id) ; match++) {
- /* Prefix */
- ErrorF("alias pci:");
-
- /* Vendor */
- if (match->vendor_id == ~0)
- ErrorF("v*");
- else
- ErrorF("v%08X", match->vendor_id);
-
- /* Device */
- if (match->device_id == ~0)
- ErrorF("d*");
- else
- ErrorF("d%08X", match->device_id);
-
- /* Subvendor */
- if (match->subvendor_id == ~0)
- ErrorF("sv*");
- else
- ErrorF("sv%08X", match->subvendor_id);
-
- /* Subdevice */
- if (match->subdevice_id == ~0)
- ErrorF("sd*");
- else
- ErrorF("sd%08X", match->subdevice_id);
-
- /* Class */
- if ((match->device_class_mask >> 16 & 0xFF) == 0xFF)
- ErrorF("bc%02X", match->device_class >> 16 & 0xFF);
- else
- ErrorF("bc*");
- if ((match->device_class_mask >> 8 & 0xFF) == 0xFF)
- ErrorF("sc%02X", match->device_class >> 8 & 0xFF);
- else
- ErrorF("sc*");
- if ((match->device_class_mask & 0xFF) == 0xFF)
- ErrorF("i%02X*", match->device_class & 0xFF);
- else
- ErrorF("i*");
-
- /* Suffix (driver) */
- ErrorF(" %s\n", xf86DriverList[i]->driverName);
- }
- }
-
-bail:
- OsCleanup(TRUE);
- AbortDDX();
- fflush(stderr);
- exit(0);
-}
-
static Bool
xf86CreateRootWindow(WindowPtr pWin)
{
@@ -495,7 +431,8 @@ probe_devices_from_device_sections(DriverPtr drvp)
if ((*drvp->PciProbe)(drvp, entry, pPci,
devices[j].match_data)) {
foundScreen = TRUE;
- }
+ } else
+ xf86UnclaimPciSlot(pPci);
}
break;
@@ -553,32 +490,6 @@ add_matching_devices_to_configure_list(DriverPtr drvp)
return (numFound != 0);
}
-
-Bool
-check_for_matching_devices(DriverPtr drvp)
-{
- const struct pci_id_match * const devices = drvp->supported_devices;
- int j;
-
-
- for (j = 0; ! END_OF_MATCHES(devices[j]); j++) {
- struct pci_device_iterator *iter;
- struct pci_device *dev;
-
- iter = pci_id_match_iterator_create(& devices[j]);
- dev = pci_device_next(iter);
- pci_iterator_destroy(iter);
-
- if (dev != NULL) {
- return TRUE;
- }
- }
-
-
- return FALSE;
-}
-
-
/**
* Call the driver's correct probe function.
*
@@ -600,11 +511,7 @@ xf86CallDriverProbe( DriverPtr drv, Bool detect_only )
Bool foundScreen = FALSE;
if ( drv->PciProbe != NULL ) {
- if ( xf86DoProbe ) {
- assert( detect_only );
- foundScreen = check_for_matching_devices( drv );
- }
- else if ( xf86DoConfigure && xf86DoConfigurePass1 ) {
+ if ( xf86DoConfigure && xf86DoConfigurePass1 ) {
assert( detect_only );
foundScreen = add_matching_devices_to_configure_list( drv );
}
@@ -624,76 +531,6 @@ xf86CallDriverProbe( DriverPtr drv, Bool detect_only )
return foundScreen;
}
-static void
-DoProbe(void)
-{
- int i;
- Bool probeResult;
- Bool ioEnableFailed = FALSE;
-
- /* Find the list of video driver modules. */
- char **list = xf86DriverlistFromCompile();
- char **l;
-
- if (list) {
- ErrorF("List of video driver modules:\n");
- for (l = list; *l; l++)
- ErrorF("\t%s\n", *l);
- } else {
- ErrorF("No video driver modules found\n");
- }
-
- /* Load all the drivers that were found. */
- xf86LoadModules(list, NULL);
-
- /* Disable PCI devices */
- xf86AccessInit();
-
- /* Call all of the probe functions, reporting the results. */
- for (i = 0; i < xf86NumDrivers; i++) {
- DriverRec * const drv = xf86DriverList[i];
-
- if (!xorgHWAccess) {
- xorgHWFlags flags;
- if (!drv->driverFunc
- || !drv->driverFunc( NULL, GET_REQUIRED_HW_INTERFACES, &flags )
- || NEED_IO_ENABLED(flags)) {
- if (ioEnableFailed)
- continue;
- if (!xf86EnableIO()) {
- ioEnableFailed = TRUE;
- continue;
- }
- xorgHWAccess = TRUE;
- }
- }
-
-
- xf86MsgVerb(X_INFO, 3, "Probing in driver %s\n", drv->driverName);
-
- probeResult = xf86CallDriverProbe( drv, TRUE );
- if (!probeResult) {
- xf86ErrorF("Probe in driver `%s' returns FALSE\n",
- drv->driverName);
- } else {
- xf86ErrorF("Probe in driver `%s' returns TRUE\n",
- drv->driverName);
-
- /* If we have a result, then call driver's Identify function */
- if (drv->Identify != NULL) {
- const int verbose = xf86SetVerbosity(1);
- (*drv->Identify)(0);
- xf86SetVerbosity(verbose);
- }
- }
- }
-
- OsCleanup(TRUE);
- AbortDDX();
- fflush(stderr);
- exit(0);
-}
-
/*
* InitOutput --
* Initialize screenInfo for all actually accessible framebuffers.
@@ -724,7 +561,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
else
xf86ServerName = argv[0];
- if (!xf86DoModalias) {
xf86PrintBanner();
xf86PrintMarkers();
if (xf86LogFile) {
@@ -735,10 +571,9 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
xf86MsgVerb(xf86LogFileFrom, 0, "Log file: \"%s\", Time: %s",
xf86LogFile, ct);
}
- }
/* Read and parse the config file */
- if (!xf86DoProbe && !xf86DoConfigure && !xf86DoModalias && !xf86DoShowOptions) {
+ if (!xf86DoConfigure && !xf86DoShowOptions) {
switch (xf86HandleConfigFile(FALSE)) {
case CONFIG_OK:
break;
@@ -771,16 +606,9 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
/* Do a general bus probe. This will be a PCI probe for x86 platforms */
xf86BusProbe();
- if (xf86DoProbe)
- DoProbe();
-
if (xf86DoConfigure)
DoConfigure();
- /* Do the PCI Access dump */
- if (xf86DoModalias)
- DoModalias();
-
if (autoconfig) {
if (!xf86AutoConfig()) {
xf86Msg(X_ERROR, "Auto configuration failed\n");
@@ -792,9 +620,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
xf86OSPMClose = xf86OSPMOpen();
#endif
- /* Initialise the resource broker */
- xf86ResourceBrokerInit();
-
/* Load all modules specified explicitly in the config file */
if ((modulelist = xf86ModulelistFromConfig(&optionlist))) {
xf86LoadModules(modulelist, optionlist);
@@ -905,6 +730,8 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
return;
}
+ xf86VGAarbiterInit();
+
/*
* Match up the screens found by the probes against those specified
* in the config file. Remove the ones that won't be used. Sort
@@ -985,10 +812,12 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
*/
for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
+ xf86VGAarbiterScrnInit(xf86Screens[i]);
+ xf86VGAarbiterLock(xf86Screens[i]);
if (xf86Screens[i]->PreInit &&
xf86Screens[i]->PreInit(xf86Screens[i], 0))
xf86Screens[i]->configured = TRUE;
+ xf86VGAarbiterUnlock(xf86Screens[i]);
}
for (i = 0; i < xf86NumScreens; i++)
if (!xf86Screens[i]->configured)
@@ -1014,15 +843,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
}
}
- /* XXX Should this be before or after loading dependent modules? */
- if (xf86ProbeOnly)
- {
- OsCleanup(TRUE);
- AbortDDX();
- fflush(stderr);
- exit(0);
- }
-
/* Remove (unload) drivers that are not required */
for (i = 0; i < xf86NumDrivers; i++)
if (xf86DriverList[i] && xf86DriverList[i]->refCount <= 0)
@@ -1038,7 +858,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
/*
* Collect all pixmap formats and check for conflicts at the display
* level. Should we die here? Or just delete the offending screens?
- * Also, should this be done for -probeonly?
*/
screenpix24 = Pix24DontCare;
for (i = 0; i < xf86NumScreens; i++) {
@@ -1143,10 +962,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
break;
}
}
-
- /* set up the proper access funcs */
- xf86PostPreInit();
-
} else {
/*
* serverGeneration != 1; some OSs have to do things here, too.
@@ -1211,7 +1026,7 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
#endif /* SCO325 */
for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
+ xf86VGAarbiterLock(xf86Screens[i]);
/*
* Almost everything uses these defaults, and many of those that
* don't, will wrap them.
@@ -1226,6 +1041,7 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
xf86Screens[i]->DriverFunc = NULL;
xf86Screens[i]->pScreen = NULL;
scr_index = AddScreen(xf86Screens[i]->ScreenInit, argc, argv);
+ xf86VGAarbiterUnlock(xf86Screens[i]);
if (scr_index == i) {
/*
* Hook in our ScrnInfoRec, and initialise some other pScreen
@@ -1371,16 +1187,12 @@ ddxGiveUp(void)
xf86OSPMClose = NULL;
#endif
- xf86AccessLeaveState();
-
for (i = 0; i < xf86NumScreens; i++) {
/*
* zero all access functions to
* trap calls when switched away.
*/
xf86Screens[i]->vtSema = FALSE;
- xf86Screens[i]->access = NULL;
- xf86Screens[i]->busAccess = NULL;
}
#ifdef XFreeXDGA
@@ -1427,7 +1239,6 @@ AbortDDX(void)
* we might not have been wrapped yet. Therefore enable
* screen explicitely.
*/
- xf86EnableAccess(xf86Screens[i]);
(xf86Screens[i]->LeaveVT)(i, 0);
}
}
@@ -1556,11 +1367,6 @@ ddxProcessArgument(int argc, char **argv, int i)
xf86ConfigFile = argv[i + 1];
return 2;
}
- if (!strcmp(argv[i],"-probeonly"))
- {
- xf86ProbeOnly = TRUE;
- return 1;
- }
if (!strcmp(argv[i],"-flipPixels"))
{
xf86FlipPixels = TRUE;
@@ -1776,11 +1582,6 @@ ddxProcessArgument(int argc, char **argv, int i)
return 1;
}
#endif
- if (!strcmp(argv[i], "-probe"))
- {
- xf86DoProbe = TRUE;
- return 1;
- }
if (!strcmp(argv[i], "-configure"))
{
if (getuid() != 0 && geteuid() == 0) {
@@ -1791,12 +1592,6 @@ ddxProcessArgument(int argc, char **argv, int i)
xf86AllowMouseOpenFail = TRUE;
return 1;
}
- if (!strcmp(argv[i], "-modalias"))
- {
- xf86DoModalias = TRUE;
- xf86AllowMouseOpenFail = TRUE;
- return 1;
- }
if (!strcmp(argv[i], "-showopts"))
{
if (getuid() != 0 && geteuid() == 0) {
@@ -1853,10 +1648,8 @@ ddxUseMsg(void)
ErrorF("-configure probe for devices and write an "__XCONFIGFILE__"\n");
ErrorF("-showopts print available options for all installed drivers\n");
}
- ErrorF("-modalias output a modalias-style filter for each driver installed\n");
ErrorF("-config file specify a configuration file, relative to the\n");
ErrorF(" "__XCONFIGFILE__" search path, only root can use absolute\n");
- ErrorF("-probeonly probe for devices, then exit\n");
ErrorF("-verbose [n] verbose startup messages\n");
ErrorF("-logverbose [n] verbose log messages\n");
ErrorF("-quiet minimal startup messages\n");
diff --git a/hw/xfree86/common/xf86Mode.c b/hw/xfree86/common/xf86Mode.c
index 6dcebe15e..0e43946c5 100644
--- a/hw/xfree86/common/xf86Mode.c
+++ b/hw/xfree86/common/xf86Mode.c
@@ -1200,7 +1200,6 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
PixmapFormatRec *BankFormat;
ClockRangePtr cp;
ClockRangesPtr storeClockRanges;
- double targetRefresh = 0.0;
int numTimings = 0;
range hsync[MAX_HSYNC];
range vrefresh[MAX_VREFRESH];
@@ -1460,26 +1459,6 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
}
/*
- * Go through the mode pool and see if any modes match the target
- * refresh rate, (if specified). If no modes match, abandon the target.
- */
- targetRefresh = xf86SetRealOption(scrp->options,
- "TargetRefresh", 0.0);
- if (targetRefresh > 0.0) {
- for (p = scrp->modePool; p != NULL; p = p->next) {
- if (xf86ModeVRefresh(p) > targetRefresh * (1.0 - SYNC_TOLERANCE))
- break;
- }
- if (!p)
- targetRefresh = 0.0;
- }
-
- if (targetRefresh > 0.0) {
- xf86DrvMsg(scrp->scrnIndex, X_CONFIG,
- "Target refresh rate is %.1f Hz\n", targetRefresh);
- }
-
- /*
* Allocate one entry in scrp->modes for each named mode.
*/
while (scrp->modes)
@@ -1552,14 +1531,6 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
((double)q->HTotal / (double)q->HDisplay) < 1.15)
continue;
- /*
- * If there is a target refresh rate, skip modes that
- * don't match up.
- */
- if (xf86ModeVRefresh(q) <
- (1.0 - SYNC_TOLERANCE) * targetRefresh)
- continue;
-
if (modeSize < (q->HDisplay * q->VDisplay)) {
r = q;
modeSize = q->HDisplay * q->VDisplay;
@@ -1865,53 +1836,6 @@ xf86SetCrtcForModes(ScrnInfoPtr scrp, int adjustFlags)
} while (p != NULL && p != scrp->modes);
}
-
-#if 0
-static void
-add(char **p, char *new)
-{
- *p = xnfrealloc(*p, strlen(*p) + strlen(new) + 2);
- strcat(*p, " ");
- strcat(*p, new);
-}
-
-void
-xf86PrintModeline(int scrnIndex,DisplayModePtr mode)
-{
- char tmp[256];
- char *flags = xnfcalloc(1, 1);
-
- if (mode->HSkew) {
- snprintf(tmp, 256, "hskew %i", mode->HSkew);
- add(&flags, tmp);
- }
- if (mode->VScan) {
- snprintf(tmp, 256, "vscan %i", mode->VScan);
- add(&flags, tmp);
- }
- if (mode->Flags & V_INTERLACE) add(&flags, "interlace");
- if (mode->Flags & V_CSYNC) add(&flags, "composite");
- if (mode->Flags & V_DBLSCAN) add(&flags, "doublescan");
- if (mode->Flags & V_BCAST) add(&flags, "bcast");
- if (mode->Flags & V_PHSYNC) add(&flags, "+hsync");
- if (mode->Flags & V_NHSYNC) add(&flags, "-hsync");
- if (mode->Flags & V_PVSYNC) add(&flags, "+vsync");
- if (mode->Flags & V_NVSYNC) add(&flags, "-vsync");
- if (mode->Flags & V_PCSYNC) add(&flags, "+csync");
- if (mode->Flags & V_NCSYNC) add(&flags, "-csync");
-#if 0
- if (mode->Flags & V_CLKDIV2) add(&flags, "vclk/2");
-#endif
- xf86DrvMsgVerb(scrnIndex, X_INFO, 3,
- "Modeline \"%s\" %6.2f %i %i %i %i %i %i %i %i%s\n",
- mode->name, mode->Clock/1000., mode->HDisplay,
- mode->HSyncStart, mode->HSyncEnd, mode->HTotal,
- mode->VDisplay, mode->VSyncStart, mode->VSyncEnd,
- mode->VTotal, flags);
- xfree(flags);
-}
-#endif
-
void
xf86PrintModes(ScrnInfoPtr scrp)
{
@@ -1980,29 +1904,3 @@ xf86PrintModes(ScrnInfoPtr scrp)
p = p->next;
} while (p != NULL && p != scrp->modes);
}
-
-#if 0
-/**
- * Adds the new mode into the mode list, and returns the new list
- *
- * \param modes doubly-linked mode list.
- */
-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;
-}
-#endif
diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index ded52162e..28da22b40 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -82,7 +82,7 @@ typedef enum {
* mask is 0xFFFF0000.
*/
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4)
-#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(5, 0)
+#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(6, 0)
#define ABI_XINPUT_VERSION SET_ABI_VERSION(7, 0)
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(2, 0)
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 6)
@@ -194,7 +194,6 @@ extern _X_EXPORT char **LoaderListDirs(const char **, const char **);
extern _X_EXPORT void LoaderFreeDirList(char **);
extern _X_EXPORT void LoaderErrorMsg(const char *, const char *, int, int);
extern _X_EXPORT void LoadExtension(ExtensionModule *, Bool);
-extern _X_EXPORT int LoaderCheckUnresolved(int);
extern _X_EXPORT void LoaderGetOS(const char **name, int *major, int *minor, int *teeny);
extern _X_EXPORT Bool LoaderShouldIgnoreABI(void);
extern _X_EXPORT int LoaderGetABIVersion(const char *abiclass);
diff --git a/hw/xfree86/common/xf86PM.c b/hw/xfree86/common/xf86PM.c
index c51960e81..7af89b5b4 100644
--- a/hw/xfree86/common/xf86PM.c
+++ b/hw/xfree86/common/xf86PM.c
@@ -70,7 +70,6 @@ suspend (pmEvent event, Bool undo)
xf86inSuspend = TRUE;
for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
if (xf86Screens[i]->EnableDisableFBAccess)
(*xf86Screens[i]->EnableDisableFBAccess) (i, FALSE);
}
@@ -81,7 +80,6 @@ suspend (pmEvent event, Bool undo)
}
xf86EnterServerState(SETUP);
for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
if (xf86Screens[i]->PMEvent)
xf86Screens[i]->PMEvent(i,event,undo);
else {
@@ -90,7 +88,7 @@ suspend (pmEvent event, Bool undo)
}
}
xf86AccessLeave();
- xf86AccessLeaveState();
+
}
static void
@@ -102,7 +100,6 @@ resume(pmEvent event, Bool undo)
xf86AccessEnter();
xf86EnterServerState(SETUP);
for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
if (xf86Screens[i]->PMEvent)
xf86Screens[i]->PMEvent(i,event,undo);
else {
@@ -112,7 +109,6 @@ resume(pmEvent event, Bool undo)
}
xf86EnterServerState(OPERATING);
for (i = 0; i < xf86NumScreens; i++) {
- xf86EnableAccess(xf86Screens[i]);
if (xf86Screens[i]->EnableDisableFBAccess)
(*xf86Screens[i]->EnableDisableFBAccess) (i, TRUE);
}
@@ -167,7 +163,6 @@ DoApmEvent(pmEvent event, Bool undo)
if (xf86Screens[i]->PMEvent) {
if (!setup) xf86EnterServerState(SETUP);
setup = 1;
- xf86EnableAccess(xf86Screens[i]);
xf86Screens[i]->PMEvent(i,event,undo);
}
}
diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
index f4ed8c085..3bb15718c 100644
--- a/hw/xfree86/common/xf86Priv.h
+++ b/hw/xfree86/common/xf86Priv.h
@@ -88,12 +88,9 @@ extern _X_EXPORT int xf86NumDrivers;
extern _X_EXPORT Bool xf86Resetting;
extern _X_EXPORT Bool xf86Initialising;
extern _X_EXPORT int xf86NumScreens;
-extern _X_EXPORT xf86CurrentAccessRec xf86CurrentAccess;
extern _X_EXPORT const char *xf86VisualNames[];
extern _X_EXPORT int xf86Verbose; /* verbosity level */
extern _X_EXPORT int xf86LogVerbose; /* log file verbosity level */
-extern _X_EXPORT Bool xf86ProbeOnly;
-extern _X_EXPORT Bool xf86DoProbe;
extern _X_EXPORT Bool xorgHWAccess;
extern _X_EXPORT RootWinPropPtr *xf86RegisteredPropertiesTable;
@@ -118,15 +115,12 @@ extern _X_EXPORT void xf86AccessInit(void);
extern _X_EXPORT void xf86AccessEnter(void);
extern _X_EXPORT void xf86AccessLeave(void);
extern _X_EXPORT void xf86EntityInit(void);
-extern _X_EXPORT void xf86AccessLeaveState(void);
extern _X_EXPORT void xf86FindPrimaryDevice(void);
/* new RAC */
-extern _X_EXPORT void xf86ResourceBrokerInit(void);
extern _X_EXPORT void xf86PostProbe(void);
extern _X_EXPORT void xf86ClearEntityListForScreen(int scrnIndex);
extern _X_EXPORT void xf86AddDevToEntity(int entityIndex, GDevPtr dev);
-extern _X_EXPORT void xf86PostPreInit(void);
extern _X_EXPORT void xf86PostScreenInit(void);
/* xf86Config.c */
diff --git a/hw/xfree86/common/xf86Privstr.h b/hw/xfree86/common/xf86Privstr.h
index 52960e5dd..26f822dc4 100644
--- a/hw/xfree86/common/xf86Privstr.h
+++ b/hw/xfree86/common/xf86Privstr.h
@@ -34,7 +34,6 @@
#ifndef _XF86PRIVSTR_H
#define _XF86PRIVSTR_H
-#include "xf86Pci.h"
#include "xf86str.h"
typedef enum {
@@ -63,6 +62,9 @@ typedef struct {
/* event handler part */
int lastEventTime;
Bool vtRequestsPending;
+#ifdef sun
+ int vtPendingNum;
+#endif
Bool dontVTSwitch;
Bool dontZap;
Bool dontZoom;
diff --git a/hw/xfree86/common/xf86RAC.c b/hw/xfree86/common/xf86RAC.c
deleted file mode 100644
index 2eed8c7f5..000000000
--- a/hw/xfree86/common/xf86RAC.c
+++ /dev/null
@@ -1,1171 +0,0 @@
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "misc.h"
-#include "xf86.h"
-#include "xf86_OSproc.h"
-
-#include <X11/X.h>
-#include "colormapst.h"
-#include "scrnintstr.h"
-#include "screenint.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "pixmap.h"
-#include "windowstr.h"
-#include "window.h"
-#include "xf86str.h"
-#include "xf86RAC.h"
-#include "mipointer.h"
-#include "mipointrst.h"
-#ifdef RENDER
-# include "picturestr.h"
-#endif
-
-#ifdef DEBUG
-#define DPRINT_S(x,y) ErrorF(x ": %i\n",y);
-#define DPRINT(x) ErrorF(x "\n");
-#else
-#define DPRINT_S(x,y)
-#define DPRINT(x)
-#endif
-
-#define WRAP_SCREEN(x,y) {pScreenPriv->x = pScreen->x;\
- pScreen->x = y;}
-#define WRAP_SCREEN_COND(x,y,cond) \
- {pScreenPriv->x = pScreen->x;\
- if (flag & (cond))\
- pScreen->x = y;}
-#define UNWRAP_SCREEN(x) pScreen->x = pScreenPriv->x
-
-#define SCREEN_PROLOG(x) pScreen->x = ((RACScreenPtr) \
- dixLookupPrivate(&(pScreen)->devPrivates, RACScreenKey))->x
-#define SCREEN_EPILOG(x,y) pScreen->x = y;
-
-#define WRAP_PICT_COND(x,y,cond) if (ps)\
- {pScreenPriv->x = ps->x;\
- if (flag & (cond))\
- ps->x = y;}
-#define UNWRAP_PICT(x) if (ps) {ps->x = pScreenPriv->x;}
-
-#define PICTURE_PROLOGUE(field) ps->field = \
- ((RACScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, RACScreenKey))->field
-#define PICTURE_EPILOGUE(field, wrap) \
- ps->field = wrap
-
-#define WRAP_SCREEN_INFO(x,y) {pScreenPriv->x = pScrn->x;\
- pScrn->x = y;}
-#define WRAP_SCREEN_INFO_COND(x,y,cond) \
- {pScreenPriv->x = pScrn->x;\
- if (flag & (cond))\
- pScrn->x = y;}
-#define UNWRAP_SCREEN_INFO(x) pScrn->x = pScreenPriv->x
-
-#define SPRITE_PROLOG miPointerScreenPtr PointPriv = \
- (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey); \
- RACScreenPtr pScreenPriv = \
- ((RACScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, RACScreenKey));\
- PointPriv->spriteFuncs = pScreenPriv->miSprite;
-#define SPRITE_EPILOG pScreenPriv->miSprite = PointPriv->spriteFuncs;\
- PointPriv->spriteFuncs = &RACSpriteFuncs;
-#define WRAP_SPRITE_COND(cond){pScreenPriv->miSprite = PointPriv->spriteFuncs;\
- if(flag & (cond))\
- PointPriv->spriteFuncs = &RACSpriteFuncs;}
-#define UNWRAP_SPRITE PointPriv->spriteFuncs = pScreenPriv->miSprite
-
-
-#define GC_WRAP(x) pGCPriv->wrapOps = (x)->ops;\
- pGCPriv->wrapFuncs = (x)->funcs;\
- (x)->ops = &RACGCOps;\
- (x)->funcs = &RACGCFuncs;
-#define GC_UNWRAP(x)\
- RACGCPtr pGCPriv = (RACGCPtr)dixLookupPrivate(&(x)->devPrivates, RACGCKey);\
- (x)->ops = pGCPriv->wrapOps;\
- (x)->funcs = pGCPriv->wrapFuncs;
-
-#define GC_SCREEN register ScrnInfoPtr pScrn \
- = xf86Screens[pGC->pScreen->myNum]
-
-#define ENABLE xf86EnableAccess(xf86Screens[pScreen->myNum])
-#define ENABLE_GC xf86EnableAccess(xf86Screens[pGC->pScreen->myNum])
-
-typedef struct _RACScreen {
- CreateGCProcPtr CreateGC;
- CloseScreenProcPtr CloseScreen;
- GetImageProcPtr GetImage;
- GetSpansProcPtr GetSpans;
- SourceValidateProcPtr SourceValidate;
- CopyWindowProcPtr CopyWindow;
- ClearToBackgroundProcPtr ClearToBackground;
- CreatePixmapProcPtr CreatePixmap;
- SaveScreenProcPtr SaveScreen;
- /* Colormap */
- StoreColorsProcPtr StoreColors;
- /* Cursor */
- DisplayCursorProcPtr DisplayCursor;
- RealizeCursorProcPtr RealizeCursor;
- UnrealizeCursorProcPtr UnrealizeCursor;
- RecolorCursorProcPtr RecolorCursor;
- SetCursorPositionProcPtr SetCursorPosition;
- void (*AdjustFrame)(int,int,int,int);
- Bool (*SwitchMode)(int, DisplayModePtr,int);
- Bool (*EnterVT)(int, int);
- void (*LeaveVT)(int, int);
- void (*FreeScreen)(int, int);
- miPointerSpriteFuncPtr miSprite;
-#ifdef RENDER
- CompositeProcPtr Composite;
- GlyphsProcPtr Glyphs;
- CompositeRectsProcPtr CompositeRects;
-#endif
-} RACScreenRec, *RACScreenPtr;
-
-typedef struct _RACGC {
- GCOps *wrapOps;
- GCFuncs *wrapFuncs;
-} RACGCRec, *RACGCPtr;
-
-/* Screen funcs */
-static Bool RACCloseScreen (int i, ScreenPtr pScreen);
-static void RACGetImage (DrawablePtr pDrawable, int sx, int sy,
- int w, int h, unsigned int format,
- unsigned long planemask, char *pdstLine);
-static void RACGetSpans (DrawablePtr pDrawable, int wMax, DDXPointPtr ppt,
- int *pwidth, int nspans, char *pdstStart);
-static void RACSourceValidate (DrawablePtr pDrawable,
- int x, int y, int width, int height );
-static void RACCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
- RegionPtr prgnSrc );
-static void RACClearToBackground (WindowPtr pWin, int x, int y,
- int w, int h, Bool generateExposures );
-static PixmapPtr RACCreatePixmap(ScreenPtr pScreen, int w, int h, int depth,
- unsigned usage_hint);
-static Bool RACCreateGC(GCPtr pGC);
-static Bool RACSaveScreen(ScreenPtr pScreen, Bool unblank);
-static void RACStoreColors (ColormapPtr pmap, int ndef, xColorItem *pdefs);
-static void RACRecolorCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
- CursorPtr pCurs, Bool displayed);
-static Bool RACRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
- CursorPtr pCursor);
-static Bool RACUnrealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
- CursorPtr pCursor);
-static Bool RACDisplayCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
- CursorPtr pCursor);
-static Bool RACSetCursorPosition (DeviceIntPtr pDev, ScreenPtr pScreen,
- int x, int y, Bool generateEvent);
-static void RACAdjustFrame(int index, int x, int y, int flags);
-static Bool RACSwitchMode(int index, DisplayModePtr mode, int flags);
-static Bool RACEnterVT(int index, int flags);
-static void RACLeaveVT(int index, int flags);
-static void RACFreeScreen(int index, int flags);
-/* GC funcs */
-static void RACValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDraw);
-static void RACChangeGC(GCPtr pGC, unsigned long mask);
-static void RACCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
-static void RACDestroyGC(GCPtr pGC);
-static void RACChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects);
-static void RACDestroyClip(GCPtr pGC);
-static void RACCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
-/* GC ops */
-static void RACFillSpans( DrawablePtr pDraw, GC *pGC, int nInit,
- DDXPointPtr pptInit, int *pwidthInit, int fSorted );
-static void RACSetSpans(DrawablePtr pDraw, GCPtr pGC, char *pcharsrc,
- register DDXPointPtr ppt, int *pwidth, int nspans,
- int fSorted );
-static void RACPutImage(DrawablePtr pDraw, GCPtr pGC, int depth,
- int x, int y, int w, int h, int leftPad,
- int format, char *pImage );
-static RegionPtr RACCopyArea(DrawablePtr pSrc, DrawablePtr pDst,
- GC *pGC, int srcx, int srcy,
- int width, int height,
- int dstx, int dsty );
-static RegionPtr RACCopyPlane(DrawablePtr pSrc, DrawablePtr pDst,
- GCPtr pGC, int srcx, int srcy,
- int width, int height, int dstx, int dsty,
- unsigned long bitPlane );
-static void RACPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode,
- int npt, xPoint *pptInit );
-static void RACPolylines(DrawablePtr pDraw, GCPtr pGC, int mode,
- int npt, DDXPointPtr pptInit );
-static void RACPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg,
- xSegment *pSeg );
-static void RACPolyRectangle(DrawablePtr pDraw, GCPtr pGC, int nRectsInit,
- xRectangle *pRectsInit );
-static void RACPolyArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
- xArc *parcs );
-static void RACFillPolygon(DrawablePtr pDraw, GCPtr pGC, int shape, int mode,
- int count, DDXPointPtr ptsIn );
-static void RACPolyFillRect( DrawablePtr pDraw, GCPtr pGC, int nrectFill,
- xRectangle *prectInit );
-static void RACPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
- xArc *parcs );
-static int RACPolyText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
- int count, char *chars );
-static int RACPolyText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
- int count, unsigned short *chars );
-static void RACImageText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
- int count, char *chars );
-static void RACImageText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
- int count, unsigned short *chars );
-static void RACImageGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
- int yInit, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase );
-static void RACPolyGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
- int yInit, unsigned int nglyph,
- CharInfoPtr *ppci, pointer pglyphBase );
-static void RACPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDraw,
- int dx, int dy, int xOrg, int yOrg );
-/* miSpriteFuncs */
-static Bool RACSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
- CursorPtr pCur);
-static Bool RACSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
- CursorPtr pCur);
-static void RACSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
- CursorPtr pCur, int x, int y);
-static void RACSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
- int x, int y);
-#ifdef RENDER
-static void RACComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
- PicturePtr pDst, INT16 xSrc, INT16 ySrc,
- INT16 xMask, INT16 yMask, INT16 xDst,
- INT16 yDst, CARD16 width, CARD16 height);
-static void RACGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
- int nlist, GlyphListPtr list, GlyphPtr *glyphs);
-static void RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color,
- int nRect, xRectangle *rects);
-#endif
-
-static GCFuncs RACGCFuncs = {
- RACValidateGC, RACChangeGC, RACCopyGC, RACDestroyGC,
- RACChangeClip, RACDestroyClip, RACCopyClip
-};
-
-static GCOps RACGCOps = {
- RACFillSpans, RACSetSpans, RACPutImage, RACCopyArea,
- RACCopyPlane, RACPolyPoint, RACPolylines, RACPolySegment,
- RACPolyRectangle, RACPolyArc, RACFillPolygon, RACPolyFillRect,
- RACPolyFillArc, RACPolyText8, RACPolyText16, RACImageText8,
- RACImageText16, RACImageGlyphBlt, RACPolyGlyphBlt, RACPushPixels,
- {NULL} /* devPrivate */
-};
-
-static miPointerSpriteFuncRec RACSpriteFuncs = {
- RACSpriteRealizeCursor, RACSpriteUnrealizeCursor, RACSpriteSetCursor,
- RACSpriteMoveCursor
-};
-
-static int RACScreenKeyIndex;
-static DevPrivateKey RACScreenKey = &RACScreenKeyIndex;
-static int RACGCKeyIndex;
-static DevPrivateKey RACGCKey = &RACGCKeyIndex;
-
-
-Bool
-xf86RACInit(ScreenPtr pScreen, unsigned int flag)
-{
- ScrnInfoPtr pScrn;
- RACScreenPtr pScreenPriv;
- miPointerScreenPtr PointPriv;
-#ifdef RENDER
- PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
-#endif
-
- pScrn = xf86Screens[pScreen->myNum];
- PointPriv = (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates,
- miPointerScreenKey);
- DPRINT_S("RACInit",pScreen->myNum);
-
- if (!dixRequestPrivate(RACGCKey, sizeof(RACGCRec)))
- return FALSE;
-
- if (!(pScreenPriv = xalloc(sizeof(RACScreenRec))))
- return FALSE;
-
- dixSetPrivate(&pScreen->devPrivates, RACScreenKey, pScreenPriv);
-
- WRAP_SCREEN(CloseScreen, RACCloseScreen);
- WRAP_SCREEN(SaveScreen, RACSaveScreen);
- WRAP_SCREEN_COND(CreateGC, RACCreateGC, RAC_FB);
- WRAP_SCREEN_COND(GetImage, RACGetImage, RAC_FB);
- WRAP_SCREEN_COND(GetSpans, RACGetSpans, RAC_FB);
- WRAP_SCREEN_COND(SourceValidate, RACSourceValidate, RAC_FB);
- WRAP_SCREEN_COND(CopyWindow, RACCopyWindow, RAC_FB);
- WRAP_SCREEN_COND(ClearToBackground, RACClearToBackground, RAC_FB);
- WRAP_SCREEN_COND(CreatePixmap, RACCreatePixmap, RAC_FB);
- WRAP_SCREEN_COND(StoreColors, RACStoreColors, RAC_COLORMAP);
- WRAP_SCREEN_COND(DisplayCursor, RACDisplayCursor, RAC_CURSOR);
- WRAP_SCREEN_COND(RealizeCursor, RACRealizeCursor, RAC_CURSOR);
- WRAP_SCREEN_COND(UnrealizeCursor, RACUnrealizeCursor, RAC_CURSOR);
- WRAP_SCREEN_COND(RecolorCursor, RACRecolorCursor, RAC_CURSOR);
- WRAP_SCREEN_COND(SetCursorPosition, RACSetCursorPosition, RAC_CURSOR);
-#ifdef RENDER
- WRAP_PICT_COND(Composite,RACComposite,RAC_FB);
- WRAP_PICT_COND(Glyphs,RACGlyphs,RAC_FB);
- WRAP_PICT_COND(CompositeRects,RACCompositeRects,RAC_FB);
-#endif
- WRAP_SCREEN_INFO_COND(AdjustFrame, RACAdjustFrame, RAC_VIEWPORT);
- WRAP_SCREEN_INFO(SwitchMode, RACSwitchMode);
- WRAP_SCREEN_INFO(EnterVT, RACEnterVT);
- WRAP_SCREEN_INFO(LeaveVT, RACLeaveVT);
- WRAP_SCREEN_INFO(FreeScreen, RACFreeScreen);
- WRAP_SPRITE_COND(RAC_CURSOR);
-
- return TRUE;
-}
-
-/* Screen funcs */
-static Bool
-RACCloseScreen (int i, ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
- &pScreen->devPrivates, RACScreenKey);
- miPointerScreenPtr PointPriv = (miPointerScreenPtr)dixLookupPrivate(
- &pScreen->devPrivates, miPointerScreenKey);
-#ifdef RENDER
- PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
-#endif
-
- DPRINT_S("RACCloseScreen",pScreen->myNum);
- UNWRAP_SCREEN(CreateGC);
- UNWRAP_SCREEN(CloseScreen);
- UNWRAP_SCREEN(GetImage);
- UNWRAP_SCREEN(GetSpans);
- UNWRAP_SCREEN(SourceValidate);
- UNWRAP_SCREEN(CopyWindow);
- UNWRAP_SCREEN(ClearToBackground);
- UNWRAP_SCREEN(SaveScreen);
- UNWRAP_SCREEN(StoreColors);
- UNWRAP_SCREEN(DisplayCursor);
- UNWRAP_SCREEN(RealizeCursor);
- UNWRAP_SCREEN(UnrealizeCursor);
- UNWRAP_SCREEN(RecolorCursor);
- UNWRAP_SCREEN(SetCursorPosition);
-#ifdef RENDER
- UNWRAP_PICT(Composite);
- UNWRAP_PICT(Glyphs);
- UNWRAP_PICT(CompositeRects);
-#endif
- UNWRAP_SCREEN_INFO(AdjustFrame);
- UNWRAP_SCREEN_INFO(SwitchMode);
- UNWRAP_SCREEN_INFO(EnterVT);
- UNWRAP_SCREEN_INFO(LeaveVT);
- UNWRAP_SCREEN_INFO(FreeScreen);
- UNWRAP_SPRITE;
-
- xfree ((pointer) pScreenPriv);
-
- if (xf86Screens[pScreen->myNum]->vtSema) {
- xf86EnterServerState(SETUP);
- ENABLE;
- }
- return (*pScreen->CloseScreen) (i, pScreen);
-}
-
-static void
-RACGetImage (
- DrawablePtr pDrawable,
- int sx, int sy, int w, int h,
- unsigned int format,
- unsigned long planemask,
- char *pdstLine
- )
-{
- ScreenPtr pScreen = pDrawable->pScreen;
- DPRINT_S("RACGetImage",pScreen->myNum);
- SCREEN_PROLOG(GetImage);
- if (xf86Screens[pScreen->myNum]->vtSema) {
- ENABLE;
- }
- (*pScreen->GetImage) (pDrawable, sx, sy, w, h,
- format, planemask, pdstLine);
- SCREEN_EPILOG (GetImage, RACGetImage);
-}
-
-static void
-RACGetSpans (
- DrawablePtr pDrawable,
- int wMax,
- DDXPointPtr ppt,
- int *pwidth,
- int nspans,
- char *pdstStart
- )
-{
- ScreenPtr pScreen = pDrawable->pScreen;
-
- DPRINT_S("RACGetSpans",pScreen->myNum);
- SCREEN_PROLOG (GetSpans);
- ENABLE;
- (*pScreen->GetSpans) (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
- SCREEN_EPILOG (GetSpans, RACGetSpans);
-}
-
-static void
-RACSourceValidate (
- DrawablePtr pDrawable,
- int x, int y, int width, int height )
-{
- ScreenPtr pScreen = pDrawable->pScreen;
- DPRINT_S("RACSourceValidate",pScreen->myNum);
- SCREEN_PROLOG (SourceValidate);
- ENABLE;
- if (pScreen->SourceValidate)
- (*pScreen->SourceValidate) (pDrawable, x, y, width, height);
- SCREEN_EPILOG (SourceValidate, RACSourceValidate);
-}
-
-static void
-RACCopyWindow(
- WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc )
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- DPRINT_S("RACCopyWindow",pScreen->myNum);
- SCREEN_PROLOG (CopyWindow);
- ENABLE;
- (*pScreen->CopyWindow) (pWin, ptOldOrg, prgnSrc);
- SCREEN_EPILOG (CopyWindow, RACCopyWindow);
-}
-
-static void
-RACClearToBackground (
- WindowPtr pWin,
- int x, int y,
- int w, int h,
- Bool generateExposures )
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- DPRINT_S("RACClearToBackground",pScreen->myNum);
- SCREEN_PROLOG ( ClearToBackground);
- ENABLE;
- (*pScreen->ClearToBackground) (pWin, x, y, w, h, generateExposures);
- SCREEN_EPILOG (ClearToBackground, RACClearToBackground);
-}
-
-static PixmapPtr
-RACCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, unsigned usage_hint)
-{
- PixmapPtr pPix;
-
- DPRINT_S("RACCreatePixmap",pScreen->myNum);
- SCREEN_PROLOG ( CreatePixmap);
- ENABLE;
- pPix = (*pScreen->CreatePixmap) (pScreen, w, h, depth, usage_hint);
- SCREEN_EPILOG (CreatePixmap, RACCreatePixmap);
-
- return pPix;
-}
-
-static Bool
-RACSaveScreen(ScreenPtr pScreen, Bool unblank)
-{
- Bool val;
-
- DPRINT_S("RACSaveScreen",pScreen->myNum);
- SCREEN_PROLOG (SaveScreen);
- ENABLE;
- val = (*pScreen->SaveScreen) (pScreen, unblank);
- SCREEN_EPILOG (SaveScreen, RACSaveScreen);
-
- return val;
-}
-
-static void
-RACStoreColors (
- ColormapPtr pmap,
- int ndef,
- xColorItem *pdefs)
-{
- ScreenPtr pScreen = pmap->pScreen;
-
- DPRINT_S("RACStoreColors",pScreen->myNum);
- SCREEN_PROLOG (StoreColors);
- ENABLE;
- (*pScreen->StoreColors) (pmap,ndef,pdefs);
-
- SCREEN_EPILOG ( StoreColors, RACStoreColors);
-}
-
-static void
-RACRecolorCursor (
- DeviceIntPtr pDev,
- ScreenPtr pScreen,
- CursorPtr pCurs,
- Bool displayed
- )
-{
- DPRINT_S("RACRecolorCursor",pScreen->myNum);
- SCREEN_PROLOG (RecolorCursor);
- ENABLE;
- (*pScreen->RecolorCursor) (pDev, pScreen,pCurs,displayed);
-
- SCREEN_EPILOG ( RecolorCursor, RACRecolorCursor);
-}
-
-static Bool
-RACRealizeCursor (
- DeviceIntPtr pDev,
- ScreenPtr pScreen,
- CursorPtr pCursor
- )
-{
- Bool val;
-
- DPRINT_S("RACRealizeCursor",pScreen->myNum);
- SCREEN_PROLOG (RealizeCursor);
- ENABLE;
- val = (*pScreen->RealizeCursor) (pDev, pScreen,pCursor);
-
- SCREEN_EPILOG ( RealizeCursor, RACRealizeCursor);
- return val;
-}
-
-static Bool
-RACUnrealizeCursor (
- DeviceIntPtr pDev,
- ScreenPtr pScreen,
- CursorPtr pCursor
- )
-{
- Bool val;
-
- DPRINT_S("RACUnrealizeCursor",pScreen->myNum);
- SCREEN_PROLOG (UnrealizeCursor);
- ENABLE;
- val = (*pScreen->UnrealizeCursor) (pDev, pScreen,pCursor);
-
- SCREEN_EPILOG ( UnrealizeCursor, RACUnrealizeCursor);
- return val;
-}
-
-static Bool
-RACDisplayCursor (
- DeviceIntPtr pDev,
- ScreenPtr pScreen,
- CursorPtr pCursor
- )
-{
- Bool val;
-
- DPRINT_S("RACDisplayCursor",pScreen->myNum);
- SCREEN_PROLOG (DisplayCursor);
- ENABLE;
- val = (*pScreen->DisplayCursor) (pDev, pScreen,pCursor);
-
- SCREEN_EPILOG ( DisplayCursor, RACDisplayCursor);
- return val;
-}
-
-static Bool
-RACSetCursorPosition (
- DeviceIntPtr pDev,
- ScreenPtr pScreen,
- int x, int y,
- Bool generateEvent)
-{
- Bool val;
-
- DPRINT_S("RACSetCursorPosition",pScreen->myNum);
- SCREEN_PROLOG (SetCursorPosition);
- ENABLE;
- val = (*pScreen->SetCursorPosition) (pDev, pScreen,x,y,generateEvent);
-
- SCREEN_EPILOG ( SetCursorPosition, RACSetCursorPosition);
- return val;
-}
-
-static void
-RACAdjustFrame(int index, int x, int y, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
- &pScreen->devPrivates, RACScreenKey);
-
- DPRINT_S("RACAdjustFrame",index);
- xf86EnableAccess(xf86Screens[index]);
-
- (*pScreenPriv->AdjustFrame)(index, x, y, flags);
-}
-
-static Bool
-RACSwitchMode(int index, DisplayModePtr mode, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
- &pScreen->devPrivates, RACScreenKey);
-
- DPRINT_S("RACSwitchMode",index);
- xf86EnableAccess(xf86Screens[index]);
-
- return (*pScreenPriv->SwitchMode)(index, mode, flags);
-}
-
-static Bool
-RACEnterVT(int index, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
- &pScreen->devPrivates, RACScreenKey);
-
- DPRINT_S("RACEnterVT",index);
- xf86EnableAccess(xf86Screens[index]);
-
- return (*pScreenPriv->EnterVT)(index, flags);
-}
-
-static void
-RACLeaveVT(int index, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
- &pScreen->devPrivates, RACScreenKey);
-
- DPRINT_S("RACLeaveVT",index);
- xf86EnableAccess(xf86Screens[index]);
-
- (*pScreenPriv->LeaveVT)(index, flags);
-}
-
-static void
-RACFreeScreen(int index, int flags)
-{
- ScreenPtr pScreen = screenInfo.screens[index];
- RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
- &pScreen->devPrivates, RACScreenKey);
-
- DPRINT_S("RACFreeScreen",index);
- xf86EnableAccess(xf86Screens[index]);
-
- (*pScreenPriv->FreeScreen)(index, flags);
-}
-
-static Bool
-RACCreateGC(GCPtr pGC)
-{
- ScreenPtr pScreen = pGC->pScreen;
- RACGCPtr pGCPriv = (RACGCPtr)dixLookupPrivate(&pGC->devPrivates, RACGCKey);
- Bool ret;
-
- DPRINT_S("RACCreateGC",pScreen->myNum);
- SCREEN_PROLOG(CreateGC);
-
- ret = (*pScreen->CreateGC)(pGC);
-
- GC_WRAP(pGC);
- SCREEN_EPILOG(CreateGC,RACCreateGC);
-
- return ret;
-}
-
-/* GC funcs */
-static void
-RACValidateGC(
- GCPtr pGC,
- unsigned long changes,
- DrawablePtr pDraw )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACValidateGC");
- (*pGC->funcs->ValidateGC)(pGC, changes, pDraw);
- GC_WRAP(pGC);
-}
-
-
-static void
-RACDestroyGC(GCPtr pGC)
-{
- GC_UNWRAP (pGC);
- DPRINT("RACDestroyGC");
- (*pGC->funcs->DestroyGC)(pGC);
- GC_WRAP (pGC);
-}
-
-static void
-RACChangeGC (
- GCPtr pGC,
- unsigned long mask)
-{
- GC_UNWRAP (pGC);
- DPRINT("RACChangeGC");
- (*pGC->funcs->ChangeGC) (pGC, mask);
- GC_WRAP (pGC);
-}
-
-static void
-RACCopyGC (
- GCPtr pGCSrc,
- unsigned long mask,
- GCPtr pGCDst)
-{
- GC_UNWRAP (pGCDst);
- DPRINT("RACCopyGC");
- (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst);
- GC_WRAP (pGCDst);
-}
-
-static void
-RACChangeClip (
- GCPtr pGC,
- int type,
- pointer pvalue,
- int nrects )
-{
- GC_UNWRAP (pGC);
- DPRINT("RACChangeClip");
- (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects);
- GC_WRAP (pGC);
-}
-
-static void
-RACCopyClip(GCPtr pgcDst, GCPtr pgcSrc)
-{
- GC_UNWRAP (pgcDst);
- DPRINT("RACCopyClip");
- (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc);
- GC_WRAP (pgcDst);
-}
-
-static void
-RACDestroyClip(GCPtr pGC)
-{
- GC_UNWRAP (pGC);
- DPRINT("RACDestroyClip");
- (* pGC->funcs->DestroyClip)(pGC);
- GC_WRAP (pGC);
-}
-
-/* GC Ops */
-static void
-RACFillSpans(
- DrawablePtr pDraw,
- GC *pGC,
- int nInit,
- DDXPointPtr pptInit,
- int *pwidthInit,
- int fSorted )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACFillSpans");
- ENABLE_GC;
- (*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
- GC_WRAP(pGC);
-}
-
-static void
-RACSetSpans(
- DrawablePtr pDraw,
- GCPtr pGC,
- char *pcharsrc,
- register DDXPointPtr ppt,
- int *pwidth,
- int nspans,
- int fSorted )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACSetSpans");
- ENABLE_GC;
- (*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, ppt, pwidth, nspans, fSorted);
- GC_WRAP(pGC);
-}
-
-static void
-RACPutImage(
- DrawablePtr pDraw,
- GCPtr pGC,
- int depth,
- int x, int y, int w, int h,
- int leftPad,
- int format,
- char *pImage )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPutImage");
- ENABLE_GC;
- (*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h,
- leftPad, format, pImage);
- GC_WRAP(pGC);
-}
-
-static RegionPtr
-RACCopyArea(
- DrawablePtr pSrc,
- DrawablePtr pDst,
- GC *pGC,
- int srcx, int srcy,
- int width, int height,
- int dstx, int dsty )
-{
- RegionPtr ret;
-
- GC_UNWRAP(pGC);
- DPRINT("RACCopyArea");
- ENABLE_GC;
- ret = (*pGC->ops->CopyArea)(pSrc, pDst,
- pGC, srcx, srcy, width, height, dstx, dsty);
- GC_WRAP(pGC);
- return ret;
-}
-
-static RegionPtr
-RACCopyPlane(
- DrawablePtr pSrc,
- DrawablePtr pDst,
- GCPtr pGC,
- int srcx, int srcy,
- int width, int height,
- int dstx, int dsty,
- unsigned long bitPlane )
-{
- RegionPtr ret;
-
- GC_UNWRAP(pGC);
- DPRINT("RACCopyPlane");
- ENABLE_GC;
- ret = (*pGC->ops->CopyPlane)(pSrc, pDst, pGC, srcx, srcy,
- width, height, dstx, dsty, bitPlane);
- GC_WRAP(pGC);
- return ret;
-}
-
-static void
-RACPolyPoint(
- DrawablePtr pDraw,
- GCPtr pGC,
- int mode,
- int npt,
- xPoint *pptInit )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPolyPoint");
- ENABLE_GC;
- (*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit);
- GC_WRAP(pGC);
-}
-
-
-static void
-RACPolylines(
- DrawablePtr pDraw,
- GCPtr pGC,
- int mode,
- int npt,
- DDXPointPtr pptInit )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPolylines");
- ENABLE_GC;
- (*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit);
- GC_WRAP(pGC);
-}
-
-static void
-RACPolySegment(
- DrawablePtr pDraw,
- GCPtr pGC,
- int nseg,
- xSegment *pSeg )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPolySegment");
- ENABLE_GC;
- (*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg);
- GC_WRAP(pGC);
-}
-
-static void
-RACPolyRectangle(
- DrawablePtr pDraw,
- GCPtr pGC,
- int nRectsInit,
- xRectangle *pRectsInit )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPolyRectangle");
- ENABLE_GC;
- (*pGC->ops->PolyRectangle)(pDraw, pGC, nRectsInit, pRectsInit);
- GC_WRAP(pGC);
-}
-
-static void
-RACPolyArc(
- DrawablePtr pDraw,
- GCPtr pGC,
- int narcs,
- xArc *parcs )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPolyArc");
- ENABLE_GC;
- (*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs);
- GC_WRAP(pGC);
-}
-
-static void
-RACFillPolygon(
- DrawablePtr pDraw,
- GCPtr pGC,
- int shape,
- int mode,
- int count,
- DDXPointPtr ptsIn )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACFillPolygon");
- ENABLE_GC;
- (*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, ptsIn);
- GC_WRAP(pGC);
-}
-
-
-static void
-RACPolyFillRect(
- DrawablePtr pDraw,
- GCPtr pGC,
- int nrectFill,
- xRectangle *prectInit )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPolyFillRect");
- ENABLE_GC;
- (*pGC->ops->PolyFillRect)(pDraw, pGC, nrectFill, prectInit);
- GC_WRAP(pGC);
-}
-
-
-static void
-RACPolyFillArc(
- DrawablePtr pDraw,
- GCPtr pGC,
- int narcs,
- xArc *parcs )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPolyFillArc");
- ENABLE_GC;
- (*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs);
- GC_WRAP(pGC);
-}
-
-static int
-RACPolyText8(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *chars )
-{
- int ret;
-
- GC_UNWRAP(pGC);
- DPRINT("RACPolyText8");
- ENABLE_GC;
- ret = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars);
- GC_WRAP(pGC);
- return ret;
-}
-
-static int
-RACPolyText16(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *chars )
-{
- int ret;
-
- GC_UNWRAP(pGC);
- DPRINT("RACPolyText16");
- ENABLE_GC;
- ret = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars);
- GC_WRAP(pGC);
- return ret;
-}
-
-static void
-RACImageText8(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- char *chars )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACImageText8");
- ENABLE_GC;
- (*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars);
- GC_WRAP(pGC);
-}
-
-static void
-RACImageText16(
- DrawablePtr pDraw,
- GCPtr pGC,
- int x,
- int y,
- int count,
- unsigned short *chars )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACImageText16");
- ENABLE_GC;
- (*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars);
- GC_WRAP(pGC);
-}
-
-
-static void
-RACImageGlyphBlt(
- DrawablePtr pDraw,
- GCPtr pGC,
- int xInit, int yInit,
- unsigned int nglyph,
- CharInfoPtr *ppci,
- pointer pglyphBase )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACImageGlyphBlt");
- ENABLE_GC;
- (*pGC->ops->ImageGlyphBlt)(pDraw, pGC, xInit, yInit,
- nglyph, ppci, pglyphBase);
- GC_WRAP(pGC);
-}
-
-static void
-RACPolyGlyphBlt(
- DrawablePtr pDraw,
- GCPtr pGC,
- int xInit, int yInit,
- unsigned int nglyph,
- CharInfoPtr *ppci,
- pointer pglyphBase )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPolyGlyphBlt");
- ENABLE_GC;
- (*pGC->ops->PolyGlyphBlt)(pDraw, pGC, xInit, yInit,
- nglyph, ppci, pglyphBase);
- GC_WRAP(pGC);
-}
-
-static void
-RACPushPixels(
- GCPtr pGC,
- PixmapPtr pBitMap,
- DrawablePtr pDraw,
- int dx, int dy, int xOrg, int yOrg )
-{
- GC_UNWRAP(pGC);
- DPRINT("RACPushPixels");
- ENABLE_GC;
- (*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg);
- GC_WRAP(pGC);
-}
-
-
-/* miSpriteFuncs */
-static Bool
-RACSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur)
-{
- Bool val;
- SPRITE_PROLOG;
- DPRINT_S("RACSpriteRealizeCursor",pScreen->myNum);
- ENABLE;
- val = PointPriv->spriteFuncs->RealizeCursor(pDev, pScreen, pCur);
- SPRITE_EPILOG;
- return val;
-}
-
-static Bool
-RACSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur)
-{
- Bool val;
- SPRITE_PROLOG;
- DPRINT_S("RACSpriteUnrealizeCursor",pScreen->myNum);
- ENABLE;
- val = PointPriv->spriteFuncs->UnrealizeCursor(pDev, pScreen, pCur);
- SPRITE_EPILOG;
- return val;
-}
-
-static void
-RACSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
- CursorPtr pCur, int x, int y)
-{
- SPRITE_PROLOG;
- DPRINT_S("RACSpriteSetCursor",pScreen->myNum);
- ENABLE;
- PointPriv->spriteFuncs->SetCursor(pDev, pScreen, pCur, x, y);
- SPRITE_EPILOG;
-}
-
-static void
-RACSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
-{
- SPRITE_PROLOG;
- DPRINT_S("RACSpriteMoveCursor",pScreen->myNum);
- ENABLE;
- PointPriv->spriteFuncs->MoveCursor(pDev, pScreen, x, y);
- SPRITE_EPILOG;
-}
-
-#ifdef RENDER
-static void
-RACComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
- PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask,
- INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width,
- CARD16 height)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen(pScreen);
-
- PICTURE_PROLOGUE(Composite);
-
- ENABLE;
- (*ps->Composite) (op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, xDst,
- yDst, width, height);
-
- PICTURE_EPILOGUE(Composite, RACComposite);
-}
-
-static void
-RACGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlist,
- GlyphListPtr list, GlyphPtr *glyphs)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen(pScreen);
-
- PICTURE_PROLOGUE(Glyphs);
-
- ENABLE;
- (*ps->Glyphs)(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
-
- PICTURE_EPILOGUE (Glyphs, RACGlyphs);
-}
-
-static void
-RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color, int nRect,
- xRectangle *rects)
-{
- ScreenPtr pScreen = pDst->pDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen(pScreen);
-
- PICTURE_PROLOGUE(CompositeRects);
-
- ENABLE;
- (*ps->CompositeRects)(op, pDst, color, nRect, rects);
-
- PICTURE_EPILOGUE (CompositeRects, RACCompositeRects);
-}
-#endif
-
diff --git a/hw/xfree86/common/xf86RAC.h b/hw/xfree86/common/xf86RAC.h
deleted file mode 100644
index 881d0042f..000000000
--- a/hw/xfree86/common/xf86RAC.h
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#ifndef __XF86RAC_H
-#define __XF86RAC_H 1
-
-#include "screenint.h"
-#include "misc.h"
-#include "xf86.h"
-
-extern _X_EXPORT Bool xf86RACInit(ScreenPtr pScreen, unsigned int flag);
-
-/* flags */
-#define RAC_FB 0x01
-#define RAC_CURSOR 0x02
-#define RAC_COLORMAP 0x04
-#define RAC_VIEWPORT 0x08
-
-#endif /* __XF86RAC_H */
diff --git a/hw/xfree86/common/xf86Resources.h b/hw/xfree86/common/xf86Resources.h
deleted file mode 100644
index 012fa699e..000000000
--- a/hw/xfree86/common/xf86Resources.h
+++ /dev/null
@@ -1,137 +0,0 @@
-
-/*
- * Copyright (c) 1999-2002 by The XFree86 Project, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
- */
-
-#ifndef _XF86_RESOURCES_H
-
-#define _XF86_RESOURCES_H
-
-#include "xf86str.h"
-
-#define _END {ResEnd,0,0}
-
-#define _VGA_EXCLUSIVE \
- {ResExcMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResExcMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResExcMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResExcIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResExcIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-#define _VGA_SHARED \
- {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResShrIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResShrIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-#define _VGA_SHARED_MEM \
- {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF}
-
-#define _VGA_SHARED_IO \
- {ResShrIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResShrIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-/*
- * Exclusive unused VGA: resources unneeded but cannot be disabled.
- * Like old Millennium.
- */
-#define _VGA_EXCLUSIVE_UNUSED \
- {ResExcUusdMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResExcUusdMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResExcUusdMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResExcUusdIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResExcUusdIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-/*
- * Shared unused VGA: resources unneeded but cannot be disabled
- * independently. This is used to determine if a device needs RAC.
- */
-#define _VGA_SHARED_UNUSED \
- {ResShrUusdMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResShrUusdMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResShrUusdMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResShrUusdIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
- {ResShrUusdIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
-
-/*
- * Sparse versions of the above for those adapters that respond to all ISA
- * aliases of VGA ports.
- */
-#define _VGA_EXCLUSIVE_SPARSE \
- {ResExcMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResExcMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResExcMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResExcIoSparse | ResBios | ResBus, 0x03B0, 0x03F8},\
- {ResExcIoSparse | ResBios | ResBus, 0x03B8, 0x03FC},\
- {ResExcIoSparse | ResBios | ResBus, 0x03C0, 0x03E0}
-
-#define _VGA_SHARED_SPARSE \
- {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
- {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
- {ResShrIoSparse | ResBios | ResBus, 0x03B0, 0x03F8},\
- {ResShrIoSparse | ResBios | ResBus, 0x03B8, 0x03FC},\
- {ResShrIoSparse | ResBios | ResBus, 0x03C0, 0x03E0}
-
-#define _8514_EXCLUSIVE \
- {ResExcIoSparse | ResBios | ResBus, 0x02E8, 0x03F8}
-
-#define _8514_SHARED \
- {ResShrIoSparse | ResBios | ResBus, 0x02E8, 0x03F8}
-
-/* Predefined resources */
-extern _X_EXPORT resRange resVgaExclusive[];
-extern _X_EXPORT resRange resVgaShared[];
-extern _X_EXPORT resRange resVgaIoShared[];
-extern _X_EXPORT resRange resVgaMemShared[];
-extern _X_EXPORT resRange resVgaUnusedExclusive[];
-extern _X_EXPORT resRange resVgaUnusedShared[];
-extern _X_EXPORT resRange resVgaSparseExclusive[];
-extern _X_EXPORT resRange resVgaSparseShared[];
-extern _X_EXPORT resRange res8514Exclusive[];
-extern _X_EXPORT resRange res8514Shared[];
-
-/* Less misleading aliases for xf86SetOperatingState() */
-#define resVgaMem resVgaMemShared
-#define resVgaIo resVgaIoShared
-#define resVga resVgaShared
-
-/* Old style names */
-#define RES_EXCLUSIVE_VGA resVgaExclusive
-#define RES_SHARED_VGA resVgaShared
-#define RES_EXCLUSIVE_8514 res8514Exclusive
-#define RES_SHARED_8514 res8514Shared
-
-#define _PCI_AVOID_PC_STYLE \
- {ResExcIoSparse | ResBus, 0x0100, 0x0300},\
- {ResExcIoSparse | ResBus, 0x0200, 0x0200},\
- {ResExcMemBlock | ResBus, 0xA0000,0xFFFFF}
-
-#define RES_UNDEFINED NULL
-#endif
diff --git a/hw/xfree86/common/xf86ShowOpts.c b/hw/xfree86/common/xf86ShowOpts.c
index 622e2610c..04a9a8b1c 100644
--- a/hw/xfree86/common/xf86ShowOpts.c
+++ b/hw/xfree86/common/xf86ShowOpts.c
@@ -45,7 +45,6 @@
#include "xf86Parser.h"
#include "xf86tokens.h"
#include "Configint.h"
-#include "vbe.h"
#include "xf86DDC.h"
#if defined(__sparc__) && !defined(__OpenBSD__)
#include "xf86Bus.h"
diff --git a/hw/xfree86/common/xf86VGAarbiter.c b/hw/xfree86/common/xf86VGAarbiter.c
new file mode 100644
index 000000000..c38973933
--- /dev/null
+++ b/hw/xfree86/common/xf86VGAarbiter.c
@@ -0,0 +1,1157 @@
+/*
+ * This code was stolen from RAC and adapted to control the legacy vga
+ * interface.
+ *
+ *
+ * Copyright (c) 2007 Paulo R. Zanoni, Tiago Vignatti
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#include "xorg-config.h"
+
+#include "xf86VGAarbiter.h"
+
+#ifdef HAVE_PCI_DEVICE_VGAARB_INIT
+#include "xf86VGAarbiterPriv.h"
+#include "xf86Bus.h"
+#include "pciaccess.h"
+
+#ifdef DEBUG
+#error "no, really, you dont want to do this"
+#define DPRINT_S(x,y) ErrorF(x ": %i\n",y);
+#define DPRINT(x) ErrorF(x "\n");
+#else
+#define DPRINT_S(x,y)
+#define DPRINT(x)
+#endif
+
+static GCFuncs VGAarbiterGCFuncs = {
+ VGAarbiterValidateGC, VGAarbiterChangeGC, VGAarbiterCopyGC,
+ VGAarbiterDestroyGC, VGAarbiterChangeClip, VGAarbiterDestroyClip,
+ VGAarbiterCopyClip
+};
+
+static GCOps VGAarbiterGCOps = {
+ VGAarbiterFillSpans, VGAarbiterSetSpans, VGAarbiterPutImage,
+ VGAarbiterCopyArea, VGAarbiterCopyPlane, VGAarbiterPolyPoint,
+ VGAarbiterPolylines, VGAarbiterPolySegment, VGAarbiterPolyRectangle,
+ VGAarbiterPolyArc, VGAarbiterFillPolygon, VGAarbiterPolyFillRect,
+ VGAarbiterPolyFillArc, VGAarbiterPolyText8, VGAarbiterPolyText16,
+ VGAarbiterImageText8, VGAarbiterImageText16, VGAarbiterImageGlyphBlt,
+ VGAarbiterPolyGlyphBlt, VGAarbiterPushPixels,
+ {NULL} /* devPrivate */
+};
+
+static miPointerSpriteFuncRec VGAarbiterSpriteFuncs = {
+ VGAarbiterSpriteRealizeCursor, VGAarbiterSpriteUnrealizeCursor,
+ VGAarbiterSpriteSetCursor, VGAarbiterSpriteMoveCursor,
+ VGAarbiterDeviceCursorInitialize, VGAarbiterDeviceCursorCleanup
+};
+
+static int VGAarbiterKeyIndex;
+static DevPrivateKey VGAarbiterScreenKey = &VGAarbiterKeyIndex;
+static int VGAarbiterGCIndex;
+static DevPrivateKey VGAarbiterGCKey = &VGAarbiterGCIndex;
+
+static int vga_no_arb = 0;
+void
+xf86VGAarbiterInit(void)
+{
+ if (pci_device_vgaarb_init() != 0) {
+ vga_no_arb = 1;
+ xf86Msg(X_WARNING, "VGA arbiter: cannot open kernel arbiter, no multi-card support\n");
+ }
+}
+
+void
+xf86VGAarbiterFini(void)
+{
+ if (vga_no_arb)
+ return;
+ pci_device_vgaarb_fini();
+}
+
+void
+xf86VGAarbiterLock(ScrnInfoPtr pScrn)
+{
+ if (vga_no_arb)
+ return;
+ pci_device_vgaarb_set_target(pScrn->vgaDev);
+ pci_device_vgaarb_lock();
+}
+
+void
+xf86VGAarbiterUnlock(ScrnInfoPtr pScrn)
+{
+ if (vga_no_arb)
+ return;
+ pci_device_vgaarb_unlock();
+}
+
+Bool xf86VGAarbiterAllowDRI(ScreenPtr pScreen)
+{
+ int vga_count;
+ int rsrc_decodes;
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+
+ if (vga_no_arb)
+ return TRUE;
+
+ pci_device_vgaarb_get_info(pScrn->vgaDev, &vga_count, &rsrc_decodes);
+ if (vga_count > 1) {
+ if (rsrc_decodes) {
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+void
+xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn)
+{
+ struct pci_device *dev;
+ EntityPtr pEnt;
+
+ if (vga_no_arb)
+ return;
+
+ pEnt = xf86Entities[pScrn->entityList[0]];
+ if (pEnt->bus.type != BUS_PCI)
+ return;
+
+ dev = pEnt->bus.id.pci;
+ pScrn->vgaDev = dev;
+}
+
+void
+xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn)
+{
+ if (vga_no_arb)
+ return;
+ pci_device_vgaarb_decodes(VGA_ARB_RSRC_LEGACY_MEM | VGA_ARB_RSRC_LEGACY_IO);
+}
+
+Bool
+xf86VGAarbiterWrapFunctions(ScreenPtr pScreen)
+{
+ ScrnInfoPtr pScrn;
+ VGAarbiterScreenPtr pScreenPriv;
+ miPointerScreenPtr PointPriv;
+#ifdef RENDER
+ PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
+#endif
+
+ if (vga_no_arb)
+ return FALSE;
+
+ pScrn = xf86Screens[pScreen->myNum];
+ PointPriv = dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey);
+
+ DPRINT_S("VGAarbiterWrapFunctions",pScreen->myNum);
+
+ if (!dixRequestPrivate(VGAarbiterGCKey, sizeof(VGAarbiterGCRec)))
+ return FALSE;
+
+ if (!(pScreenPriv = xalloc(sizeof(VGAarbiterScreenRec))))
+ return FALSE;
+
+ dixSetPrivate(&pScreen->devPrivates, VGAarbiterScreenKey, pScreenPriv);
+
+ WRAP_SCREEN(CloseScreen, VGAarbiterCloseScreen);
+ WRAP_SCREEN(SaveScreen, VGAarbiterSaveScreen);
+ WRAP_SCREEN(WakeupHandler, VGAarbiterWakeupHandler);
+ WRAP_SCREEN(BlockHandler, VGAarbiterBlockHandler);
+ WRAP_SCREEN(CreateGC, VGAarbiterCreateGC);
+ WRAP_SCREEN(GetImage, VGAarbiterGetImage);
+ WRAP_SCREEN(GetSpans, VGAarbiterGetSpans);
+ WRAP_SCREEN(SourceValidate, VGAarbiterSourceValidate);
+ WRAP_SCREEN(CopyWindow, VGAarbiterCopyWindow);
+ WRAP_SCREEN(ClearToBackground, VGAarbiterClearToBackground);
+ WRAP_SCREEN(CreatePixmap, VGAarbiterCreatePixmap);
+ WRAP_SCREEN(StoreColors, VGAarbiterStoreColors);
+ WRAP_SCREEN(DisplayCursor, VGAarbiterDisplayCursor);
+ WRAP_SCREEN(RealizeCursor, VGAarbiterRealizeCursor);
+ WRAP_SCREEN(UnrealizeCursor, VGAarbiterUnrealizeCursor);
+ WRAP_SCREEN(RecolorCursor, VGAarbiterRecolorCursor);
+ WRAP_SCREEN(SetCursorPosition, VGAarbiterSetCursorPosition);
+#ifdef RENDER
+ WRAP_PICT(Composite,VGAarbiterComposite);
+ WRAP_PICT(Glyphs,VGAarbiterGlyphs);
+ WRAP_PICT(CompositeRects,VGAarbiterCompositeRects);
+#endif
+ WRAP_SCREEN_INFO(AdjustFrame, VGAarbiterAdjustFrame);
+ WRAP_SCREEN_INFO(SwitchMode, VGAarbiterSwitchMode);
+ WRAP_SCREEN_INFO(EnterVT, VGAarbiterEnterVT);
+ WRAP_SCREEN_INFO(LeaveVT, VGAarbiterLeaveVT);
+ WRAP_SCREEN_INFO(FreeScreen, VGAarbiterFreeScreen);
+ WRAP_SPRITE;
+ return TRUE;
+}
+
+/* Screen funcs */
+static Bool
+VGAarbiterCloseScreen (int i, ScreenPtr pScreen)
+{
+ Bool val;
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate(
+ &pScreen->devPrivates, VGAarbiterScreenKey);
+ miPointerScreenPtr PointPriv = (miPointerScreenPtr)dixLookupPrivate(
+ &pScreen->devPrivates, miPointerScreenKey);
+#ifdef RENDER
+ PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
+#endif
+
+ DPRINT_S("VGAarbiterCloseScreen",pScreen->myNum);
+ UNWRAP_SCREEN(CreateGC);
+ UNWRAP_SCREEN(CloseScreen);
+ UNWRAP_SCREEN(GetImage);
+ UNWRAP_SCREEN(GetSpans);
+ UNWRAP_SCREEN(SourceValidate);
+ UNWRAP_SCREEN(CopyWindow);
+ UNWRAP_SCREEN(ClearToBackground);
+ UNWRAP_SCREEN(SaveScreen);
+ UNWRAP_SCREEN(StoreColors);
+ UNWRAP_SCREEN(DisplayCursor);
+ UNWRAP_SCREEN(RealizeCursor);
+ UNWRAP_SCREEN(UnrealizeCursor);
+ UNWRAP_SCREEN(RecolorCursor);
+ UNWRAP_SCREEN(SetCursorPosition);
+#ifdef RENDER
+ UNWRAP_PICT(Composite);
+ UNWRAP_PICT(Glyphs);
+ UNWRAP_PICT(CompositeRects);
+#endif
+ UNWRAP_SCREEN_INFO(AdjustFrame);
+ UNWRAP_SCREEN_INFO(SwitchMode);
+ UNWRAP_SCREEN_INFO(EnterVT);
+ UNWRAP_SCREEN_INFO(LeaveVT);
+ UNWRAP_SCREEN_INFO(FreeScreen);
+ UNWRAP_SPRITE;
+
+ xfree ((pointer) pScreenPriv);
+ xf86VGAarbiterLock(xf86Screens[i]);
+ val = (*pScreen->CloseScreen) (i, pScreen);
+ xf86VGAarbiterUnlock(xf86Screens[i]);
+ return val;
+}
+
+static void
+VGAarbiterBlockHandler(int i,
+ pointer blockData, pointer pTimeout, pointer pReadmask)
+{
+ ScreenPtr pScreen = screenInfo.screens[i];
+ SCREEN_PROLOG(BlockHandler);
+ VGAGet();
+ pScreen->BlockHandler(i, blockData, pTimeout, pReadmask);
+ VGAPut();
+ SCREEN_EPILOG(BlockHandler, VGAarbiterBlockHandler);
+}
+
+static void
+VGAarbiterWakeupHandler(int i, pointer blockData, unsigned long result, pointer pReadmask)
+{
+ ScreenPtr pScreen = screenInfo.screens[i];
+ SCREEN_PROLOG(WakeupHandler);
+ VGAGet();
+ pScreen->WakeupHandler(i, blockData, result, pReadmask);
+ VGAPut();
+ SCREEN_EPILOG(WakeupHandler, VGAarbiterWakeupHandler);
+}
+
+static void
+VGAarbiterGetImage (
+ DrawablePtr pDrawable,
+ int sx, int sy, int w, int h,
+ unsigned int format,
+ unsigned long planemask,
+ char *pdstLine
+ )
+{
+ ScreenPtr pScreen = pDrawable->pScreen;
+ DPRINT_S("VGAarbiterGetImage",pScreen->myNum);
+ SCREEN_PROLOG(GetImage);
+// if (xf86Screens[pScreen->myNum]->vtSema) {
+ VGAGet();
+// }
+ (*pScreen->GetImage) (pDrawable, sx, sy, w, h,
+ format, planemask, pdstLine);
+ VGAPut();
+ SCREEN_EPILOG (GetImage, VGAarbiterGetImage);
+}
+
+static void
+VGAarbiterGetSpans (
+ DrawablePtr pDrawable,
+ int wMax,
+ DDXPointPtr ppt,
+ int *pwidth,
+ int nspans,
+ char *pdstStart
+ )
+{
+ ScreenPtr pScreen = pDrawable->pScreen;
+
+ DPRINT_S("VGAarbiterGetSpans",pScreen->myNum);
+ SCREEN_PROLOG (GetSpans);
+ VGAGet();
+ (*pScreen->GetSpans) (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
+ VGAPut();
+ SCREEN_EPILOG (GetSpans, VGAarbiterGetSpans);
+}
+
+static void
+VGAarbiterSourceValidate (
+ DrawablePtr pDrawable,
+ int x, int y, int width, int height )
+{
+ ScreenPtr pScreen = pDrawable->pScreen;
+ DPRINT_S("VGAarbiterSourceValidate",pScreen->myNum);
+ SCREEN_PROLOG (SourceValidate);
+ VGAGet();
+ if (pScreen->SourceValidate)
+ (*pScreen->SourceValidate) (pDrawable, x, y, width, height);
+ VGAPut();
+ SCREEN_EPILOG (SourceValidate, VGAarbiterSourceValidate);
+}
+
+static void
+VGAarbiterCopyWindow(
+ WindowPtr pWin,
+ DDXPointRec ptOldOrg,
+ RegionPtr prgnSrc )
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+
+ DPRINT_S("VGAarbiterCopyWindow",pScreen->myNum);
+ SCREEN_PROLOG (CopyWindow);
+ VGAGet();
+ (*pScreen->CopyWindow) (pWin, ptOldOrg, prgnSrc);
+ VGAPut();
+ SCREEN_EPILOG (CopyWindow, VGAarbiterCopyWindow);
+}
+
+static void
+VGAarbiterClearToBackground (
+ WindowPtr pWin,
+ int x, int y,
+ int w, int h,
+ Bool generateExposures )
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+
+ DPRINT_S("VGAarbiterClearToBackground",pScreen->myNum);
+ SCREEN_PROLOG ( ClearToBackground);
+ VGAGet();
+ (*pScreen->ClearToBackground) (pWin, x, y, w, h, generateExposures);
+ VGAPut();
+ SCREEN_EPILOG (ClearToBackground, VGAarbiterClearToBackground);
+}
+
+static PixmapPtr
+VGAarbiterCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, unsigned usage_hint)
+{
+ PixmapPtr pPix;
+
+ DPRINT_S("VGAarbiterCreatePixmap",pScreen->myNum);
+ SCREEN_PROLOG ( CreatePixmap);
+ VGAGet();
+ pPix = (*pScreen->CreatePixmap) (pScreen, w, h, depth, usage_hint);
+ VGAPut();
+ SCREEN_EPILOG (CreatePixmap, VGAarbiterCreatePixmap);
+
+ return pPix;
+}
+
+static Bool
+VGAarbiterSaveScreen(ScreenPtr pScreen, Bool unblank)
+{
+ Bool val;
+
+ DPRINT_S("VGAarbiterSaveScreen",pScreen->myNum);
+ SCREEN_PROLOG (SaveScreen);
+ VGAGet();
+ val = (*pScreen->SaveScreen) (pScreen, unblank);
+ VGAPut();
+ SCREEN_EPILOG (SaveScreen, VGAarbiterSaveScreen);
+
+ return val;
+}
+
+static void
+VGAarbiterStoreColors (
+ ColormapPtr pmap,
+ int ndef,
+ xColorItem *pdefs)
+{
+ ScreenPtr pScreen = pmap->pScreen;
+
+ DPRINT_S("VGAarbiterStoreColors",pScreen->myNum);
+ SCREEN_PROLOG (StoreColors);
+ VGAGet();
+ (*pScreen->StoreColors) (pmap,ndef,pdefs);
+ VGAPut();
+ SCREEN_EPILOG ( StoreColors, VGAarbiterStoreColors);
+}
+
+static void
+VGAarbiterRecolorCursor (
+ DeviceIntPtr pDev,
+ ScreenPtr pScreen,
+ CursorPtr pCurs,
+ Bool displayed
+ )
+{
+ DPRINT_S("VGAarbiterRecolorCursor",pScreen->myNum);
+ SCREEN_PROLOG (RecolorCursor);
+ VGAGet();
+ (*pScreen->RecolorCursor) (pDev, pScreen, pCurs, displayed);
+ VGAPut();
+ SCREEN_EPILOG ( RecolorCursor, VGAarbiterRecolorCursor);
+}
+
+static Bool
+VGAarbiterRealizeCursor (
+ DeviceIntPtr pDev,
+ ScreenPtr pScreen,
+ CursorPtr pCursor
+ )
+{
+ Bool val;
+
+ DPRINT_S("VGAarbiterRealizeCursor",pScreen->myNum);
+ SCREEN_PROLOG (RealizeCursor);
+ VGAGet();
+ val = (*pScreen->RealizeCursor) (pDev, pScreen,pCursor);
+ VGAPut();
+ SCREEN_EPILOG ( RealizeCursor, VGAarbiterRealizeCursor);
+ return val;
+}
+
+static Bool
+VGAarbiterUnrealizeCursor (
+ DeviceIntPtr pDev,
+ ScreenPtr pScreen,
+ CursorPtr pCursor
+ )
+{
+ Bool val;
+
+ DPRINT_S("VGAarbiterUnrealizeCursor",pScreen->myNum);
+ SCREEN_PROLOG (UnrealizeCursor);
+ VGAGet();
+ val = (*pScreen->UnrealizeCursor) (pDev, pScreen, pCursor);
+ VGAPut();
+ SCREEN_EPILOG ( UnrealizeCursor, VGAarbiterUnrealizeCursor);
+ return val;
+}
+
+static Bool
+VGAarbiterDisplayCursor (
+ DeviceIntPtr pDev,
+ ScreenPtr pScreen,
+ CursorPtr pCursor
+ )
+{
+ Bool val;
+
+ DPRINT_S("VGAarbiterDisplayCursor",pScreen->myNum);
+ SCREEN_PROLOG (DisplayCursor);
+ VGAGet();
+ val = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor);
+ VGAPut();
+ SCREEN_EPILOG ( DisplayCursor, VGAarbiterDisplayCursor);
+ return val;
+}
+
+static Bool
+VGAarbiterSetCursorPosition (
+ DeviceIntPtr pDev,
+ ScreenPtr pScreen,
+ int x, int y,
+ Bool generateEvent)
+{
+ Bool val;
+
+ DPRINT_S("VGAarbiterSetCursorPosition",pScreen->myNum);
+ SCREEN_PROLOG (SetCursorPosition);
+ VGAGet();
+ val = (*pScreen->SetCursorPosition) (pDev, pScreen, x, y, generateEvent);
+ VGAPut();
+ SCREEN_EPILOG ( SetCursorPosition, VGAarbiterSetCursorPosition);
+ return val;
+}
+
+static void
+VGAarbiterAdjustFrame(int index, int x, int y, int flags)
+{
+ ScreenPtr pScreen = screenInfo.screens[index];
+ VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate(
+ &pScreen->devPrivates, VGAarbiterScreenKey);
+
+ DPRINT_S("VGAarbiterAdjustFrame",index);
+ VGAGet();
+ (*pScreenPriv->AdjustFrame)(index, x, y, flags);
+ VGAPut();
+}
+
+static Bool
+VGAarbiterSwitchMode(int index, DisplayModePtr mode, int flags)
+{
+ Bool val;
+ ScreenPtr pScreen = screenInfo.screens[index];
+ VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate(
+ &pScreen->devPrivates, VGAarbiterScreenKey);
+
+ DPRINT_S("VGAarbiterSwitchMode",index);
+ VGAGet();
+ val = (*pScreenPriv->SwitchMode)(index, mode, flags);
+ VGAPut();
+ return val;
+}
+
+static Bool
+VGAarbiterEnterVT(int index, int flags)
+{
+ Bool val;
+ ScreenPtr pScreen = screenInfo.screens[index];
+ VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate(
+ &pScreen->devPrivates, VGAarbiterScreenKey);
+
+ DPRINT_S("VGAarbiterEnterVT",index);
+ VGAGet();
+ val = (*pScreenPriv->EnterVT)(index, flags);
+ VGAPut();
+ return val;
+}
+
+static void
+VGAarbiterLeaveVT(int index, int flags)
+{
+ ScreenPtr pScreen = screenInfo.screens[index];
+ VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate(
+ &pScreen->devPrivates, VGAarbiterScreenKey);
+
+ DPRINT_S("VGAarbiterLeaveVT",index);
+
+ VGAGet();
+ (*pScreenPriv->LeaveVT)(index, flags);
+ VGAPut();
+}
+
+static void
+VGAarbiterFreeScreen(int index, int flags)
+{
+ ScreenPtr pScreen = screenInfo.screens[index];
+ VGAarbiterScreenPtr pScreenPriv = (VGAarbiterScreenPtr)dixLookupPrivate(
+ &pScreen->devPrivates, VGAarbiterScreenKey);
+
+ DPRINT_S("VGAarbiterFreeScreen",index);
+
+ VGAGet();
+ (*pScreenPriv->FreeScreen)(index, flags);
+ VGAPut();
+}
+
+static Bool
+VGAarbiterCreateGC(GCPtr pGC)
+{
+ ScreenPtr pScreen = pGC->pScreen;
+ VGAarbiterGCPtr pGCPriv = (VGAarbiterGCPtr)dixLookupPrivate(&pGC->devPrivates, VGAarbiterGCKey);
+ Bool ret;
+
+ DPRINT_S("VGAarbiterCreateGC",pScreen->myNum);
+ SCREEN_PROLOG(CreateGC);
+ VGAGet();
+ ret = (*pScreen->CreateGC)(pGC);
+ VGAPut();
+ GC_WRAP(pGC);
+ SCREEN_EPILOG(CreateGC,VGAarbiterCreateGC);
+
+ return ret;
+}
+
+/* GC funcs */
+static void
+VGAarbiterValidateGC(
+ GCPtr pGC,
+ unsigned long changes,
+ DrawablePtr pDraw )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterValidateGC");
+ (*pGC->funcs->ValidateGC)(pGC, changes, pDraw);
+ GC_WRAP(pGC);
+}
+
+
+static void
+VGAarbiterDestroyGC(GCPtr pGC)
+{
+ GC_UNWRAP (pGC);
+ DPRINT("VGAarbiterDestroyGC");
+ (*pGC->funcs->DestroyGC)(pGC);
+ GC_WRAP (pGC);
+}
+
+static void
+VGAarbiterChangeGC (
+ GCPtr pGC,
+ unsigned long mask)
+{
+ GC_UNWRAP (pGC);
+ DPRINT("VGAarbiterChangeGC");
+ (*pGC->funcs->ChangeGC) (pGC, mask);
+ GC_WRAP (pGC);
+}
+
+static void
+VGAarbiterCopyGC (
+ GCPtr pGCSrc,
+ unsigned long mask,
+ GCPtr pGCDst)
+{
+ GC_UNWRAP (pGCDst);
+ DPRINT("VGAarbiterCopyGC");
+ (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst);
+ GC_WRAP (pGCDst);
+}
+
+static void
+VGAarbiterChangeClip (
+ GCPtr pGC,
+ int type,
+ pointer pvalue,
+ int nrects )
+{
+ GC_UNWRAP (pGC);
+ DPRINT("VGAarbiterChangeClip");
+ (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects);
+ GC_WRAP (pGC);
+}
+
+static void
+VGAarbiterCopyClip(GCPtr pgcDst, GCPtr pgcSrc)
+{
+ GC_UNWRAP (pgcDst);
+ DPRINT("VGAarbiterCopyClip");
+ (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc);
+ GC_WRAP (pgcDst);
+}
+
+static void
+VGAarbiterDestroyClip(GCPtr pGC)
+{
+ GC_UNWRAP (pGC);
+ DPRINT("VGAarbiterDestroyClip");
+ (* pGC->funcs->DestroyClip)(pGC);
+ GC_WRAP (pGC);
+}
+
+/* GC Ops */
+static void
+VGAarbiterFillSpans(
+ DrawablePtr pDraw,
+ GC *pGC,
+ int nInit,
+ DDXPointPtr pptInit,
+ int *pwidthInit,
+ int fSorted )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterFillSpans");
+ VGAGet_GC();
+ (*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterSetSpans(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ char *pcharsrc,
+ register DDXPointPtr ppt,
+ int *pwidth,
+ int nspans,
+ int fSorted )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterSetSpans");
+ VGAGet_GC();
+ (*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, ppt, pwidth, nspans, fSorted);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterPutImage(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int depth,
+ int x, int y, int w, int h,
+ int leftPad,
+ int format,
+ char *pImage )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPutImage");
+ VGAGet_GC();
+ (*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h,
+ leftPad, format, pImage);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static RegionPtr
+VGAarbiterCopyArea(
+ DrawablePtr pSrc,
+ DrawablePtr pDst,
+ GC *pGC,
+ int srcx, int srcy,
+ int width, int height,
+ int dstx, int dsty )
+{
+ RegionPtr ret;
+
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterCopyArea");
+ VGAGet_GC();
+ ret = (*pGC->ops->CopyArea)(pSrc, pDst,
+ pGC, srcx, srcy, width, height, dstx, dsty);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+ return ret;
+}
+
+static RegionPtr
+VGAarbiterCopyPlane(
+ DrawablePtr pSrc,
+ DrawablePtr pDst,
+ GCPtr pGC,
+ int srcx, int srcy,
+ int width, int height,
+ int dstx, int dsty,
+ unsigned long bitPlane )
+{
+ RegionPtr ret;
+
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterCopyPlane");
+ VGAGet_GC();
+ ret = (*pGC->ops->CopyPlane)(pSrc, pDst, pGC, srcx, srcy,
+ width, height, dstx, dsty, bitPlane);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+ return ret;
+}
+
+static void
+VGAarbiterPolyPoint(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int mode,
+ int npt,
+ xPoint *pptInit )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolyPoint");
+ VGAGet_GC();
+ (*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+
+static void
+VGAarbiterPolylines(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int mode,
+ int npt,
+ DDXPointPtr pptInit )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolylines");
+ VGAGet_GC();
+ (*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterPolySegment(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int nseg,
+ xSegment *pSeg )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolySegment");
+ VGAGet_GC();
+ (*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterPolyRectangle(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int nRectsInit,
+ xRectangle *pRectsInit )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolyRectangle");
+ VGAGet_GC();
+ (*pGC->ops->PolyRectangle)(pDraw, pGC, nRectsInit, pRectsInit);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterPolyArc(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int narcs,
+ xArc *parcs )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolyArc");
+ VGAGet_GC();
+ (*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterFillPolygon(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int shape,
+ int mode,
+ int count,
+ DDXPointPtr ptsIn )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterFillPolygon");
+ VGAGet_GC();
+ (*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, ptsIn);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterPolyFillRect(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int nrectFill,
+ xRectangle *prectInit)
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolyFillRect");
+ VGAGet_GC();
+ (*pGC->ops->PolyFillRect)(pDraw, pGC, nrectFill, prectInit);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterPolyFillArc(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int narcs,
+ xArc *parcs )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolyFillArc");
+ VGAGet_GC();
+ (*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static int
+VGAarbiterPolyText8(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int x,
+ int y,
+ int count,
+ char *chars )
+{
+ int ret;
+
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolyText8");
+ VGAGet_GC();
+ ret = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+ return ret;
+}
+
+static int
+VGAarbiterPolyText16(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int x,
+ int y,
+ int count,
+ unsigned short *chars )
+{
+ int ret;
+
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolyText16");
+ VGAGet_GC();
+ ret = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+ return ret;
+}
+
+static void
+VGAarbiterImageText8(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int x,
+ int y,
+ int count,
+ char *chars )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterImageText8");
+ VGAGet_GC();
+ (*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterImageText16(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int x,
+ int y,
+ int count,
+ unsigned short *chars )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterImageText16");
+ VGAGet_GC();
+ (*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+
+static void
+VGAarbiterImageGlyphBlt(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int xInit, int yInit,
+ unsigned int nglyph,
+ CharInfoPtr *ppci,
+ pointer pglyphBase )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterImageGlyphBlt");
+ VGAGet_GC();
+ (*pGC->ops->ImageGlyphBlt)(pDraw, pGC, xInit, yInit,
+ nglyph, ppci, pglyphBase);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterPolyGlyphBlt(
+ DrawablePtr pDraw,
+ GCPtr pGC,
+ int xInit, int yInit,
+ unsigned int nglyph,
+ CharInfoPtr *ppci,
+ pointer pglyphBase )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPolyGlyphBlt");
+ VGAGet_GC();
+ (*pGC->ops->PolyGlyphBlt)(pDraw, pGC, xInit, yInit,
+ nglyph, ppci, pglyphBase);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+static void
+VGAarbiterPushPixels(
+ GCPtr pGC,
+ PixmapPtr pBitMap,
+ DrawablePtr pDraw,
+ int dx, int dy, int xOrg, int yOrg )
+{
+ GC_UNWRAP(pGC);
+ DPRINT("VGAarbiterPushPixels");
+ VGAGet_GC();
+ (*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg);
+ VGAPut_GC();
+ GC_WRAP(pGC);
+}
+
+
+/* miSpriteFuncs */
+static Bool
+VGAarbiterSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur)
+{
+ Bool val;
+ SPRITE_PROLOG;
+ DPRINT_S("VGAarbiterSpriteRealizeCursor",pScreen->myNum);
+ VGAGet();
+ val = PointPriv->spriteFuncs->RealizeCursor(pDev, pScreen, pCur);
+ VGAPut();
+ SPRITE_EPILOG;
+ return val;
+}
+
+static Bool
+VGAarbiterSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur)
+{
+ Bool val;
+ SPRITE_PROLOG;
+ DPRINT_S("VGAarbiterSpriteUnrealizeCursor",pScreen->myNum);
+ VGAGet();
+ val = PointPriv->spriteFuncs->UnrealizeCursor(pDev, pScreen, pCur);
+ VGAPut();
+ SPRITE_EPILOG;
+ return val;
+}
+
+static void
+VGAarbiterSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur, int x, int y)
+{
+ SPRITE_PROLOG;
+ DPRINT_S("VGAarbiterSpriteSetCursor",pScreen->myNum);
+ VGAGet();
+ PointPriv->spriteFuncs->SetCursor(pDev, pScreen, pCur, x, y);
+ VGAPut();
+ SPRITE_EPILOG;
+}
+
+static void
+VGAarbiterSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
+{
+ SPRITE_PROLOG;
+ DPRINT_S("VGAarbiterSpriteMoveCursor",pScreen->myNum);
+ VGAGet();
+ PointPriv->spriteFuncs->MoveCursor(pDev, pScreen, x, y);
+ VGAPut();
+ SPRITE_EPILOG;
+}
+
+static Bool
+VGAarbiterDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScreen)
+{
+ Bool val;
+ SPRITE_PROLOG;
+ DPRINT_S("VGAarbiterDeviceCursorInitialize",pScreen->myNum);
+ VGAGet();
+ val = PointPriv->spriteFuncs->DeviceCursorInitialize(pDev, pScreen);
+ VGAPut();
+ SPRITE_EPILOG;
+ return val;
+}
+
+static void
+VGAarbiterDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen)
+{
+ SPRITE_PROLOG;
+ DPRINT_S("VGAarbiterDeviceCursorCleanup",pScreen->myNum);
+ VGAGet();
+ PointPriv->spriteFuncs->DeviceCursorCleanup(pDev, pScreen);
+ VGAPut();
+ SPRITE_EPILOG;
+}
+
+#ifdef RENDER
+static void
+VGAarbiterComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
+ PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask,
+ INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width,
+ CARD16 height)
+{
+ ScreenPtr pScreen = pDst->pDrawable->pScreen;
+ PictureScreenPtr ps = GetPictureScreen(pScreen);
+
+ PICTURE_PROLOGUE(Composite);
+
+ VGAGet();
+ (*ps->Composite) (op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, xDst,
+ yDst, width, height);
+ VGAPut();
+ PICTURE_EPILOGUE(Composite, VGAarbiterComposite);
+}
+
+static void
+VGAarbiterGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
+ PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlist,
+ GlyphListPtr list, GlyphPtr *glyphs)
+{
+ ScreenPtr pScreen = pDst->pDrawable->pScreen;
+ PictureScreenPtr ps = GetPictureScreen(pScreen);
+
+ PICTURE_PROLOGUE(Glyphs);
+
+ VGAGet();
+ (*ps->Glyphs)(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
+ VGAPut();
+ PICTURE_EPILOGUE (Glyphs, VGAarbiterGlyphs);
+}
+
+static void
+VGAarbiterCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color, int nRect,
+ xRectangle *rects)
+{
+ ScreenPtr pScreen = pDst->pDrawable->pScreen;
+ PictureScreenPtr ps = GetPictureScreen(pScreen);
+
+ PICTURE_PROLOGUE(CompositeRects);
+
+ VGAGet();
+ (*ps->CompositeRects)(op, pDst, color, nRect, rects);
+ VGAPut();
+ PICTURE_EPILOGUE (CompositeRects, VGAarbiterCompositeRects);
+}
+#endif
+#else
+/* dummy functions */
+void xf86VGAarbiterInit(void) {}
+void xf86VGAarbiterFini(void) {}
+
+void xf86VGAarbiterLock(ScrnInfoPtr pScrn) {}
+void xf86VGAarbiterUnlock(ScrnInfoPtr pScrn) {}
+Bool xf86VGAarbiterAllowDRI(ScreenPtr pScreen) { return TRUE; }
+void xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn) {}
+void xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn) {}
+Bool xf86VGAarbiterWrapFunctions(ScreenPtr pScreen) { return FALSE; }
+
+#endif
diff --git a/hw/xfree86/common/xf86VGAarbiter.h b/hw/xfree86/common/xf86VGAarbiter.h
new file mode 100644
index 000000000..145d31c78
--- /dev/null
+++ b/hw/xfree86/common/xf86VGAarbiter.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2009 Tiago Vignatti
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef __XF86VGAARBITER_H
+#define __XF86VGAARBITER_H
+
+#include "screenint.h"
+#include "misc.h"
+#include "xf86.h"
+
+/* Functions */
+extern void xf86VGAarbiterInit(void);
+extern void xf86VGAarbiterFini(void);
+void xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn);
+extern Bool xf86VGAarbiterWrapFunctions(ScreenPtr pScreen);
+extern void xf86VGAarbiterLock(ScrnInfoPtr pScrn);
+extern void xf86VGAarbiterUnlock(ScrnInfoPtr pScrn);
+
+/* allow a driver to remove itself from arbiter - really should be
+ * done in the kernel though */
+extern _X_EXPORT void xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn);
+/* DRI and arbiter are really not possible together,
+ * you really want to remove the card from arbitration if you can */
+extern _X_EXPORT Bool xf86VGAarbiterAllowDRI(ScreenPtr pScreen);
+
+#endif /* __XF86VGAARBITER_H */
diff --git a/hw/xfree86/common/xf86VGAarbiterPriv.h b/hw/xfree86/common/xf86VGAarbiterPriv.h
new file mode 100644
index 000000000..40d436856
--- /dev/null
+++ b/hw/xfree86/common/xf86VGAarbiterPriv.h
@@ -0,0 +1,266 @@
+/*
+ * Copyright (c) 2009 Tiago Vignatti
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "misc.h"
+#include "xf86.h"
+#include "xf86_OSproc.h"
+#include <X11/X.h>
+#include "colormapst.h"
+#include "scrnintstr.h"
+#include "screenint.h"
+#include "gcstruct.h"
+#include "pixmapstr.h"
+#include "pixmap.h"
+#include "windowstr.h"
+#include "window.h"
+#include "xf86str.h"
+#include "mipointer.h"
+#include "mipointrst.h"
+#ifdef RENDER
+# include "picturestr.h"
+#endif
+
+
+#define WRAP_SCREEN(x,y) {pScreenPriv->x = pScreen->x; pScreen->x = y;}
+
+#define UNWRAP_SCREEN(x) pScreen->x = pScreenPriv->x
+
+#define SCREEN_PROLOG(x) pScreen->x = ((VGAarbiterScreenPtr) \
+ dixLookupPrivate(&(pScreen)->devPrivates, VGAarbiterScreenKey))->x
+
+#define SCREEN_EPILOG(x,y) pScreen->x = y;
+
+#define WRAP_PICT(x,y) if (ps) {pScreenPriv->x = ps->x;\
+ ps->x = y;}
+
+#define UNWRAP_PICT(x) if (ps) {ps->x = pScreenPriv->x;}
+
+#define PICTURE_PROLOGUE(field) ps->field = \
+ ((VGAarbiterScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, \
+ VGAarbiterScreenKey))->field
+
+#define PICTURE_EPILOGUE(field, wrap) ps->field = wrap
+
+#define WRAP_SCREEN_INFO(x,y) do {pScreenPriv->x = pScrn->x; pScrn->x = y;} while(0)
+
+#define UNWRAP_SCREEN_INFO(x) pScrn->x = pScreenPriv->x
+
+#define SPRITE_PROLOG miPointerScreenPtr PointPriv = \
+ (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates, \
+ miPointerScreenKey); VGAarbiterScreenPtr pScreenPriv = \
+ ((VGAarbiterScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, \
+ VGAarbiterScreenKey)); PointPriv->spriteFuncs = pScreenPriv->miSprite;
+
+#define SPRITE_EPILOG pScreenPriv->miSprite = PointPriv->spriteFuncs;\
+ PointPriv->spriteFuncs = &VGAarbiterSpriteFuncs;
+
+#define WRAP_SPRITE do { pScreenPriv->miSprite = PointPriv->spriteFuncs;\
+ PointPriv->spriteFuncs = &VGAarbiterSpriteFuncs; \
+ } while (0)
+
+#define UNWRAP_SPRITE PointPriv->spriteFuncs = pScreenPriv->miSprite
+
+#define GC_WRAP(x) pGCPriv->wrapOps = (x)->ops;\
+ pGCPriv->wrapFuncs = (x)->funcs; (x)->ops = &VGAarbiterGCOps;\
+ (x)->funcs = &VGAarbiterGCFuncs;
+
+#define GC_UNWRAP(x) VGAarbiterGCPtr pGCPriv = \
+ (VGAarbiterGCPtr)dixLookupPrivate(&(x)->devPrivates, VGAarbiterGCKey);\
+ (x)->ops = pGCPriv->wrapOps; (x)->funcs = pGCPriv->wrapFuncs;
+
+#define GC_SCREEN register ScrnInfoPtr pScrn = \
+ xf86Screens[pGC->pScreen->myNum]
+
+#define VGAGet(x)\
+ pci_device_vgaarb_set_target(xf86Screens[pScreen->myNum]->vgaDev); \
+ pci_device_vgaarb_lock();
+
+#define VGAGet_GC(x)\
+ pci_device_vgaarb_set_target(xf86Screens[pGC->pScreen->myNum]->vgaDev); \
+ pci_device_vgaarb_lock();
+
+#define VGAPut(x)\
+ pci_device_vgaarb_unlock();
+
+#define VGAPut_GC(x)\
+ pci_device_vgaarb_unlock();
+
+
+typedef struct _VGAarbiterScreen {
+ CreateGCProcPtr CreateGC;
+ CloseScreenProcPtr CloseScreen;
+ ScreenBlockHandlerProcPtr BlockHandler;
+ ScreenWakeupHandlerProcPtr WakeupHandler;
+ GetImageProcPtr GetImage;
+ GetSpansProcPtr GetSpans;
+ SourceValidateProcPtr SourceValidate;
+ CopyWindowProcPtr CopyWindow;
+ ClearToBackgroundProcPtr ClearToBackground;
+ CreatePixmapProcPtr CreatePixmap;
+ SaveScreenProcPtr SaveScreen;
+ /* Colormap */
+ StoreColorsProcPtr StoreColors;
+ /* Cursor */
+ DisplayCursorProcPtr DisplayCursor;
+ RealizeCursorProcPtr RealizeCursor;
+ UnrealizeCursorProcPtr UnrealizeCursor;
+ RecolorCursorProcPtr RecolorCursor;
+ SetCursorPositionProcPtr SetCursorPosition;
+ void (*AdjustFrame)(int,int,int,int);
+ Bool (*SwitchMode)(int, DisplayModePtr,int);
+ Bool (*EnterVT)(int, int);
+ void (*LeaveVT)(int, int);
+ void (*FreeScreen)(int, int);
+ miPointerSpriteFuncPtr miSprite;
+#ifdef RENDER
+ CompositeProcPtr Composite;
+ GlyphsProcPtr Glyphs;
+ CompositeRectsProcPtr CompositeRects;
+#endif
+} VGAarbiterScreenRec, *VGAarbiterScreenPtr;
+
+typedef struct _VGAarbiterGC {
+ GCOps *wrapOps;
+ GCFuncs *wrapFuncs;
+} VGAarbiterGCRec, *VGAarbiterGCPtr;
+
+/* Screen funcs */
+static void VGAarbiterBlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask);
+static void VGAarbiterWakeupHandler(int i, pointer blockData, unsigned long result, pointer pReadmask);
+static Bool VGAarbiterCloseScreen (int i, ScreenPtr pScreen);
+static void VGAarbiterGetImage (DrawablePtr pDrawable, int sx, int sy, int w,
+ int h, unsigned int format, unsigned long planemask, char *pdstLine);
+static void VGAarbiterGetSpans (DrawablePtr pDrawable, int wMax, DDXPointPtr
+ ppt, int *pwidth, int nspans, char *pdstStart);
+static void VGAarbiterSourceValidate (DrawablePtr pDrawable, int x, int y,
+ int width, int height);
+static void VGAarbiterCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
+ RegionPtr prgnSrc);
+static void VGAarbiterClearToBackground (WindowPtr pWin, int x, int y, int w,
+ int h, Bool generateExposures);
+static PixmapPtr VGAarbiterCreatePixmap(ScreenPtr pScreen, int w, int h,
+ int depth, unsigned int usage_hint);
+static Bool VGAarbiterCreateGC(GCPtr pGC);
+static Bool VGAarbiterSaveScreen(ScreenPtr pScreen, Bool unblank);
+static void VGAarbiterStoreColors (ColormapPtr pmap, int ndef, xColorItem
+ *pdefs);
+static void VGAarbiterRecolorCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
+ CursorPtr pCurs, Bool displayed);
+static Bool VGAarbiterRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
+ CursorPtr pCursor);
+static Bool VGAarbiterUnrealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
+ CursorPtr pCursor);
+static Bool VGAarbiterDisplayCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
+ CursorPtr pCursor);
+static Bool VGAarbiterSetCursorPosition (DeviceIntPtr pDev, ScreenPtr
+ pScreen, int x, int y, Bool generateEvent);
+static void VGAarbiterAdjustFrame(int index, int x, int y, int flags);
+static Bool VGAarbiterSwitchMode(int index, DisplayModePtr mode, int flags);
+static Bool VGAarbiterEnterVT(int index, int flags);
+static void VGAarbiterLeaveVT(int index, int flags);
+static void VGAarbiterFreeScreen(int index, int flags);
+
+/* GC funcs */
+static void VGAarbiterValidateGC(GCPtr pGC, unsigned long changes,
+ DrawablePtr pDraw);
+static void VGAarbiterChangeGC(GCPtr pGC, unsigned long mask);
+static void VGAarbiterCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
+static void VGAarbiterDestroyGC(GCPtr pGC);
+static void VGAarbiterChangeClip(GCPtr pGC, int type, pointer pvalue,
+ int nrects);
+static void VGAarbiterDestroyClip(GCPtr pGC);
+static void VGAarbiterCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
+
+/* GC ops */
+static void VGAarbiterFillSpans( DrawablePtr pDraw, GC *pGC, int nInit,
+ DDXPointPtr pptInit, int *pwidthInit, int fSorted);
+static void VGAarbiterSetSpans(DrawablePtr pDraw, GCPtr pGC, char *pcharsrc,
+ register DDXPointPtr ppt, int *pwidth, int nspans, int fSorted);
+static void VGAarbiterPutImage(DrawablePtr pDraw, GCPtr pGC, int depth,
+ int x, int y, int w, int h, int leftPad, int format, char *pImage);
+static RegionPtr VGAarbiterCopyArea(DrawablePtr pSrc, DrawablePtr pDst,
+ GC *pGC, int srcx, int srcy, int width, int height, int dstx, int dsty);
+static RegionPtr VGAarbiterCopyPlane(DrawablePtr pSrc, DrawablePtr pDst,
+ GCPtr pGC, int srcx, int srcy, int width, int height, int dstx, int dsty,
+ unsigned long bitPlane);
+static void VGAarbiterPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode,
+ int npt, xPoint *pptInit);
+static void VGAarbiterPolylines(DrawablePtr pDraw, GCPtr pGC, int mode,
+ int npt, DDXPointPtr pptInit);
+static void VGAarbiterPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg,
+ xSegment *pSeg);
+static void VGAarbiterPolyRectangle(DrawablePtr pDraw, GCPtr pGC,
+ int nRectsInit, xRectangle *pRectsInit);
+static void VGAarbiterPolyArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
+ xArc *parcs);
+static void VGAarbiterFillPolygon(DrawablePtr pDraw, GCPtr pGC, int shape,
+ int mode, int count, DDXPointPtr ptsIn);
+static void VGAarbiterPolyFillRect( DrawablePtr pDraw, GCPtr pGC,
+ int nrectFill, xRectangle *prectInit);
+static void VGAarbiterPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
+ xArc *parcs);
+static int VGAarbiterPolyText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
+ int count, char *chars);
+static int VGAarbiterPolyText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
+ int count, unsigned short *chars);
+static void VGAarbiterImageText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
+ int count, char *chars);
+static void VGAarbiterImageText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
+ int count, unsigned short *chars);
+static void VGAarbiterImageGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
+ int yInit, unsigned int nglyph, CharInfoPtr *ppci, pointer pglyphBase);
+static void VGAarbiterPolyGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
+ int yInit, unsigned int nglyph, CharInfoPtr *ppci, pointer pglyphBase);
+static void VGAarbiterPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr
+ pDraw, int dx, int dy, int xOrg, int yOrg);
+
+/* miSpriteFuncs */
+static Bool VGAarbiterSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr
+ pScreen, CursorPtr pCur);
+static Bool VGAarbiterSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr
+ pScreen, CursorPtr pCur);
+static void VGAarbiterSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
+ CursorPtr pCur, int x, int y);
+static void VGAarbiterSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
+ int x, int y);
+static Bool VGAarbiterDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScreen);
+static void VGAarbiterDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScreen);
+
+
+#ifdef RENDER
+static void VGAarbiterComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
+ PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask,
+ INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
+static void VGAarbiterGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
+ PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlist, GlyphListPtr
+ list, GlyphPtr *glyphs);
+static void VGAarbiterCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor
+ *color, int nRect, xRectangle *rects);
+#endif
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index cb1e92090..3543811db 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -66,13 +66,13 @@
#include "extinit.h"
#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
#include "dpmsproc.h"
#endif
#include "exevents.h" /* AddInputDevice */
#include "exglobals.h"
+#include "eventstr.h"
#include "extnsionst.h"
@@ -713,11 +713,7 @@ xf86PostMotionEvent(DeviceIntPtr device,
int i = 0;
static int valuators[MAX_VALUATORS];
- if (num_valuators > MAX_VALUATORS) {
- xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
- " MAX_VALUATORS\n", __FUNCTION__, num_valuators);
- return;
- }
+ XI_VERIFY_VALUATORS(num_valuators);
va_start(var, num_valuators);
for (i = 0; i < num_valuators; i++)
@@ -741,11 +737,7 @@ xf86PostMotionEventP(DeviceIntPtr device,
int index;
int flags = 0;
- if (num_valuators > MAX_VALUATORS) {
- xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
- " MAX_VALUATORS\n", __FUNCTION__, num_valuators);
- return;
- }
+ XI_VERIFY_VALUATORS(num_valuators);
if (is_absolute)
flags = POINTER_ABSOLUTE;
@@ -801,21 +793,32 @@ xf86PostProximityEvent(DeviceIntPtr device,
...)
{
va_list var;
- int i, nevents;
+ int i;
int valuators[MAX_VALUATORS];
-
- if (num_valuators > MAX_VALUATORS) {
- xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
- " MAX_VALUATORS\n", __FUNCTION__, num_valuators);
- return;
- }
+ XI_VERIFY_VALUATORS(num_valuators);
va_start(var, num_valuators);
for (i = 0; i < num_valuators; i++)
valuators[i] = va_arg(var, int);
va_end(var);
+ xf86PostProximityEventP(device, is_in, first_valuator, num_valuators,
+ valuators);
+
+}
+
+void
+xf86PostProximityEventP(DeviceIntPtr device,
+ int is_in,
+ int first_valuator,
+ int num_valuators,
+ int *valuators)
+{
+ int i, nevents;
+
+ XI_VERIFY_VALUATORS(num_valuators);
+
GetEventList(&xf86Events);
nevents = GetProximityEvents(xf86Events, device,
is_in ? ProximityIn : ProximityOut,
@@ -836,8 +839,39 @@ xf86PostButtonEvent(DeviceIntPtr device,
{
va_list var;
int valuators[MAX_VALUATORS];
+ int i = 0;
+
+ XI_VERIFY_VALUATORS(num_valuators);
+
+ va_start(var, num_valuators);
+ for (i = 0; i < num_valuators; i++)
+ valuators[i] = va_arg(var, int);
+ va_end(var);
+
+ xf86PostButtonEventP(device, is_absolute, button, is_down, first_valuator,
+ num_valuators, valuators);
+
+}
+
+void
+xf86PostButtonEventP(DeviceIntPtr device,
+ int is_absolute,
+ int button,
+ int is_down,
+ int first_valuator,
+ int num_valuators,
+ int *valuators)
+{
int i = 0, nevents = 0;
int index;
+ int flags = 0;
+
+ XI_VERIFY_VALUATORS(num_valuators);
+
+ if (is_absolute)
+ flags = POINTER_ABSOLUTE;
+ else
+ flags = POINTER_RELATIVE | POINTER_ACCELERATE;
#if XFreeXDGA
if (miPointerGetScreen(device)) {
@@ -846,22 +880,11 @@ xf86PostButtonEvent(DeviceIntPtr device,
return;
}
#endif
- if (num_valuators > MAX_VALUATORS) {
- xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
- " MAX_VALUATORS\n", __FUNCTION__, num_valuators);
- return;
- }
-
- va_start(var, num_valuators);
- for (i = 0; i < num_valuators; i++)
- valuators[i] = va_arg(var, int);
- va_end(var);
GetEventList(&xf86Events);
nevents = GetPointerEvents(xf86Events, device,
is_down ? ButtonPress : ButtonRelease, button,
- (is_absolute) ? POINTER_ABSOLUTE : POINTER_RELATIVE,
- first_valuator, num_valuators, valuators);
+ flags, first_valuator, num_valuators, valuators);
for (i = 0; i < nevents; i++)
mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
@@ -878,7 +901,7 @@ xf86PostKeyEvent(DeviceIntPtr device,
...)
{
va_list var;
- int i = 0, nevents = 0;
+ int i = 0;
static int valuators[MAX_VALUATORS];
/* instil confidence in the user */
@@ -886,18 +909,37 @@ xf86PostKeyEvent(DeviceIntPtr device,
"badly south after this message, then xf86PostKeyEvent is "
"broken.\n");
- if (num_valuators > MAX_VALUATORS) {
- xf86Msg(X_ERROR, "%s: num_valuator %d is greater than"
- " MAX_VALUATORS\n", __FUNCTION__, num_valuators);
- return;
- }
+ XI_VERIFY_VALUATORS(num_valuators);
- if (is_absolute) {
- va_start(var, num_valuators);
- for (i = 0; i < num_valuators; i++)
- valuators[i] = va_arg(var, int);
- va_end(var);
+ va_start(var, num_valuators);
+ for (i = 0; i < num_valuators; i++)
+ valuators[i] = va_arg(var, int);
+ va_end(var);
+
+ xf86PostKeyEventP(device, key_code, is_down, is_absolute, first_valuator,
+ num_valuators, valuators);
+
+}
+
+void
+xf86PostKeyEventP(DeviceIntPtr device,
+ unsigned int key_code,
+ int is_down,
+ int is_absolute,
+ int first_valuator,
+ int num_valuators,
+ int *valuators)
+{
+ int i = 0, nevents = 0;
+
+ /* 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");
+ XI_VERIFY_VALUATORS(num_valuators);
+
+ if (is_absolute) {
GetEventList(&xf86Events);
nevents = GetKeyboardValuatorEvents(xf86Events, device,
is_down ? KeyPress : KeyRelease,
@@ -919,28 +961,7 @@ xf86PostKeyboardEvent(DeviceIntPtr device,
unsigned int key_code,
int is_down)
{
- int nevents = 0, i = 0;
- int index;
-
-#if XFreeXDGA
- DeviceIntPtr pointer;
-
- /* Some pointers send key events, paired device is wrong then. */
- pointer = IsPointerDevice(device) ? device : GetPairedDevice(device);
-
- if (miPointerGetScreen(pointer)) {
- index = miPointerGetScreen(pointer)->myNum;
- if (DGAStealKeyEvent(device, index, key_code, is_down))
- return;
- }
-#endif
-
- GetEventList(&xf86Events);
- nevents = GetKeyboardEvents(xf86Events, device,
- is_down ? KeyPress : KeyRelease, key_code);
-
- for (i = 0; i < nevents; i++)
- mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
+ xf86PostKeyEventP(device, key_code, is_down, 0, 0, 0, NULL);
}
LocalDevicePtr
diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h
index 0ad56649b..aa9e9d507 100644
--- a/hw/xfree86/common/xf86Xinput.h
+++ b/hw/xfree86/common/xf86Xinput.h
@@ -80,6 +80,14 @@
#define XI_PRIVATE(dev) \
(((LocalDevicePtr)((dev)->public.devicePrivate))->private)
+/* Valuator verification macro */
+#define XI_VERIFY_VALUATORS(num_valuators) \
+ if (num_valuators > MAX_VALUATORS) { \
+ xf86Msg(X_ERROR, "%s: num_valuator %d is greater than" \
+ " MAX_VALUATORS\n", __FUNCTION__, num_valuators); \
+ return; \
+ }
+
/* Stupid API backwards-compatibility. */
#define TS_Raw 60
#define TS_Scaled 61
@@ -158,12 +166,20 @@ extern _X_EXPORT void xf86PostMotionEventP(DeviceIntPtr device, int is_absolute,
int first_valuator, int num_valuators, int *valuators);
extern _X_EXPORT void xf86PostProximityEvent(DeviceIntPtr device, int is_in,
int first_valuator, int num_valuators, ...);
+extern _X_EXPORT void xf86PostProximityEventP(DeviceIntPtr device, int is_in, int first_valuator,
+ int num_valuators, int *valuators);
extern _X_EXPORT void xf86PostButtonEvent(DeviceIntPtr device, int is_absolute, int button,
int is_down, int first_valuator, int num_valuators,
...);
+extern _X_EXPORT void xf86PostButtonEventP(DeviceIntPtr device, int is_absolute, int button,
+ int is_down, int first_valuator, int num_valuators,
+ int *valuators);
extern _X_EXPORT void xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down,
int is_absolute, int first_valuator, int num_valuators,
...);
+extern _X_EXPORT void xf86PostKeyEventP(DeviceIntPtr device, unsigned int key_code, int is_down,
+ int is_absolute, int first_valuator, int num_valuators,
+ int *valuators);
extern _X_EXPORT void xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int key_code,
int is_down);
extern _X_EXPORT int xf86ActivateDevice(LocalDevicePtr local);
@@ -190,9 +206,6 @@ extern _X_EXPORT InputDriverPtr xf86LookupInputDriver(const char *name);
extern _X_EXPORT InputInfoPtr xf86LookupInput(const char *name);
extern _X_EXPORT void xf86DeleteInput(InputInfoPtr pInp, int flags);
extern _X_EXPORT void xf86MotionHistoryAllocate(LocalDevicePtr local);
-extern _X_EXPORT int xf86GetMotionEvents(DeviceIntPtr dev, xTimecoord *buff,
- unsigned long start, unsigned long stop,
- ScreenPtr pScreen, BOOL core);
/* xf86Option.c */
extern _X_EXPORT void xf86CollectInputOptions(InputInfoPtr pInfo, const char **defaultOpts,
diff --git a/hw/xfree86/common/xf86cmap.c b/hw/xfree86/common/xf86cmap.c
index 7e73bb85c..36e6f96de 100644
--- a/hw/xfree86/common/xf86cmap.c
+++ b/hw/xfree86/common/xf86cmap.c
@@ -52,8 +52,7 @@
#include "xf86Crtc.h"
#ifdef XFreeXDGA
-#define _XF86DGA_SERVER_
-#include <X11/extensions/xf86dgastr.h>
+#include <X11/extensions/xf86dgaproto.h>
#include "dgaproc.h"
#endif
@@ -999,6 +998,18 @@ xf86ChangeGammaRamp(
CMapScreenPtr pScreenPriv;
CMapLinkPtr pLink;
+ if (xf86_crtc_supports_gamma(pScrn)) {
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ RRCrtcPtr crtc = config->output[config->compat_output]->crtc->randr_crtc;
+
+ if (crtc->gammaSize != size)
+ return BadValue;
+
+ RRCrtcGammaSet(crtc, red, green, blue);
+
+ return Success;
+ }
+
if(CMapScreenKey == NULL)
return BadImplementation;
@@ -1057,8 +1068,16 @@ xf86ChangeGammaRamp(
int
xf86GetGammaRampSize(ScreenPtr pScreen)
{
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
CMapScreenPtr pScreenPriv;
+ if (xf86_crtc_supports_gamma(pScrn)) {
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ RRCrtcPtr crtc = config->output[config->compat_output]->crtc->randr_crtc;
+
+ return crtc->gammaSize;
+ }
+
if(CMapScreenKey == NULL) return 0;
pScreenPriv = (CMapScreenPtr)dixLookupPrivate(&pScreen->devPrivates,
@@ -1076,10 +1095,28 @@ xf86GetGammaRamp(
unsigned short *green,
unsigned short *blue
){
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
CMapScreenPtr pScreenPriv;
LOCO *entry;
int shift, sigbits;
+ if (xf86_crtc_supports_gamma(pScrn)) {
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ RRCrtcPtr crtc = config->output[config->compat_output]->crtc->randr_crtc;
+
+ if (crtc->gammaSize < size)
+ return BadValue;
+
+ if (!RRCrtcGammaGet(crtc))
+ return BadImplementation;
+
+ memcpy(red, crtc->gammaRed, size * sizeof(*red));
+ memcpy(green, crtc->gammaGreen, size * sizeof(*green));
+ memcpy(blue, crtc->gammaBlue, size * sizeof(*blue));
+
+ return Success;
+ }
+
if(CMapScreenKey == NULL)
return BadImplementation;
diff --git a/hw/xfree86/common/xf86fbBus.c b/hw/xfree86/common/xf86fbBus.c
index 90e6eb0b6..059e378e3 100644
--- a/hw/xfree86/common/xf86fbBus.c
+++ b/hw/xfree86/common/xf86fbBus.c
@@ -40,16 +40,12 @@
#include "os.h"
#include "xf86.h"
#include "xf86Priv.h"
-#include "xf86Resources.h"
#include "xf86Bus.h"
#define XF86_OS_PRIVS
-#define NEED_OS_RAC_PROTOS
#include "xf86_OSproc.h"
-#include "xf86RAC.h"
-
Bool fbSlotClaimed = FALSE;
int
@@ -73,10 +69,6 @@ xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
p->active = active;
p->inUse = FALSE;
xf86AddDevToEntity(num, dev);
- p->access = xnfcalloc(1,sizeof(EntityAccessRec));
- p->access->fallback = &AccessNULL;
- p->access->pAccess = &AccessNULL;
- p->busAcc = NULL;
fbSlotClaimed = TRUE;
return num;
diff --git a/hw/xfree86/common/xf86noBus.c b/hw/xfree86/common/xf86noBus.c
index e7d4442cf..0b9634918 100644
--- a/hw/xfree86/common/xf86noBus.c
+++ b/hw/xfree86/common/xf86noBus.c
@@ -40,16 +40,12 @@
#include "os.h"
#include "xf86.h"
#include "xf86Priv.h"
-#include "xf86Resources.h"
#include "xf86Bus.h"
#define XF86_OS_PRIVS
-#define NEED_OS_RAC_PROTOS
#include "xf86_OSproc.h"
-#include "xf86RAC.h"
-
int
xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
{
@@ -64,10 +60,6 @@ xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
p->active = active;
p->inUse = FALSE;
xf86AddDevToEntity(num, dev);
- p->access = xnfcalloc(1,sizeof(EntityAccessRec));
- p->access->fallback = &AccessNULL;
- p->access->pAccess = &AccessNULL;
- p->busAcc = NULL;
return num;
}
diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
index 586973b55..df62e0766 100644
--- a/hw/xfree86/common/xf86pciBus.c
+++ b/hw/xfree86/common/xf86pciBus.c
@@ -41,23 +41,17 @@
#include "Pci.h"
#include "xf86.h"
#include "xf86Priv.h"
-#include "xf86Resources.h"
/* Bus-specific headers */
#include "xf86Bus.h"
#define XF86_OS_PRIVS
-#define NEED_OS_RAC_PROTOS
#include "xf86_OSproc.h"
-#include "xf86RAC.h"
/* Bus-specific globals */
Bool pciSlotClaimed = FALSE;
-static struct pci_device ** xf86PciVideoInfo = NULL; /* PCI probe for video hw */
-
-/* PCI classes that get included in xf86PciVideoInfo */
#define PCIINFOCLASSES(c) \
( (((c) & 0x00ff0000) == (PCI_CLASS_PREHISTORIC << 16)) \
|| (((c) & 0x00ff0000) == (PCI_CLASS_DISPLAY << 16)) \
@@ -81,22 +75,6 @@ static struct pci_device ** xf86PciVideoInfo = NULL; /* PCI probe for video hw *
(((c) & 0x00ffff00) \
== ((PCI_CLASS_DISPLAY << 16) | (PCI_SUBCLASS_DISPLAY_VGA << 8)))
-/*
- * PCI classes for which potentially destructive checking of the map sizes
- * may be done. Any classes where this may be unsafe should be omitted
- * from this list.
- */
-#define PCINONSYSTEMCLASSES(c) PCIALWAYSPRINTCLASSES(c)
-
-/*
- * PCI classes that use RAC
- */
-#define PCISHAREDIOCLASSES(c) \
- ( (((c) & 0x00ffff00) \
- == ((PCI_CLASS_PREHISTORIC << 16) | (PCI_SUBCLASS_PREHISTORIC_VGA << 8))) \
- || IS_VGA(c) )
-
-
void
xf86FormatPciBusNumber(int busnum, char *buffer)
{
@@ -108,241 +86,6 @@ xf86FormatPciBusNumber(int busnum, char *buffer)
}
/*
- * IO enable/disable related routines for PCI
- */
-#define pArg ((pciArg*)arg)
-#define SETBITS PCI_CMD_IO_ENABLE
-static void
-pciIoAccessEnable(void* arg)
-{
-#if 0
-#ifdef DEBUG
- ErrorF("pciIoAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
- pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
-#endif
-}
-
-static void
-pciIoAccessDisable(void* arg)
-{
-#if 0
-#ifdef DEBUG
- ErrorF("pciIoAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl &= ~SETBITS;
- pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
-#endif
-}
-
-#undef SETBITS
-#define SETBITS (PCI_CMD_IO_ENABLE | PCI_CMD_MEM_ENABLE)
-static void
-pciIo_MemAccessEnable(void* arg)
-{
-#if 0
-#ifdef DEBUG
- ErrorF("pciIo_MemAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
- pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
-#endif
-}
-
-static void
-pciIo_MemAccessDisable(void* arg)
-{
-#if 0
-#ifdef DEBUG
- ErrorF("pciIo_MemAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl &= ~SETBITS;
- pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
-#endif
-}
-
-#undef SETBITS
-#define SETBITS (PCI_CMD_MEM_ENABLE)
-static void
-pciMemAccessEnable(void* arg)
-{
-#if 0
-#ifdef DEBUG
- ErrorF("pciMemAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
- pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
-#endif
-}
-
-static void
-pciMemAccessDisable(void* arg)
-{
-#if 0
-#ifdef DEBUG
- ErrorF("pciMemAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
-#endif
- pArg->ctrl &= ~SETBITS;
- pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
-#endif
-}
-#undef SETBITS
-#undef pArg
-
-
-/* move to OS layer */
-#define MASKBITS (PCI_PCI_BRIDGE_VGA_EN | PCI_PCI_BRIDGE_MASTER_ABORT_EN)
-static void
-pciBusAccessEnable(BusAccPtr ptr)
-{
-#if 0
- struct pci_device * const dev = ptr->busdep.pci.dev;
- uint16_t ctrl;
-
-#ifdef DEBUG
- ErrorF("pciBusAccessEnable: bus=%d\n", ptr->busdep.pci.bus);
-#endif
- pci_device_cfg_read_u16( dev, & ctrl, PCI_PCI_BRIDGE_CONTROL_REG );
- if ((ctrl & MASKBITS) != PCI_PCI_BRIDGE_VGA_EN) {
- ctrl = (ctrl | PCI_PCI_BRIDGE_VGA_EN) &
- ~(PCI_PCI_BRIDGE_MASTER_ABORT_EN | PCI_PCI_BRIDGE_SECONDARY_RESET);
- pci_device_cfg_write_u16(dev, ctrl, PCI_PCI_BRIDGE_CONTROL_REG);
- }
-#endif
-}
-
-/* move to OS layer */
-static void
-pciBusAccessDisable(BusAccPtr ptr)
-{
-#if 0
- struct pci_device * const dev = ptr->busdep.pci.dev;
- uint16_t ctrl;
-
-#ifdef DEBUG
- ErrorF("pciBusAccessDisable: bus=%d\n", ptr->busdep.pci.bus);
-#endif
- pci_device_cfg_read_u16( dev, & ctrl, PCI_PCI_BRIDGE_CONTROL_REG );
- if (ctrl & MASKBITS) {
- ctrl &= ~(MASKBITS | PCI_PCI_BRIDGE_SECONDARY_RESET);
- pci_device_cfg_write_u16(dev, ctrl, PCI_PCI_BRIDGE_CONTROL_REG);
- }
-#endif
-}
-#undef MASKBITS
-
-static void
-pciSetBusAccess(BusAccPtr ptr)
-{
-#if 0
-#ifdef DEBUG
- ErrorF("pciSetBusAccess: route VGA to bus %d\n", ptr->busdep.pci.bus);
-#endif
-
- if (!ptr->primary && !ptr->current)
- return;
-
- if (ptr->current && ptr->current->disable_f)
- (*ptr->current->disable_f)(ptr->current);
- ptr->current = NULL;
-
- /* walk down */
- while (ptr->primary) { /* No enable for root bus */
- if (ptr != ptr->primary->current) {
- if (ptr->primary->current && ptr->primary->current->disable_f)
- (*ptr->primary->current->disable_f)(ptr->primary->current);
- if (ptr->enable_f)
- (*ptr->enable_f)(ptr);
- ptr->primary->current = ptr;
- }
- ptr = ptr->primary;
- }
-#endif
-}
-
-/* move to OS layer */
-static void
-savePciState( struct pci_device * dev, pciSavePtr ptr )
-{
-#if 0
- int i;
-
- pci_device_cfg_read_u32( dev, & ptr->command, PCI_CMD_STAT_REG );
-
- for ( i = 0; i < 6; i++ ) {
- pci_device_cfg_read_u32( dev, & ptr->base[i],
- PCI_CMD_BASE_REG + (i * 4) );
- }
-
- pci_device_cfg_read_u32( dev, & ptr->biosBase, PCI_CMD_BIOS_REG );
-#endif
-}
-
-/* move to OS layer */
-#if 0
-static void
-restorePciState( struct pci_device * dev, pciSavePtr ptr)
-{
- int i;
-
- /* disable card before setting anything */
- pci_device_cfg_write_bits(dev, PCI_CMD_MEM_ENABLE | PCI_CMD_IO_ENABLE, 0,
- PCI_CMD_STAT_REG);
-
- pci_device_cfg_write_u32(dev, ptr->biosBase, PCI_CMD_BIOS_REG);
-
- for ( i = 0; i < 6; i++ ) {
- pci_device_cfg_write_u32(dev, ptr->base[i],
- PCI_CMD_BASE_REG + (i * 4));
- }
-
- pci_device_cfg_write_u32(dev, ptr->command, PCI_CMD_STAT_REG);
-}
-#endif
-
-/* move to OS layer */
-static void
-savePciBusState(BusAccPtr ptr)
-{
-#if 0
- struct pci_device * const dev = ptr->busdep.pci.dev;
- uint16_t temp;
-
- pci_device_cfg_read_u16( dev, & temp, PCI_PCI_BRIDGE_CONTROL_REG );
- ptr->busdep.pci.save.control = temp & ~PCI_PCI_BRIDGE_SECONDARY_RESET;
-
- /* Allow master aborts to complete normally on non-root buses */
- if ( ptr->busdep.pci.save.control & PCI_PCI_BRIDGE_MASTER_ABORT_EN ) {
- temp = ptr->busdep.pci.save.control & ~PCI_PCI_BRIDGE_MASTER_ABORT_EN;
- pci_device_cfg_read_u16( dev, & temp, PCI_PCI_BRIDGE_CONTROL_REG );
- }
-#endif
-}
-
-/* move to OS layer */
-#define MASKBITS (PCI_PCI_BRIDGE_VGA_EN | PCI_PCI_BRIDGE_MASTER_ABORT_EN)
-static void
-restorePciBusState(BusAccPtr ptr)
-{
-#if 0
- struct pci_device * const dev = ptr->busdep.pci.dev;
- uint16_t ctrl;
-
- /* Only restore the bits we've changed (and don't cause resets) */
- pci_device_cfg_read_u16( dev, & ctrl, PCI_PCI_BRIDGE_CONTROL_REG );
-
- if ((ctrl ^ ptr->busdep.pci.save.control) & MASKBITS) {
- ctrl &= ~(MASKBITS | PCI_PCI_BRIDGE_SECONDARY_RESET);
- ctrl |= ptr->busdep.pci.save.control & MASKBITS;
- pci_device_cfg_write_u16(dev, ctrl, PCI_PCI_BRIDGE_CONTROL_REG);
- }
-#endif
-}
-#undef MASKBITS
-
-
-/*
* xf86Bus.c interface
*/
@@ -353,6 +96,7 @@ xf86PciProbe(void)
int num = 0;
struct pci_device *info;
struct pci_device_iterator *iter;
+ struct pci_device ** xf86PciVideoInfo = NULL;
if (!xf86scanpci()) {
@@ -371,6 +115,12 @@ xf86PciProbe(void)
xf86PciVideoInfo[num - 1] = info;
pci_device_probe(info);
+#ifdef HAVE_PCI_DEVICE_IS_BOOT_VGA
+ if (pci_device_is_boot_vga(info)) {
+ primaryBus.type = BUS_PCI;
+ primaryBus.id.pci = info;
+ }
+#endif
info->user_data = 0;
}
}
@@ -464,236 +214,6 @@ xf86PciProbe(void)
}
}
-void
-initPciState(void)
-{
- unsigned i;
- pciAccPtr pcaccp;
-
- if (xf86PciVideoInfo == NULL) {
- return;
- }
-
- for (i = 0 ; xf86PciVideoInfo[i] != NULL ; i++) {
- struct pci_device * const pvp = xf86PciVideoInfo[i];
-
- if (pvp->user_data == 0) {
- pcaccp = xnfalloc( sizeof( pciAccRec ) );
- pvp->user_data = (intptr_t) pcaccp;
-
- pcaccp->arg.dev = pvp;
- pcaccp->ioAccess.AccessDisable = pciIoAccessDisable;
- pcaccp->ioAccess.AccessEnable = pciIoAccessEnable;
- pcaccp->ioAccess.arg = &pcaccp->arg;
- pcaccp->io_memAccess.AccessDisable = pciIo_MemAccessDisable;
- pcaccp->io_memAccess.AccessEnable = pciIo_MemAccessEnable;
- pcaccp->io_memAccess.arg = &pcaccp->arg;
- pcaccp->memAccess.AccessDisable = pciMemAccessDisable;
- pcaccp->memAccess.AccessEnable = pciMemAccessEnable;
- pcaccp->memAccess.arg = &pcaccp->arg;
-
- pcaccp->ctrl = PCISHAREDIOCLASSES(pvp->device_class);
-
- savePciState(pvp, &pcaccp->save);
- pcaccp->arg.ctrl = pcaccp->save.command;
- }
- }
-}
-
-/*
- * initPciBusState() - fill out the BusAccRec for a PCI bus.
- * Theory: each bus is associated with one bridge connecting it
- * to its parent bus. The address of a bridge is therefore stored
- * in the BusAccRec of the bus it connects to. Each bus can
- * have several bridges connecting secondary buses to it. Only one
- * of these bridges can be open. Therefore the status of a bridge
- * associated with a bus is stored in the BusAccRec of the parent
- * the bridge connects to. The first member of the structure is
- * a pointer to a function that open access to this bus. This function
- * receives a pointer to the structure itself as argument. This
- * design should be common to BusAccRecs of any type of buses we
- * support. The remeinder of the structure is bus type specific.
- * In this case it contains a pointer to the structure of the
- * parent bus. Thus enabling access to a specific bus is simple:
- * 1. Close any bridge going to secondary buses.
- * 2. Climb down the ladder and enable any bridge on buses
- * on the path from the CPU to this bus.
- */
-
-void
-initPciBusState(void)
-{
- static const struct pci_id_match bridge_match = {
- PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
- (PCI_CLASS_BRIDGE << 16), 0x0000ff0000, 0
- };
- struct pci_device *dev;
- struct pci_device_iterator *iter;
- BusAccPtr pbap, pbap_tmp;
-
- iter = pci_id_match_iterator_create(& bridge_match);
- while((dev = pci_device_next(iter)) != NULL) {
- const uint8_t subclass = (dev->device_class >> 8) & 0x0ff;
- int primary;
- int secondary;
- int subordinate;
-
-
- pci_device_get_bridge_buses(dev, &primary, &secondary, &subordinate);
-
- pbap = xnfcalloc(1,sizeof(BusAccRec));
- pbap->busdep.pci.bus = secondary;
- pbap->busdep.pci.primary_bus = primary;
- pbap->busdep_type = BUS_PCI;
- pbap->busdep.pci.dev = dev;
-
- pbap->set_f = pciSetBusAccess;
-
- switch (subclass) {
- case PCI_SUBCLASS_BRIDGE_HOST:
- pbap->type = BUS_PCI;
- break;
- case PCI_SUBCLASS_BRIDGE_PCI:
- case PCI_SUBCLASS_BRIDGE_CARDBUS:
- pbap->type = BUS_PCI;
- pbap->save_f = savePciBusState;
- pbap->restore_f = restorePciBusState;
- pbap->enable_f = pciBusAccessEnable;
- pbap->disable_f = pciBusAccessDisable;
- savePciBusState(pbap);
- break;
- }
- pbap->next = xf86BusAccInfo;
- xf86BusAccInfo = pbap;
- }
-
- pci_iterator_destroy(iter);
-
- for (pbap = xf86BusAccInfo; pbap; pbap = pbap->next) {
- pbap->primary = NULL;
-
- if (pbap->busdep_type == BUS_PCI
- && pbap->busdep.pci.primary_bus > -1) {
- pbap_tmp = xf86BusAccInfo;
- while (pbap_tmp) {
- if (pbap_tmp->busdep_type == BUS_PCI &&
- pbap_tmp->busdep.pci.bus == pbap->busdep.pci.primary_bus) {
- /* Don't create loops */
- if (pbap == pbap_tmp)
- break;
- pbap->primary = pbap_tmp;
- break;
- }
- pbap_tmp = pbap_tmp->next;
- }
- }
- }
-}
-
-void
-PciStateEnter(void)
-{
-#if 0
- unsigned i;
-
- if (xf86PciVideoInfo == NULL)
- return;
-
- for ( i = 0 ; xf86PciVideoInfo[i] != NULL ; i++ ) {
- pciAccPtr paccp = (pciAccPtr) xf86PciVideoInfo[i]->user_data;
-
- if ( (paccp != NULL) && paccp->ctrl ) {
- savePciState(paccp->arg.dev, &paccp->save);
- restorePciState(paccp->arg.dev, &paccp->restore);
- paccp->arg.ctrl = paccp->restore.command;
- }
- }
-#endif
-}
-
-void
-PciBusStateEnter(void)
-{
-#if 0
- BusAccPtr pbap = xf86BusAccInfo;
-
- while (pbap) {
- if (pbap->save_f)
- pbap->save_f(pbap);
- pbap = pbap->next;
- }
-#endif
-}
-
-void
-PciStateLeave(void)
-{
-#if 0
- unsigned i;
-
- if (xf86PciVideoInfo == NULL)
- return;
-
- for ( i = 0 ; xf86PciVideoInfo[i] != NULL ; i++ ) {
- pciAccPtr paccp = (pciAccPtr) xf86PciVideoInfo[i]->user_data;
-
- if ( (paccp != NULL) && paccp->ctrl ) {
- savePciState(paccp->arg.dev, &paccp->restore);
- restorePciState(paccp->arg.dev, &paccp->save);
- }
- }
-#endif
-}
-
-void
-PciBusStateLeave(void)
-{
-#if 0
- BusAccPtr pbap = xf86BusAccInfo;
-
- while (pbap) {
- if (pbap->restore_f)
- pbap->restore_f(pbap);
- pbap = pbap->next;
- }
-#endif
-}
-
-void
-DisablePciAccess(void)
-{
-#if 0
- unsigned i;
-
- if (xf86PciVideoInfo == NULL)
- return;
-
- for ( i = 0 ; xf86PciVideoInfo[i] != NULL ; i++ ) {
- pciAccPtr paccp = (pciAccPtr) xf86PciVideoInfo[i]->user_data;
-
- if ( (paccp != NULL) && paccp->ctrl ) {
- pciIo_MemAccessDisable(paccp->io_memAccess.arg);
- }
- }
-#endif
-}
-
-void
-DisablePciBusAccess(void)
-{
-#if 0
- BusAccPtr pbap = xf86BusAccInfo;
-
- while (pbap) {
- if (pbap->disable_f)
- pbap->disable_f(pbap);
- if (pbap->primary)
- pbap->primary->current = NULL;
- pbap = pbap->next;
- }
-#endif
-}
-
/*
* If the slot requested is already in use, return -1.
* Otherwise, claim the slot for the screen requesting it.
@@ -704,10 +224,6 @@ xf86ClaimPciSlot(struct pci_device * d, DriverPtr drvp,
int chipset, GDevPtr dev, Bool active)
{
EntityPtr p = NULL;
- pciAccPtr paccp = (pciAccPtr) d->user_data;
- BusAccPtr pbap = xf86BusAccInfo;
- const unsigned bus = PCI_MAKE_BUS(d->domain, d->bus);
-
int num;
if (xf86CheckPciSlot(d)) {
@@ -721,25 +237,6 @@ xf86ClaimPciSlot(struct pci_device * d, DriverPtr drvp,
p->inUse = FALSE;
if (dev)
xf86AddDevToEntity(num, dev);
- /* Here we initialize the access structure */
- p->access = xnfcalloc(1,sizeof(EntityAccessRec));
- if (paccp != NULL) {
- p->access->fallback = & paccp->io_memAccess;
- p->access->pAccess = & paccp->io_memAccess;
- paccp->ctrl = TRUE; /* mark control if not already */
- }
- else {
- p->access->fallback = &AccessNULL;
- p->access->pAccess = &AccessNULL;
- }
-
- p->busAcc = NULL;
- while (pbap) {
- if (pbap->type == BUS_PCI && pbap->busdep.pci.bus == bus)
- p->busAcc = pbap;
- pbap = pbap->next;
- }
-
pciSlotClaimed = TRUE;
if (active) {
@@ -753,6 +250,25 @@ xf86ClaimPciSlot(struct pci_device * d, DriverPtr drvp,
}
/*
+ * Unclaim PCI slot, e.g. if probing failed, so that a different driver can claim.
+ */
+void
+xf86UnclaimPciSlot(struct pci_device *d)
+{
+ int i;
+
+ for (i = 0; i < xf86NumEntities; i++) {
+ const EntityPtr p = xf86Entities[i];
+
+ if ((p->bus.type == BUS_PCI) && (p->bus.id.pci == d)) {
+ /* Probably the slot should be deallocated? */
+ p->bus.type = BUS_NONE;
+ return;
+ }
+ }
+}
+
+/*
* Parse a BUS ID string, and return the PCI bus parameters if it was
* in the correct format for a PCI bus id.
*/
@@ -904,21 +420,3 @@ xf86CheckPciSlot(const struct pci_device *d)
}
-void
-pciConvertRange2Host(int entityIndex, resRange *pRange)
-{
- struct pci_device *const pvp = xf86GetPciInfoForEntity(entityIndex);
- const PCITAG tag = PCI_MAKE_TAG(PCI_MAKE_BUS(pvp->domain, pvp->bus),
- pvp->dev, pvp->func);
-
- if (pvp == NULL) {
- return;
- }
-
- if (!(pRange->type & ResBus))
- return;
-
- /* Set domain number */
- pRange->type &= ~(ResDomain | ResBus);
- pRange->type |= pvp->domain << 24;
-}
diff --git a/hw/xfree86/common/xf86pciBus.h b/hw/xfree86/common/xf86pciBus.h
index 1cbfa38ea..3125e0db8 100644
--- a/hw/xfree86/common/xf86pciBus.h
+++ b/hw/xfree86/common/xf86pciBus.h
@@ -33,42 +33,6 @@
#ifndef _XF86_PCI_BUS_H
#define _XF86_PCI_BUS_H
-#define PCITAG_SPECIAL pciTag(0xFF,0xFF,0xFF)
-
-typedef struct {
- CARD32 command;
- CARD32 base[6];
- CARD32 biosBase;
-} pciSave, *pciSavePtr;
-
-typedef struct {
- struct pci_device * dev;
- CARD32 ctrl;
-} pciArg;
-
-typedef struct {
- pciArg arg;
- xf86AccessRec ioAccess;
- xf86AccessRec io_memAccess;
- xf86AccessRec memAccess;
- pciSave save;
- pciSave restore;
- Bool ctrl;
-} pciAccRec, *pciAccPtr;
-
-typedef union {
- CARD16 control;
-} pciBridgesSave, *pciBridgesSavePtr;
-
void xf86PciProbe(void);
-void initPciState(void);
-void initPciBusState(void);
-void DisablePciAccess(void);
-void DisablePciBusAccess(void);
-void PciStateEnter(void);
-void PciBusStateEnter(void);
-void PciStateLeave(void);
-void PciBusStateLeave(void);
-void pciConvertRange2Host(int entityIndex, resRange *pRange);
#endif /* _XF86_PCI_BUS_H */
diff --git a/hw/xfree86/common/xf86sbusBus.c b/hw/xfree86/common/xf86sbusBus.c
index 4936e75be..7b23233aa 100644
--- a/hw/xfree86/common/xf86sbusBus.c
+++ b/hw/xfree86/common/xf86sbusBus.c
@@ -33,7 +33,6 @@
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"
-#include "xf86Resources.h"
#include "xf86cmap.h"
#include "xf86Bus.h"
@@ -350,10 +349,6 @@ xf86ClaimSbusSlot(sbusDevicePtr psdp, DriverPtr drvp,
p->bus.id.sbus.fbNum = psdp->fbNum;
p->active = active;
p->inUse = FALSE;
- /* Here we initialize the access structure */
- p->access = xnfcalloc(1,sizeof(EntityAccessRec));
- p->access->fallback = &AccessNULL;
- p->access->pAccess = &AccessNULL;
sbusSlotClaimed = TRUE;
return num;
} else
@@ -406,11 +401,6 @@ xf86MatchSbusInstances(const char *driverName, int sbusDevId,
return 0;
}
- if (xf86DoProbe) {
- xfree(instances);
- return numFound;
- }
-
if (sparcPromInit() >= 0)
useProm = 1;
diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h
index 3b1346f05..b9a2e06de 100644
--- a/hw/xfree86/common/xf86str.h
+++ b/hw/xfree86/common/xf86str.h
@@ -517,7 +517,7 @@ typedef struct _confdrirec {
/* These values should be adjusted when new fields are added to ScrnInfoRec */
#define NUM_RESERVED_INTS 16
-#define NUM_RESERVED_POINTERS 15
+#define NUM_RESERVED_POINTERS 14
#define NUM_RESERVED_FUNCS 11
typedef pointer (*funcPointer)(void);
@@ -556,145 +556,6 @@ typedef enum {
PM_NONE
} pmWait;
-/*
- * The IO access enabler struct. This contains the address for
- * the IOEnable/IODisable funcs for their specific bus along
- * with a pointer to data needed by them
- */
-typedef struct _AccessRec {
- void (*AccessDisable)(void *arg);
- void (*AccessEnable)(void *arg);
- void *arg;
-} xf86AccessRec, *xf86AccessPtr;
-
-typedef struct {
- xf86AccessPtr mem;
- xf86AccessPtr io;
- xf86AccessPtr io_mem;
-} xf86SetAccessFuncRec, *xf86SetAccessFuncPtr;
-
-/* bus-access-related types */
-typedef enum {
- NONE,
- IO,
- MEM_IO,
- MEM
-} resType;
-
-typedef struct _EntityAccessRec {
- xf86AccessPtr fallback;
- xf86AccessPtr pAccess;
- resType rt;
- pointer busAcc;
- struct _EntityAccessRec *next;
-} EntityAccessRec, *EntityAccessPtr;
-
-typedef struct _CurrAccRec {
- EntityAccessPtr pMemAccess;
- EntityAccessPtr pIoAccess;
-} xf86CurrentAccessRec, *xf86CurrentAccessPtr;
-
-/* new RAC */
-
-/* Resource Type values */
-#define ResNone ((unsigned long)(-1))
-
-#define ResMem 0x0001
-#define ResIo 0x0002
-#define ResPhysMask 0x000F
-
-#define ResExclusive 0x0010
-#define ResShared 0x0020
-#define ResAny 0x0040
-#define ResAccMask 0x0070
-#define ResUnused 0x0080
-
-#define ResUnusedOpr 0x0100
-#define ResDisableOpr 0x0200
-#define ResOprMask 0x0300
-
-#define ResBlock 0x0400
-#define ResSparse 0x0800
-#define ResExtMask 0x0C00
-
-#define ResEstimated 0x001000
-#define ResInit 0x002000
-#define ResBios 0x004000
-#define ResMiscMask 0x00F000
-
-#define ResBus 0x010000
-
-#if defined(__alpha__) && defined(linux)
-# define ResDomain 0x1ff000000ul
-#else
-# define ResDomain 0xff000000ul
-#endif
-#define ResTypeMask (ResPhysMask | ResDomain) /* For conflict check */
-
-#define ResEnd ResNone
-
-#define ResExcMemBlock (ResMem | ResExclusive | ResBlock)
-#define ResExcIoBlock (ResIo | ResExclusive | ResBlock)
-#define ResShrMemBlock (ResMem | ResShared | ResBlock)
-#define ResShrIoBlock (ResIo | ResShared | ResBlock)
-#define ResExcUusdMemBlock (ResMem | ResExclusive | ResUnused | ResBlock)
-#define ResExcUusdIoBlock (ResIo | ResExclusive | ResUnused | ResBlock)
-#define ResShrUusdMemBlock (ResMem | ResShared | ResUnused | ResBlock)
-#define ResShrUusdIoBlock (ResIo | ResShared | ResUnused | ResBlock)
-#define ResExcUusdMemSparse (ResMem | ResExclusive | ResUnused | ResSparse)
-#define ResExcUusdIoSparse (ResIo | ResExclusive | ResUnused | ResSparse)
-#define ResShrUusdMemSparse (ResMem | ResShared | ResUnused | ResSparse)
-#define ResShrUusdIoSparse (ResIo | ResShared | ResUnused | ResSparse)
-
-#define ResExcMemSparse (ResMem | ResExclusive | ResSparse)
-#define ResExcIoSparse (ResIo | ResExclusive | ResSparse)
-#define ResShrMemSparse (ResMem | ResShared | ResSparse)
-#define ResShrIoSparse (ResIo | ResShared | ResSparse)
-#define ResUusdMemSparse (ResMem | ResUnused | ResSparse)
-#define ResUusdIoSparse (ResIo | ResUnused | ResSparse)
-
-#define ResIsMem(r) (((r)->type & ResPhysMask) == ResMem)
-#define ResIsIo(r) (((r)->type & ResPhysMask) == ResIo)
-#define ResIsExclusive(r) (((r)->type & ResAccMask) == ResExclusive)
-#define ResIsShared(r) (((r)->type & ResAccMask) == ResShared)
-#define ResIsUnused(r) (((r)->type & ResAccMask) == ResUnused)
-#define ResIsBlock(r) (((r)->type & ResExtMask) == ResBlock)
-#define ResIsSparse(r) (((r)->type & ResExtMask) == ResSparse)
-#define ResIsEstimated(r) (((r)->type & ResMiscMask) == ResEstimated)
-
-typedef struct {
- unsigned long type; /* shared, exclusive, unused etc. */
- memType a;
- memType b;
-} resRange, *resList;
-
-#define RANGE_TYPE(type, domain) \
- (((unsigned long)(domain) << 24) | ((type) & ~ResBus))
-#define RANGE(r,u,v,t) {\
- (r).a = (u);\
- (r).b = (v);\
- (r).type = (t);\
- }
-
-#define rBase a
-#define rMask b
-#define rBegin a
-#define rEnd b
-
-/* resource record */
-typedef struct _resRec *resPtr;
-typedef struct _resRec {
- resRange val;
- int entityIndex; /* who owns the resource */
- resPtr next;
-} resRec;
-
-#define sparse_base val.rBase
-#define sparse_mask val.rMask
-#define block_begin val.rBegin
-#define block_end val.rEnd
-#define res_type val.type
-
typedef struct _PciChipsets {
/**
* Key used to match this device with its name in an array of
@@ -720,12 +581,14 @@ typedef struct _PciChipsets {
*/
int PCIid;
- /**
- * Resources associated with this type of device.
- */
- resRange *resList;
+/* dummy place holders for drivers to build against old/new servers */
+#define RES_UNDEFINED NULL
+#define RES_EXCLUSIVE_VGA NULL
+#define RES_SHARED_VGA NULL
+ void *dummy;
} PciChipsets;
+
/* Entity properties */
typedef void (*EntityProc)(int entityIndex,pointer private);
@@ -734,7 +597,6 @@ typedef struct _entityInfo {
BusRec location;
int chipset;
Bool active;
- resPtr resources;
GDevPtr device;
DriverPtr driver;
} EntityInfoRec, *EntityInfoPtr;
@@ -746,18 +608,6 @@ typedef enum {
OPERATING
} xf86State;
-typedef enum {
- NOTIFY_SETUP_TRANSITION,
- NOTIFY_SETUP,
- NOTIFY_OPERATING,
- NOTIFY_OPERATING_TRANSITION,
- NOTIFY_ENABLE,
- NOTIFY_ENTER,
- NOTIFY_LEAVE
-} xf86NotifyState;
-
-typedef void (*xf86StateChangeNotificationCallbackFunc)(xf86NotifyState state,pointer);
-
/* DGA */
typedef struct {
@@ -926,12 +776,6 @@ typedef struct _ScrnInfoRec {
int chipID;
int chipRev;
- int racMemFlags;
- int racIoFlags;
- pointer access;
- xf86CurrentAccessPtr CurrentAccess;
- resType resourceType;
- pointer busAccess;
/* Allow screens to be enabled/disabled individually */
Bool vtSema;
@@ -952,6 +796,8 @@ typedef struct _ScrnInfoRec {
int reservedInt[NUM_RESERVED_INTS];
int * entityInstanceList;
+ struct pci_device *vgaDev;
+
pointer reservedPtr[NUM_RESERVED_POINTERS];
/*
diff --git a/hw/xfree86/ddc/Makefile.am b/hw/xfree86/ddc/Makefile.am
index d32e2f4ab..93ea4a2a5 100644
--- a/hw/xfree86/ddc/Makefile.am
+++ b/hw/xfree86/ddc/Makefile.am
@@ -2,11 +2,10 @@ sdk_HEADERS = edid.h xf86DDC.h
noinst_LTLIBRARIES = libddc.la
-libddc_la_SOURCES = xf86DDC.c edid.c interpret_edid.c print_edid.c \
- ddcProperty.c
+libddc_la_SOURCES = ddc.c interpret_edid.c print_edid.c ddcProperty.c
INCLUDES = $(XORG_INCS) -I$(srcdir)/../i2c
AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
-EXTRA_DIST = ddcPriv.h DDC.HOWTO
+EXTRA_DIST = DDC.HOWTO
diff --git a/hw/xfree86/ddc/xf86DDC.c b/hw/xfree86/ddc/ddc.c
index dba14d52a..6fad9fbbc 100644
--- a/hw/xfree86/ddc/xf86DDC.c
+++ b/hw/xfree86/ddc/ddc.c
@@ -4,10 +4,10 @@
*/
/*
- * Note that DDC1 does not define any method for returning blocks beyond
- * the first. DDC2 does, but the original implementation would only ever
- * read the first block. If you want to read and parse all blocks, use
- * xf86DoEEDID().
+ * A note on terminology. DDC1 is the original dumb serial protocol, and
+ * can only do up to 128 bytes of EDID. DDC2 is I2C-encapsulated and
+ * introduces extension blocks. EDID is the old display identification
+ * block, DisplayID is the new one.
*/
#ifdef HAVE_XORG_CONFIG_H
@@ -18,27 +18,10 @@
#include "xf86.h"
#include "xf86_OSproc.h"
#include "xf86DDC.h"
-#include "ddcPriv.h"
#include <string.h>
#define RETRIES 4
-static unsigned char *EDIDRead_DDC1(
- ScrnInfoPtr pScrn,
- DDC1SetSpeedProc,
- unsigned int (*)(ScrnInfoPtr)
-);
-
-static Bool TestDDC1(
- ScrnInfoPtr pScrn,
- unsigned int (*)(ScrnInfoPtr)
-);
-
-static unsigned int *FetchEDID_DDC1(
- ScrnInfoPtr,
- register unsigned int (*)(ScrnInfoPtr)
-);
-
typedef enum {
DDCOPT_NODDC1,
DDCOPT_NODDC2,
@@ -52,6 +35,191 @@ static const OptionInfoRec DDCOptions[] = {
{ -1, NULL, OPTV_NONE, {0}, FALSE },
};
+/* DDC1 */
+
+static int
+find_start(unsigned int *ptr)
+{
+ unsigned int comp[9], test[9];
+ int i,j;
+
+ for (i=0;i<9;i++){
+ comp[i] = *(ptr++);
+ test[i] = 1;
+ }
+ for (i=0;i<127;i++){
+ for (j=0;j<9;j++){
+ test[j] = test[j] & !(comp[j] ^ *(ptr++));
+ }
+ }
+ for (i=0;i<9;i++)
+ if (test[i]) return (i+1);
+ return (-1);
+}
+
+static unsigned char *
+find_header(unsigned char *block)
+{
+ unsigned char *ptr, *head_ptr, *end;
+ unsigned char header[]={0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00};
+
+ ptr = block;
+ end = block + EDID1_LEN;
+ while (ptr<end) {
+ int i;
+ head_ptr = ptr;
+ for (i=0;i<8;i++){
+ if (header[i] != *(head_ptr++)) break;
+ if (head_ptr == end) head_ptr = block;
+ }
+ if (i==8) break;
+ ptr++;
+ }
+ if (ptr == end) return (NULL);
+ return (ptr);
+}
+
+static unsigned char *
+resort(unsigned char *s_block)
+{
+ unsigned char *d_new, *d_ptr, *d_end, *s_ptr, *s_end;
+ unsigned char tmp;
+
+ s_end = s_block + EDID1_LEN;
+ d_new = xalloc(EDID1_LEN);
+ if (!d_new) return NULL;
+ d_end = d_new + EDID1_LEN;
+
+ s_ptr = find_header(s_block);
+ if (!s_ptr) return NULL;
+ for (d_ptr=d_new;d_ptr<d_end;d_ptr++){
+ tmp = *(s_ptr++);
+ *d_ptr = tmp;
+ if (s_ptr == s_end) s_ptr = s_block;
+ }
+ xfree(s_block);
+ return (d_new);
+}
+
+static int
+DDC_checksum(unsigned char *block, int len)
+{
+ int i, result = 0;
+ int not_null = 0;
+
+ for (i=0;i<len;i++) {
+ not_null |= block[i];
+ result += block[i];
+ }
+
+#ifdef DEBUG
+ if (result & 0xFF) ErrorF("DDC checksum not correct\n");
+ if (!not_null) ErrorF("DDC read all Null\n");
+#endif
+
+ /* catch the trivial case where all bytes are 0 */
+ if (!not_null) return 1;
+
+ return (result&0xFF);
+}
+
+static unsigned char *
+GetEDID_DDC1(unsigned int *s_ptr)
+{
+ unsigned char *d_block, *d_pos;
+ unsigned int *s_pos, *s_end;
+ int s_start;
+ int i,j;
+ s_start = find_start(s_ptr);
+ if (s_start==-1) return NULL;
+ s_end = s_ptr + NUM;
+ s_pos = s_ptr + s_start;
+ d_block=xalloc(EDID1_LEN);
+ if (!d_block) return NULL;
+ d_pos = d_block;
+ for (i=0;i<EDID1_LEN;i++) {
+ for (j=0;j<8;j++) {
+ *d_pos <<= 1;
+ if (*s_pos) {
+ *d_pos |= 0x01;
+ }
+ s_pos++; if (s_pos == s_end) s_pos=s_ptr;
+ };
+ s_pos++; if (s_pos == s_end) s_pos=s_ptr;
+ d_pos++;
+ }
+ xfree(s_ptr);
+ if (d_block && DDC_checksum(d_block,EDID1_LEN)) return NULL;
+ return (resort(d_block));
+}
+
+/* fetch entire EDID record; DDC bit needs to be masked */
+static unsigned int *
+FetchEDID_DDC1(register ScrnInfoPtr pScrn,
+ register unsigned int (*read_DDC)(ScrnInfoPtr))
+{
+ int count = NUM;
+ unsigned int *ptr, *xp;
+
+ ptr=xp=xalloc(sizeof(int)*NUM);
+
+ if (!ptr) return NULL;
+ do {
+ /* wait for next retrace */
+ *xp = read_DDC(pScrn);
+ xp++;
+ } while(--count);
+ return (ptr);
+}
+
+/* test if DDC1 return 0 if not */
+static Bool
+TestDDC1(ScrnInfoPtr pScrn, unsigned int (*read_DDC)(ScrnInfoPtr))
+{
+ int old, count;
+
+ old = read_DDC(pScrn);
+ count = HEADER * BITS_PER_BYTE;
+ do {
+ /* wait for next retrace */
+ if (old != read_DDC(pScrn)) break;
+ } while(count--);
+ return (count);
+}
+
+/*
+ * read EDID record , pass it to callback function to interpret.
+ * callback function will store it for further use by calling
+ * function; it will also decide if we need to reread it
+ */
+static unsigned char *
+EDIDRead_DDC1(ScrnInfoPtr pScrn, DDC1SetSpeedProc DDCSpeed,
+ unsigned int (*read_DDC)(ScrnInfoPtr))
+{
+ unsigned char *EDID_block = NULL;
+ int count = RETRIES;
+
+ if (!read_DDC) {
+ xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
+ "chipset doesn't support DDC1\n");
+ return NULL;
+ };
+
+ if (TestDDC1(pScrn,read_DDC)==-1) {
+ xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "No DDC signal\n");
+ return NULL;
+ };
+
+ if (DDCSpeed) DDCSpeed(pScrn,DDC_FAST);
+ do {
+ EDID_block = GetEDID_DDC1(FetchEDID_DDC1(pScrn,read_DDC));
+ count --;
+ } while (!EDID_block && count);
+ if (DDCSpeed) DDCSpeed(pScrn,DDC_SLOW);
+
+ return EDID_block;
+}
+
/**
* Attempts to probe the monitor for EDID information, if NoDDC and NoDDC1 are
* unset. EDID information blocks are interpreted and the results returned in
@@ -103,6 +271,8 @@ xf86DoEDID_DDC1(
return tmp;
}
+/* DDC2 */
+
static I2CDevPtr
DDC2MakeDevice(I2CBusPtr pBus, int address, char *name)
{
@@ -256,7 +426,7 @@ xf86DoEEDID(int scrnIndex, I2CBusPtr pBus, Bool complete)
}
if (tmp && complete)
- tmp->flags |= EDID_COMPLETE_RAWDATA;
+ tmp->flags |= MONITOR_EDID_COMPLETE_RAWDATA;
return tmp;
}
@@ -278,69 +448,60 @@ xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
return xf86DoEEDID(scrnIndex, pBus, FALSE);
}
-/*
- * read EDID record , pass it to callback function to interpret.
- * callback function will store it for further use by calling
- * function; it will also decide if we need to reread it
- */
-static unsigned char *
-EDIDRead_DDC1(ScrnInfoPtr pScrn, DDC1SetSpeedProc DDCSpeed,
- unsigned int (*read_DDC)(ScrnInfoPtr))
+/* XXX write me */
+static void *
+DDC2ReadDisplayID(void)
{
- unsigned char *EDID_block = NULL;
- int count = RETRIES;
-
- if (!read_DDC) {
- xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
- "chipset doesn't support DDC1\n");
- return NULL;
- };
+ return FALSE;
+}
- if (TestDDC1(pScrn,read_DDC)==-1) {
- xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "No DDC signal\n");
- return NULL;
- };
+/**
+ * Attempts to probe the monitor for DisplayID information, if NoDDC and
+ * NoDDC2 are unset. DisplayID blocks are interpreted and the results
+ * returned in an xf86MonPtr.
+ *
+ * This function does not affect the list of modes used by drivers -- it is up
+ * to the driver to decide policy on what to do with DisplayID information.
+ *
+ * @return pointer to a new xf86MonPtr containing the DisplayID information.
+ * @return NULL if no monitor attached or failure to interpret the DisplayID.
+ */
+xf86MonPtr
+xf86DoDisplayID(int scrnIndex, I2CBusPtr pBus)
+{
+ ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ unsigned char *did = NULL;
+ xf86MonPtr tmp = NULL;
+ I2CDevPtr dev = NULL;
+ /* Default DDC and DDC2 to enabled. */
+ Bool noddc = FALSE, noddc2 = FALSE;
+ OptionInfoPtr options;
- if (DDCSpeed) DDCSpeed(pScrn,DDC_FAST);
- do {
- EDID_block = GetEDID_DDC1(FetchEDID_DDC1(pScrn,read_DDC));
- count --;
- } while (!EDID_block && count);
- if (DDCSpeed) DDCSpeed(pScrn,DDC_SLOW);
+ options = xalloc(sizeof(DDCOptions));
+ if (!options)
+ return NULL;
+ memcpy(options, DDCOptions, sizeof(DDCOptions));
+ xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, options);
- return EDID_block;
-}
+ xf86GetOptValBool(options, DDCOPT_NODDC, &noddc);
+ xf86GetOptValBool(options, DDCOPT_NODDC2, &noddc2);
+ xfree(options);
-/* test if DDC1 return 0 if not */
-static Bool
-TestDDC1(ScrnInfoPtr pScrn, unsigned int (*read_DDC)(ScrnInfoPtr))
-{
- int old, count;
+ if (noddc || noddc2)
+ return NULL;
- old = read_DDC(pScrn);
- count = HEADER * BITS_PER_BYTE;
- do {
- /* wait for next retrace */
- if (old != read_DDC(pScrn)) break;
- } while(count--);
- return (count);
-}
+ if (!(dev = DDC2Init(scrnIndex, pBus)))
+ return NULL;
-/* fetch entire EDID record; DDC bit needs to be masked */
-static unsigned int *
-FetchEDID_DDC1(register ScrnInfoPtr pScrn,
- register unsigned int (*read_DDC)(ScrnInfoPtr))
-{
- int count = NUM;
- unsigned int *ptr, *xp;
+ if ((did = DDC2ReadDisplayID())) {
+ tmp = xcalloc(1, sizeof(*tmp));
+ if (!tmp)
+ return NULL;
- ptr=xp=xalloc(sizeof(int)*NUM);
+ tmp->scrnIndex = scrnIndex;
+ tmp->flags |= MONITOR_DISPLAYID;
+ tmp->rawData = did;
+ }
- if (!ptr) return NULL;
- do {
- /* wait for next retrace */
- *xp = read_DDC(pScrn);
- xp++;
- } while(--count);
- return (ptr);
+ return tmp;
}
diff --git a/hw/xfree86/ddc/ddcPriv.h b/hw/xfree86/ddc/ddcPriv.h
deleted file mode 100644
index b5cb9b836..000000000
--- a/hw/xfree86/ddc/ddcPriv.h
+++ /dev/null
@@ -1,9 +0,0 @@
-extern unsigned char *GetEDID_DDC1(
- unsigned int *
-);
-
-extern int DDC_checksum(
- unsigned char *,
- int
-);
-
diff --git a/hw/xfree86/ddc/ddcProperty.c b/hw/xfree86/ddc/ddcProperty.c
index a4384f1d3..329a63964 100644
--- a/hw/xfree86/ddc/ddcProperty.c
+++ b/hw/xfree86/ddc/ddcProperty.c
@@ -31,21 +31,36 @@
#include "property.h"
#include "propertyst.h"
#include "xf86DDC.h"
+#include <string.h>
#define EDID1_ATOM_NAME "XFree86_DDC_EDID1_RAWDATA"
#define EDID2_ATOM_NAME "XFree86_DDC_EDID2_RAWDATA"
static void
+edidMakeAtom(int i, const char *name, CARD8 *data, int size)
+{
+ Atom atom;
+ unsigned char *atom_data;
+
+ if (!(atom_data = xalloc(size*sizeof(CARD8))))
+ return;
+
+ atom = MakeAtom(name, strlen(name), TRUE);
+ memcpy(atom_data, data, size);
+ xf86RegisterRootWindowProperty(i, atom, XA_INTEGER, 8, size, atom_data);
+}
+
+static void
addRootWindowProperties(ScrnInfoPtr pScrn, xf86MonPtr DDC)
{
- Atom EDID1Atom=-1, EDID2Atom=-1;
- CARD8 *EDID1rawdata = NULL;
- CARD8 *EDID2rawdata = NULL;
int i, scrnIndex = pScrn->scrnIndex;
Bool makeEDID1prop = FALSE;
Bool makeEDID2prop = FALSE;
- if (DDC->ver.version == 1) {
+ if (DDC->flags & MONITOR_DISPLAYID) {
+ /* Don't bother, use RANDR already */
+ return;
+ } else if (DDC->ver.version == 1) {
makeEDID1prop = TRUE;
} else if (DDC->ver.version == 2) {
int checksum1;
@@ -83,29 +98,14 @@ addRootWindowProperties(ScrnInfoPtr pScrn, xf86MonPtr DDC)
}
if (makeEDID1prop) {
- int size = 128;
-
- if (DDC->flags & EDID_COMPLETE_RAWDATA)
- size += DDC->no_sections * 128;
+ int size = 128 +
+ (DDC->flags & EDID_COMPLETE_RAWDATA ? DDC->no_sections * 128 : 0);
- if ((EDID1rawdata = xalloc(size*sizeof(CARD8)))==NULL)
- return;
-
- EDID1Atom = MakeAtom(EDID1_ATOM_NAME, sizeof(EDID1_ATOM_NAME) - 1, TRUE);
- memcpy(EDID1rawdata, DDC->rawData, size);
- xf86RegisterRootWindowProperty(scrnIndex, EDID1Atom, XA_INTEGER, 8,
- size, (unsigned char *)EDID1rawdata);
+ edidMakeAtom(scrnIndex, EDID1_ATOM_NAME, DDC->rawData, size);
}
- if (makeEDID2prop) {
- if ((EDID2rawdata = xalloc(256*sizeof(CARD8)))==NULL)
- return;
-
- memcpy(EDID2rawdata, DDC->rawData, 256);
- EDID2Atom = MakeAtom(EDID2_ATOM_NAME, sizeof(EDID2_ATOM_NAME) - 1, TRUE);
- xf86RegisterRootWindowProperty(scrnIndex, EDID2Atom, XA_INTEGER, 8,
- 256, (unsigned char *)EDID2rawdata);
- }
+ if (makeEDID2prop)
+ edidMakeAtom(scrnIndex, EDID2_ATOM_NAME, DDC->rawData, 256);
}
Bool
@@ -114,7 +114,10 @@ xf86SetDDCproperties(ScrnInfoPtr pScrn, xf86MonPtr DDC)
if (!pScrn || !pScrn->monitor || !DDC)
return FALSE;
- xf86DDCMonitorSet(pScrn->scrnIndex, pScrn->monitor, DDC);
+ if (DDC->flags & MONITOR_DISPLAYID)
+ ;
+ else
+ xf86EdidMonitorSet(pScrn->scrnIndex, pScrn->monitor, DDC);
addRootWindowProperties(pScrn, DDC);
diff --git a/hw/xfree86/ddc/edid.c b/hw/xfree86/ddc/edid.c
deleted file mode 100644
index 3ebafbbba..000000000
--- a/hw/xfree86/ddc/edid.c
+++ /dev/null
@@ -1,140 +0,0 @@
-
-/* edid.c: retrieve EDID record from raw DDC1 data stream: data
- * is contained in an array of unsigned int each unsigned int
- * contains one bit if bit is 0 unsigned int has to be zero else
- * unsigned int > 0
- *
- * Copyright 1998 by Egbert Eich <Egbert.Eich@Physik.TU-Darmstadt.DE>
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "misc.h"
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86DDC.h"
-#include "ddcPriv.h"
-#include <string.h>
-
-static int find_start(unsigned int *);
-static unsigned char * find_header(unsigned char *);
-static unsigned char * resort(unsigned char *);
-
-unsigned char *
-GetEDID_DDC1(unsigned int *s_ptr)
-{
- unsigned char *d_block, *d_pos;
- unsigned int *s_pos, *s_end;
- int s_start;
- int i,j;
- s_start = find_start(s_ptr);
- if (s_start==-1) return NULL;
- s_end = s_ptr + NUM;
- s_pos = s_ptr + s_start;
- d_block=xalloc(EDID1_LEN);
- if (!d_block) return NULL;
- d_pos = d_block;
- for (i=0;i<EDID1_LEN;i++) {
- for (j=0;j<8;j++) {
- *d_pos <<= 1;
- if (*s_pos) {
- *d_pos |= 0x01;
- }
- s_pos++; if (s_pos == s_end) s_pos=s_ptr;
- };
- s_pos++; if (s_pos == s_end) s_pos=s_ptr;
- d_pos++;
- }
- xfree(s_ptr);
- if (d_block && DDC_checksum(d_block,EDID1_LEN)) return NULL;
- return (resort(d_block));
-}
-
-int
-DDC_checksum(unsigned char *block, int len)
-{
- int i, result = 0;
- int not_null = 0;
-
- for (i=0;i<len;i++) {
- not_null |= block[i];
- result += block[i];
- }
-
-#ifdef DEBUG
- if (result & 0xFF) ErrorF("DDC checksum not correct\n");
- if (!not_null) ErrorF("DDC read all Null\n");
-#endif
-
- /* catch the trivial case where all bytes are 0 */
- if (!not_null) return 1;
-
- return (result&0xFF);
-}
-
-static int
-find_start(unsigned int *ptr)
-{
- unsigned int comp[9], test[9];
- int i,j;
-
- for (i=0;i<9;i++){
- comp[i] = *(ptr++);
- test[i] = 1;
- }
- for (i=0;i<127;i++){
- for (j=0;j<9;j++){
- test[j] = test[j] & !(comp[j] ^ *(ptr++));
- }
- }
- for (i=0;i<9;i++)
- if (test[i]) return (i+1);
- return (-1);
-}
-
-static unsigned char *
-find_header(unsigned char *block)
-{
- unsigned char *ptr, *head_ptr, *end;
- unsigned char header[]={0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00};
-
- ptr = block;
- end = block + EDID1_LEN;
- while (ptr<end) {
- int i;
- head_ptr = ptr;
- for (i=0;i<8;i++){
- if (header[i] != *(head_ptr++)) break;
- if (head_ptr == end) head_ptr = block;
- }
- if (i==8) break;
- ptr++;
- }
- if (ptr == end) return (NULL);
- return (ptr);
-}
-
-static unsigned char *
-resort(unsigned char *s_block)
-{
- unsigned char *d_new, *d_ptr, *d_end, *s_ptr, *s_end;
- unsigned char tmp;
-
- s_end = s_block + EDID1_LEN;
- d_new = xalloc(EDID1_LEN);
- if (!d_new) return NULL;
- d_end = d_new + EDID1_LEN;
-
- s_ptr = find_header(s_block);
- if (!s_ptr) return NULL;
- for (d_ptr=d_new;d_ptr<d_end;d_ptr++){
- tmp = *(s_ptr++);
- *d_ptr = tmp;
- if (s_ptr == s_end) s_ptr = s_block;
- }
- xfree(s_block);
- return (d_new);
-}
-
-
diff --git a/hw/xfree86/ddc/edid.h b/hw/xfree86/ddc/edid.h
index 42ee9d15e..3feb9796f 100644
--- a/hw/xfree86/ddc/edid.h
+++ b/hw/xfree86/ddc/edid.h
@@ -538,8 +538,15 @@ struct detailed_monitor_section {
};
/* flags */
-#define EDID_COMPLETE_RAWDATA 0x1
+#define MONITOR_EDID_COMPLETE_RAWDATA 0x01
+/* old, don't use */
+#define EDID_COMPLETE_RAWDATA 0x01
+#define MONITOR_DISPLAYID 0x02
+/*
+ * For DisplayID devices, only the scrnIndex, flags, and rawData fields
+ * are meaningful. For EDID, they all are.
+ */
typedef struct {
int scrnIndex;
struct vendor vendor;
diff --git a/hw/xfree86/ddc/print_edid.c b/hw/xfree86/ddc/print_edid.c
index c2723da68..ff0b39cc1 100644
--- a/hw/xfree86/ddc/print_edid.c
+++ b/hw/xfree86/ddc/print_edid.c
@@ -231,7 +231,7 @@ print_established_timings(int scrnIndex, struct established_timings *t)
unsigned char c;
if (t->t1 || t->t2 || t->t_manu)
- xf86DrvMsg(scrnIndex,X_INFO,"Supported VESA Video Modes:\n");
+ xf86DrvMsg(scrnIndex,X_INFO,"Supported established timings:\n");
c=t->t1;
if (c&0x80) xf86DrvMsg(scrnIndex,X_INFO,"720x400@70Hz\n");
if (c&0x40) xf86DrvMsg(scrnIndex,X_INFO,"720x400@88Hz\n");
@@ -251,7 +251,7 @@ print_established_timings(int scrnIndex, struct established_timings *t)
if (c&0x02) xf86DrvMsg(scrnIndex,X_INFO,"1024x768@75Hz\n");
if (c&0x01) xf86DrvMsg(scrnIndex,X_INFO,"1280x1024@75Hz\n");
c=t->t_manu;
- if (c&0x80) xf86DrvMsg(scrnIndex,X_INFO,"1152x870@75Hz\n");
+ if (c&0x80) xf86DrvMsg(scrnIndex,X_INFO,"1152x864@75Hz\n");
xf86DrvMsg(scrnIndex,X_INFO,"Manufacturer's mask: %X\n",c&0x7F);
}
@@ -263,7 +263,7 @@ print_std_timings(int scrnIndex, struct std_timings *t)
for (i=0;i<STD_TIMINGS;i++) {
if (t[i].hsize > 256) { /* sanity check */
if (!done) {
- xf86DrvMsg(scrnIndex,X_INFO,"Supported Future Video Modes:\n");
+ xf86DrvMsg(scrnIndex,X_INFO,"Supported standard timings:\n");
done = 1;
}
xf86DrvMsg(scrnIndex,X_INFO,
@@ -296,7 +296,7 @@ print_detailed_timings(int scrnIndex, struct detailed_timings *t)
{
if (t->clock > 15000000) { /* sanity check */
- xf86DrvMsg(scrnIndex,X_INFO,"Supported additional Video Mode:\n");
+ xf86DrvMsg(scrnIndex,X_INFO,"Supported detailed timing:\n");
xf86DrvMsg(scrnIndex,X_INFO,"clock: %.1f MHz ",t->clock/1000000.0);
xf86ErrorF("Image Size: %i x %i mm\n",t->h_size,t->v_size);
xf86DrvMsg(scrnIndex,X_INFO,
@@ -450,7 +450,7 @@ print_detailed_monitor_section(int scrnIndex,
break;
}
if (m[i].type >= DS_VENDOR && m[i].type <= DS_VENDOR_MAX) {
- xf86DrvMsg(scrnIndex, X_WARNING,
+ xf86DrvMsg(scrnIndex, X_INFO,
"Unknown vendor-specific block %hx\n",
m[i].type - DS_VENDOR);
}
diff --git a/hw/xfree86/ddc/xf86DDC.h b/hw/xfree86/ddc/xf86DDC.h
index 07411b849..64869da10 100644
--- a/hw/xfree86/ddc/xf86DDC.h
+++ b/hw/xfree86/ddc/xf86DDC.h
@@ -50,7 +50,7 @@ extern _X_EXPORT xf86MonPtr xf86InterpretEEDID(
);
extern _X_EXPORT void
-xf86DDCMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC);
+xf86EdidMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC);
extern _X_EXPORT Bool xf86SetDDCproperties(
ScrnInfoPtr pScreen,
@@ -62,4 +62,15 @@ extern _X_EXPORT DisplayModePtr xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC);
extern _X_EXPORT Bool
xf86MonitorIsHDMI(xf86MonPtr mon);
+extern _X_EXPORT xf86MonPtr
+xf86DoDisplayID(int scrnIndex, I2CBusPtr pBus);
+
+extern _X_EXPORT void
+xf86DisplayIDMonitorSet(int scrnIndex, MonPtr mon, xf86MonPtr DDC);
+
+extern _X_EXPORT DisplayModePtr
+FindDMTMode(int hsize, int vsize, int refresh, Bool rb);
+
+extern _X_EXPORT const DisplayModeRec DMTModes[];
+
#endif
diff --git a/hw/xfree86/dixmods/extmod/modinit.h b/hw/xfree86/dixmods/extmod/modinit.h
index 1de14858c..6210526aa 100644
--- a/hw/xfree86/dixmods/extmod/modinit.h
+++ b/hw/xfree86/dixmods/extmod/modinit.h
@@ -7,20 +7,16 @@
#define INITARGS void
#endif
-#define _SHAPE_SERVER_ /* don't want Xlib structures */
-#include <X11/extensions/shapestr.h>
+#include <X11/extensions/shapeproto.h>
#ifdef MULTIBUFFER
extern void MultibufferExtensionInit(INITARGS);
-#define _MULTIBUF_SERVER_ /* don't want Xlib structures */
-#include <X11/extensions/multibufst.h>
+#include <X11/extensions/multibufproto.h>
#endif
#ifdef XTEST
extern void XTestExtensionInit(INITARGS);
-#define _XTEST_SERVER_
-#include <X11/extensions/XTest.h>
-#include <X11/extensions/xteststr.h>
+#include <X11/extensions/xtestproto.h>
#endif
#if 1
@@ -34,20 +30,18 @@ extern void ScreenSaverExtensionInit (INITARGS);
#ifdef XF86VIDMODE
extern void XFree86VidModeExtensionInit(INITARGS);
-#define _XF86VIDMODE_SERVER_
-#include <X11/extensions/xf86vmstr.h>
+#include <X11/extensions/xf86vmproto.h>
#endif
#ifdef XFreeXDGA
extern void XFree86DGAExtensionInit(INITARGS);
extern void XFree86DGARegister(INITARGS);
-#define _XF86DGA_SERVER_
-#include <X11/extensions/xf86dgastr.h>
+#include <X11/extensions/xf86dgaproto.h>
#endif
#ifdef DPMSExtension
extern void DPMSExtensionInit(INITARGS);
-#include <X11/extensions/dpmsstr.h>
+#include <X11/extensions/dpmsconst.h>
#endif
#ifdef XV
@@ -65,7 +59,7 @@ extern void ResExtensionInit(INITARGS);
#ifdef SHM
extern void ShmExtensionInit(INITARGS);
-#include <X11/extensions/shmstr.h>
+#include <X11/extensions/shmproto.h>
extern void ShmRegisterFuncs(
ScreenPtr pScreen,
ShmFuncsPtr funcs);
diff --git a/hw/xfree86/dixmods/extmod/xf86dga2.c b/hw/xfree86/dixmods/extmod/xf86dga2.c
index 46aa8b882..7579f7d51 100644
--- a/hw/xfree86/dixmods/extmod/xf86dga2.c
+++ b/hw/xfree86/dixmods/extmod/xf86dga2.c
@@ -22,9 +22,7 @@
#include "cursorstr.h"
#include "scrnintstr.h"
#include "servermd.h"
-#define _XF86DGA_SERVER_
-#include <X11/extensions/xf86dga.h>
-#include <X11/extensions/xf86dgastr.h>
+#include <X11/extensions/xf86dgaproto.h>
#include "swaprep.h"
#include "dgaproc.h"
#include "xf86dgaext.h"
@@ -159,7 +157,7 @@ ProcXDGAOpenFramebuffer(ClientPtr client)
}
nameSize = deviceName ? (strlen(deviceName) + 1) : 0;
- rep.length = (nameSize + 3) >> 2;
+ rep.length = bytes_to_int32(nameSize);
WriteToClient(client, sizeof(xXDGAOpenFramebufferReply), (char *)&rep);
if(rep.length)
@@ -225,10 +223,10 @@ ProcXDGAQueryModes(ClientPtr client)
size = num * sz_xXDGAModeInfo;
for(i = 0; i < num; i++)
- size += (strlen(mode[i].name) + 4) & ~3L; /* plus NULL */
+ size += pad_to_int32(strlen(mode[i].name) + 1); /* plus NULL */
rep.number = num;
- rep.length = size >> 2;
+ rep.length = bytes_to_int32(size);
WriteToClient(client, sz_xXDGAQueryModesReply, (char*)&rep);
@@ -389,7 +387,7 @@ ProcXDGASetMode(ClientPtr client)
info.reserved1 = mode.reserved1;
info.reserved2 = mode.reserved2;
- rep.length = (sz_xXDGAModeInfo + info.name_size) >> 2;
+ rep.length = bytes_to_int32(sz_xXDGAModeInfo + info.name_size);
WriteToClient(client, sz_xXDGASetModeReply, (char*)&rep);
WriteToClient(client, sz_xXDGAModeInfo, (char*)(&info));
diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c
index bd6c59462..4a288d79f 100644
--- a/hw/xfree86/dixmods/extmod/xf86vmode.c
+++ b/hw/xfree86/dixmods/extmod/xf86vmode.c
@@ -41,8 +41,7 @@ from Kaleb S. KEITHLEY
#include "extnsionst.h"
#include "scrnintstr.h"
#include "servermd.h"
-#define _XF86VIDMODE_SERVER_
-#include <X11/extensions/xf86vmstr.h>
+#include <X11/extensions/xf86vmproto.h>
#include "swaprep.h"
#include "xf86.h"
#include "vidmodeproc.h"
@@ -414,11 +413,11 @@ ProcXF86VidModeGetModeLine(ClientPtr client)
REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq);
rep.type = X_Reply;
if (ver < 2) {
- rep.length = (SIZEOF(xXF86OldVidModeGetModeLineReply) -
- SIZEOF(xGenericReply)) >> 2;
+ rep.length = bytes_to_int32(SIZEOF(xXF86OldVidModeGetModeLineReply) -
+ SIZEOF(xGenericReply));
} else {
- rep.length = (SIZEOF(xXF86VidModeGetModeLineReply) -
- SIZEOF(xGenericReply)) >> 2;
+ rep.length = bytes_to_int32(SIZEOF(xXF86VidModeGetModeLineReply) -
+ SIZEOF(xGenericReply));
}
rep.sequenceNumber = client->sequence;
@@ -670,10 +669,10 @@ ProcXF86VidModeAddModeLine(ClientPtr client)
if (ver < 2) {
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq);
- len = client->req_len - (sizeof(xXF86OldVidModeAddModeLineReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xXF86OldVidModeAddModeLineReq));
} else {
REQUEST_AT_LEAST_SIZE(xXF86VidModeAddModeLineReq);
- len = client->req_len - (sizeof(xXF86VidModeAddModeLineReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeAddModeLineReq));
}
if (len != stuff->privsize)
return BadLength;
@@ -809,10 +808,10 @@ ProcXF86VidModeDeleteModeLine(ClientPtr client)
if (ver < 2) {
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq);
- len = client->req_len - (sizeof(xXF86OldVidModeDeleteModeLineReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xXF86OldVidModeDeleteModeLineReq));
} else {
REQUEST_AT_LEAST_SIZE(xXF86VidModeDeleteModeLineReq);
- len = client->req_len - (sizeof(xXF86VidModeDeleteModeLineReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeDeleteModeLineReq));
}
if (len != stuff->privsize) {
if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) {
@@ -923,10 +922,10 @@ ProcXF86VidModeModModeLine(ClientPtr client)
if (ver < 2) {
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq);
- len = client->req_len - (sizeof(xXF86OldVidModeModModeLineReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xXF86OldVidModeModModeLineReq));
} else {
REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq);
- len = client->req_len - (sizeof(xXF86VidModeModModeLineReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeModModeLineReq));
}
if (len != stuff->privsize)
return BadLength;
@@ -1052,10 +1051,10 @@ ProcXF86VidModeValidateModeLine(ClientPtr client)
if (ver < 2) {
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq);
len = client->req_len -
- (sizeof(xXF86OldVidModeValidateModeLineReq) >> 2);
+ bytes_to_int32(sizeof(xXF86OldVidModeValidateModeLineReq));
} else {
REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq);
- len = client->req_len - (sizeof(xXF86VidModeValidateModeLineReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeValidateModeLineReq));
}
if (len != stuff->privsize)
return BadLength;
@@ -1107,8 +1106,8 @@ status_reply:
xfree(modetmp);
rep.type = X_Reply;
- rep.length = (SIZEOF(xXF86VidModeValidateModeLineReply)
- - SIZEOF(xGenericReply)) >> 2;
+ rep.length = bytes_to_int32(SIZEOF(xXF86VidModeValidateModeLineReply)
+ - SIZEOF(xGenericReply));
rep.sequenceNumber = client->sequence;
rep.status = status;
if (client->swapped) {
@@ -1185,10 +1184,10 @@ ProcXF86VidModeSwitchToMode(ClientPtr client)
if (ver < 2) {
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeSwitchToModeReq);
- len = client->req_len - (sizeof(xXF86OldVidModeSwitchToModeReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xXF86OldVidModeSwitchToModeReq));
} else {
REQUEST_AT_LEAST_SIZE(xXF86VidModeSwitchToModeReq);
- len = client->req_len - (sizeof(xXF86VidModeSwitchToModeReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeSwitchToModeReq));
}
if (len != stuff->privsize)
return BadLength;
@@ -1289,10 +1288,10 @@ ProcXF86VidModeGetMonitor(ClientPtr client)
VIDMODE_MON_MODEL, 0)).ptr);
else
rep.modelLength = 0;
- rep.length = (SIZEOF(xXF86VidModeGetMonitorReply) - SIZEOF(xGenericReply) +
+ rep.length = bytes_to_int32(SIZEOF(xXF86VidModeGetMonitorReply) - SIZEOF(xGenericReply) +
(nHsync + nVrefresh) * sizeof(CARD32) +
- ((rep.vendorLength + 3) & ~3) +
- ((rep.modelLength + 3) & ~3)) >> 2;
+ pad_to_int32(rep.vendorLength) +
+ pad_to_int32(rep.modelLength));
rep.sequenceNumber = client->sequence;
rep.nhsync = nHsync;
rep.nvsync = nVrefresh;
@@ -1413,8 +1412,8 @@ ProcXF86VidModeGetDotClocks(ClientPtr client)
numClocks = VidModeGetNumOfClocks(stuff->screen, &ClockProg);
rep.type = X_Reply;
- rep.length = (SIZEOF(xXF86VidModeGetDotClocksReply)
- - SIZEOF(xGenericReply) + numClocks) >> 2;
+ rep.length = bytes_to_int32(SIZEOF(xXF86VidModeGetDotClocksReply)
+ - SIZEOF(xGenericReply) + numClocks);
rep.sequenceNumber = client->sequence;
rep.clocks = numClocks;
rep.maxclocks = MAXCLOCKS;
diff --git a/hw/xfree86/doc/devel/Domain.note b/hw/xfree86/doc/devel/Domain.note
deleted file mode 100644
index ce0812b22..000000000
--- a/hw/xfree86/doc/devel/Domain.note
+++ /dev/null
@@ -1,159 +0,0 @@
-The purpose of the changes described here is to implement a more general
-framework for multi-head on systems with more than one host-to-PCI bridge.
-The changes also implement a basic port of XFree86 to SPARC Solaris.
-
-These changes are derived from David S. Miller's submission #4653 to the
-patch list. David Andrew of Sun Microsystems was also kind enough to
-arrange for a hardware loan for development of these changes.
-
-These changes are known to work on several SPARC SunOS and UltraSPARC
-Linux configurations. Linux kernel work is in progress to port these
-changes to Linux/PowerPC.
-
-Several loose ends still need to be addressed before these changes can be
-considered stable. The bulk of this note is devoted to enumerating what
-remains to be done, along with other notes, broken down into various broad
-categories.
-
-SPARC SunOS (aka Solaris)
--------------------------
-- An overview of this XFree86 port is available in README.Solaris.
-- The keyboard map code in hw/xfree86/os-support/sunos/sun_kbdEv.c needs
- to be extended to handle more than only the sun5 keyboard I targeted it
- for. Even for the sun5, the map is incomplete as several keys are not
- mapped. What is there is just barely usable.
-- On exit, the server will zero out /dev/fb, but that might not be the
- right thing to do for all primary adapters. This does however
- appear to emulate the behaviour of Sun's commercial servers. It also
- eliminates the need for output drivers to save and restore video memory
- contents. (They still need to save/restore the mode timing however.)
- This also chimes into a long-standing XFree86 policy to not save/restore
- video memory contents if the mode on entry is found to be non-VGA, a
- policy several existing drivers comply with.
-- The SBUS drivers (sunbw2, suncg14, suncg3, suncg6, sunffb, sunleo and
- suntcx), the common layer's SBUS code and the fbdev driver have all
- only been compile tested. There are likely to be Linux'isms within
- them that remain to be dealt with.
-- It still needs to be verified whether or not this work adversely
- affected support for ix86 Solaris.
-
-UltraSPARC Linux
-----------------
-- Although this code can be compiled using any Linux/SPARC64 kernel, it
- can only run successfully using 2.4.12 or later.
-- I haven't had time to sufficiently dig into XKB to properly configure it
- for sun5 keyboards. Given XFree86 on Linux/SPARC has been around for a
- while, it's likely someone has already done this, and I'd appreciate
- receiving a copy of a working XF86Config input section.
-
-PowerPC Linux
--------------
-- As mentioned above, kernel work is in progress to port this PCI scheme
- to Linux/PowerPC.
-- Aside from kernel work, the inX() and outX() definitions in compiler.h
- will need to be changed to do something akin to their SPARC definitions,
- i.e. consider their port argument to be a virtual address.
-
-Other Linux ports to multi-domain architectures
------------------------------------------------
-- Comments in os-support/bus/linuxPci.c document the kernel interface
- required to port these changes. In short, Linux ports, such as Alpha
- and mips, should follow SPARC and PowerPC's lead in providing support to
- mmap() PCI devices through their /proc/bus/pci pseudo-files and to treat
- such requests for host bridges as requests to mmap() space provided by
- these bridges.
-
-Other OS's
-----------
-- In the right hands, either linuxPci.c or sparcPci.c can be used as a
- guide for what would need to be done to port this scheme to other OS's.
- Perhaps the largest difference between the two (in terms of interface to
- the common layer) is that the SunOS port includes internally generated
- domain numbers in PCITAG's, whereas the Linux port doesn't need to. The
- remainder of the PCI code (which is OS-independent) can handle either
- scheme.
-- Required entry points are xf86GetPciDomain(), xf86MapDomainMemory(),
- xf86MapDomainIO() and xf86ReadDomainMemory(). Replacements for
- xf86BusAccWindowsFromOS(), xf86PciBusAccWindowsFromOS() and
- xf86AccResFromOS() might also be required.
-- Development of these changes has detected the fact that the XFree86 port
- to the PowerMax OS is broken, and has been for some time, i.e. since
- shortly after its introduction, back in the 3.9* days.
-
-SPARC PCI (OS-independent)
---------------------------
-- The "Simba" PCI-to-PCI bridge used in SPARC's does not implement VGA
- routing, as defined in the PCI specs. Fortunately, OpenPROM seems to
- always route VGA resources to the bus with PCI connectors, but this also
- causes the common layer to not mark any PCI adapter as primary.
-
-Multiple PCI domains (architecture- and OS-independent)
--------------------------------------------------------
-- This implementation assumes every host-to-PCI bridge provides access to
- a separate PCI domain. Each such domain provides three different
- "address" spaces: PCI configuration, I/O and memory. The
- implementation can also deal with situations where more than one PCI
- domain share (different subsets of) the same PCI configuration space. I
- have unconfirmed information that suggests it might be necessary to also
- allow the sharing of PCI memory spaces.
-- This implementation also assumes the CPU's physical address space
- includes the entirety of each domain's I/O and memory spaces. I know
- this'll need to be changed to deal with the so-called UniNorth bridge,
- found on PowerPC's, which allows access to only a subset of the memory
- space behind it.
-- Ideally, the common layer should mark as primary up to one PCI adapter
- per domain. This has yet to be done.
-- Something needs to be done about PCI master aborts on primary buses.
- For details on this, see my long-winded diatribe in sparcPci.c, and
- related comments in linuxPci.c. Suffice it to say here that I see the
- eventual implementation of host bridge drivers within XFree86 as
- unavoidable at this point.
-- DGA is broken on multi-domain platforms. The information passed to the
- client to locate the framebuffer still needs to be revised. The best way
- to deal with this is to change all drivers' OpenFramebuffer() function to
- call a common layer routine to set the device name and displacements to be
- returned to the DGA client.
-
-Output drivers
---------------
-Most drivers currently used on ix86 need(ed) source code changes.
-- Calls to xf86ReadBIOS() and xf86MapVidMem() were replaced with calls to
- xf86ReadDomainMemory() and xf86MapDomainMemory() respectively. Except
- for the "ati" and "atimisc" modules, this has already been done.
-- All ix86-style I/O port numbers need to be declared as an IOADDRESS, a
- type defined in xf86Pci.h as "unsigned long". Such port numbers also
- need to be offset by a displacement which is also defined as an
- IOADDRESS. Before a driver's PreInit() is called, the common layer
- makes this displacement available in ScrnInfoRec.domainIOBase. For
- single-domain architectures, such as ix86, domainIOBase will always be
- zero. Current use of vgaHWRec.PIOOffset has also been adjusted
- accordingly. Some drivers have been changed to keep a copy of this
- displacement in their private structure. Internally, an IOADDRESS is
- actually a pointer that has been recasted to an unsigned long, but the
- common layer "hides" this fact from the driver ABI, which means that I/O
- port numbers, as seen by drivers, remain as integers rather than
- addresses. Aside from the ati and atimisc modules, s3, sis and tseng
- are the only modules left whose I/O still needs to be converted (I've
- temporarily run out of steam).
-- Note that these conversions are not necessarily sufficient to produce
- drivers that will work on any given multi-domain architecture. A driver
- that, for example, had endianness problems, still does. But, at least,
- these conversions, along with the supporting common layer changes, make
- PCI drivers more widely amenable to porting.
-- rdinx(), wrinx(), modinx(), testrg(), testinx() and testinx2() are not
- given enough information to allow for the relocation of their I/O. They
- are consequently being deleted. The apm and ark drivers, the only
- remaining callers of the first three, have been changed to use local
- definitions instead. The last three (test*()) were already unused.
-- As a temporary measure, these changes completely disable ISA-style
- probing on SPARC's and PowerPC's. This means that driver calls to
- xf86MatchIsaInstances(), while still valid, will always return detection
- failure on SPARC's and PowerPC's. This will be dealt with when a more
- general master abort handling scheme is implemented.
-- I need to make a decision about the master abort issues mentionned above
- before I can convert the "ati" and "atimisc" modules. Consequently,
- these modules still need to be compiled with -DAVOID_CPIO on
- multi-domain architectures, and support for Mach64 variants as
- non-primary heads is not yet available.
-
-$XFree86$
diff --git a/hw/xfree86/doc/devel/Makefile.am b/hw/xfree86/doc/devel/Makefile.am
index eb8b1cb29..c9eca5eb3 100644
--- a/hw/xfree86/doc/devel/Makefile.am
+++ b/hw/xfree86/doc/devel/Makefile.am
@@ -2,8 +2,6 @@
# not installed on the system for end-users
EXTRA_DIST = \
- Domain.note \
- RAC.Notes \
Registry \
exa-driver.txt \
README.DRIcomp
diff --git a/hw/xfree86/doc/devel/RAC.Notes b/hw/xfree86/doc/devel/RAC.Notes
deleted file mode 100644
index 0aec9d795..000000000
--- a/hw/xfree86/doc/devel/RAC.Notes
+++ /dev/null
@@ -1,696 +0,0 @@
-I. Abstract
-===========
-
-Graphics devices are accessed thru ranges in I/O or memory space. While
-most modern graphics devices allow relocation of such ranges many of
-them still require the use of well established interfaces such as VGA
-memory and IO ranges or 8514/A IO ranges. Up to version 3.3 of
-XFree86 only a single graphics device could be driven. Therfore there
-was no need to address the issue of sharing such memory or I/O ranges
-among several devices. Starting with version 4.0 XFree86 is capable of
-driving more than one graphics interface in a multi-head environment.
-Therefore a mechanism needed to be designed which was capable of
-controlling the sharing the access to memory and I/O ranges. In this
-document we describe to use of the RAC (Resource Access Control)
-system in the XFree86 server which provides the service of controlling
-access to interface resources.
-
-II. Introduction
-================
-
-Terms and definitions:
-
-II.1. Bus
----------
-
-'Bus' is ambiguous as it is used for different things: It may refer to
-physical incompatible extension connectors in a computer system. The
-RAC system knows two such systems: The ISA bus and the PCI bus. (On
-the software level EISA, MC and VL buses are currently treated like
-ISA buses). 'Bus' may always refer to logically different entities on
-a single bus system which are connected via bridges. A PCI system may
-have several distinct PCI buses connecting each other by PCI-PCI
-bridges or to the host CPU by HOST-PCI bridges.
-
-Systems that host more than one bus system link these together using
-bridges. Bridges are a concern to RAC as they might block or pass
-specific resources. PCI-PCI bridges may be set up to pass VGA
-resources to the secondary bus. PCI-ISA buses pass any resources not
-decoded on the primary PCI bus to the ISA bus. This way VGA resources
-(although exclusive on the ISA bus) can be shared by ISA and PCI
-cards. Currently HOST-PCI bridges are not yet handled by RACY as they
-require specific drivers.
-
-II.2. Entity
-------------
-
-The smallest independently addressable unit on a system bus is
-referred to as an entity. So far we know ISA and PCI entities. PCI
-entities can be located on the PCI bus by an unique ID consisting of
-the bus, card and function number.
-
-II.3. Resource
---------------
-
- 'Resource' refers to a range of memory or I/O addresses an entity
-can decode.
-
-If a device is capable of disabling this decoding the resource is
-called sharable. For PCI devices a generic method is provided to
-control resource decoding. Other devices will have to provide a device
-specific function to control decoding.
-
-If the entity is capable of decoding this range at a different
-location this resource is considered relocatable. Resource which start
-at a specific address and occupy a single continuous range are called
-block resources.
-
-Alternatively resource addresses can be decoded in a way that they
-satisfy the condition:
-
- address & mask == base
-
-with base & mask == base. Resources addressed in such a way are
-considered sparse resources.
-
-
-II.4. Server States
-------------------
-
-The resource access control system knows two server states: the SETUP
-and the OPERATING state. The setup state is entered whenever a mode
-change takes place or the server exits or does VT switching. During
-this state any entity resource is under resource access control.
-During OPERATING state only those entities are controlled which
-actually have shared resources that conflict with others. The
-determination which entity is to be placed under RAC during OPERATING
-state takes place after ScreenInit() during the first server
-generation. This doesn't apply if only one screen is active: in this
-case no RAC is needed and the screen is simply left enabled while the
-server is active.
-
-
-III. Theory of operation
-========================
-
-III.1. General
---------------
-
-The common level has knowledge of generic access control mechanisms
-for devices on certain bus systems (currently the PCI bus) as well as
-of methods to enable or disable access to the buses
-itself. Furthermore it can access information on resources decoded by
-these devices and if necessary modify it.
-
-When first starting the Xserver collects all this information, saves
-it for restoration checks it for consistency and if necessary corrects
-it. Finally it disables all resources on a generic level prior to
-calling any driver function.
-
- The user should provide a device section in XF86Config for each
-graphics device installed in his system. Each such entity which is
-never to be used as X display device might be marked as inactive by
-adding the keyword "Inactive" to the device section.
-
-When the Probe() function of each driver is called the device sections
-are matched against the devices found in the system. The driver may
-probe devices at this stage that cannot be identified by using device
-independent methods. Access to all resources that can be controlled in
-a device independent way is disabled. The Probe() function should
-register all non-relocatable resources at this stage. If a resource
-conflict is found between exclusive resources the driver will fail
-immediately. Optionally the driver might specify an EntityInit(),
-EntityLeave() and EntityEnter() function.
-
-EntityInit() can be used to disable any shared resources that are not
-controlled by the generic access control functions. It is called prior
-to the PreInit phase regardless if an entity is active or not. When
-calling the EntityInit(), EntityEnter() and EntityLeave() functions
-the common level will disable access to all other entities on a
-generic level. Since the common level has no knowledge of device
-specific methods to disable access to resources it cannot be
-guaranteed that certain resources are not decoded by any other entity
-until the EntityInit() or EntityEnter() phase is finished. Device
-drivers should therefore register all those resources which they are
-going to disable. If these resources are never to be used by any
-driver function they may be flagged 'ResInit' so that they can be
-removed from the resource list after processing all EntityInit()
-functions. EntityEnter() should disable decoding of all resources
-which are not registered as exclusive and which are not handled by the
-generic access control in the common level. The difference to
-EntityInit() is that the latter one is only called once during
-lifetime of the server. It can therefore be used to set up variables
-prior to disabling resources. EntityLeave() should restore the
-original state when exiting the server or switching to a different vt.
-It also needs to disable device specific access functions if they need
-to be disabled on server exit or VT switch. The default state is to
-enable them before giving up the VT.
-
-In PreInit() phase each driver should check if any sharable resources
-it has registered during Probe() has been denied and take appropriate
-action which could simply be to fail. If it needs to access resources
-it has disabled during EntitySetup() it can do so provided it has
-registered these and will disable them before returning from
-PreInit(). This also applies to all other driver functions. Several
-functions are provided to request resource ranges, register these,
-correct PCI config space and add replacements for the generic access
-functions. Resources may be marked 'disabled' or 'unused' during
-OPERATING stage. Although these steps could also be performed in
-ScreenInit(), this is not desirable.
-
-Following PreInit() phase the common level determines if resource
-access control is needed. This is the case if more than one screen is
-used. If necessary the RAC wrapper module is loaded. In ScreenInit()
-the drivers can decide which operations need to be placed under
-RAC. Available are the frame buffer operations, the pointer operations
-and the colormap operations. Any operation that requires resources
-which might be disabled during OPERATING state should be set to use
-RAC. This can be specified separately for memory and IO resources.
-
-When ScreenInit() phase is done the common level will determine which
-shared resources are requested by more than one driver and set the
-access functions accordingly. This is done following these rules:
-
-a. The sharable resources registered by each entity are compared. if
- a resource is registered by more than one entity the entity will be
- marked to need to share this resources type (IO or MEM).
-
-b. A resource marked 'disabled' during OPERATING state will be ignored
- entirely.
-
-c. A resource marked 'unused' will only conflicts with an overlapping
- resource of an other entity if the second is actually in use during
- OPERATING state.
-
-d. If an 'unused' resource was found to conflict however the entity
- does not use any other resource of this type the entire resource
- type will be disabled for that entity.
-
-The driver has the choice among different ways to control access to
-certain resources:
-
-a. It can relay on the generic access functions. This is probably the
- most common case. Here the driver only needs to register any
- resource it is going to use.
-
-b. It can replace the generic access functions by driver specific
- ones. This will mostly be used in cases where no generic access
- functions are available. In this case the driver has to make sure
- these resources are disabled when entering the PreInit() stage.
- Since the replacement functions are registered in PreInit() the
- driver will have to enable these resources itself if it needs to
- access them during this state. The driver can specify if the
- replacement functions can control memory and/or I/O resources
- separately.
-
-c. The driver can enable resources itself when it needs them. Each
- driver function enabling them needs to disable them before it will
- return. This should be used if a resource which can be controlled
- in a device dependent way is only required during SETUP state. This
- way it can be marked 'unused' during OPERATING state.
-
-A resource which is decoded during OPERATING state however never
-accessed by the driver should be marked unused.
-
-Since access switching latencies are an issue during Xserver
-operation, the common level attempts to minimize the number of
-entities that need to be placed under RAC control. When a wrapped
-operation is called, the EnableAccess() function is called before
-control is passed on. EnableAccess() checks if a screen is under
-access control. If not it just establishes bus routing and returns. If
-the screen needs to be under access control, EnableAccess() determines
-which resource types (MEM,IO) are required. Then it tests if this
-access is already established. If so it simply returns. If not it
-disables the currently established access, fixes bus routing and
-enables access to all entities registered for this screen.
-
-Whenever a mode switch or a vt-switch is performed the common level
-will return to SETUP state.
-
-III.3. Resource Types
----------------------
-
-Resource have certain properties. When registering resources each
-range is accompanied by a flag consisting of the or'ed flags of the
-different properties the resource has. Each resource range may be
-classified according to
-
-- its physical properties ie. if it addresses
- memory (ResMem) or
- I/O space (ResIo),
-- if it addresses a
- block (ResBlock) or
- sparse (ResSparse)
- range,
-- its access properties.
-
-There are two known access properties:
-
-- ResExclusive
- for resources which may not be shared with any other device and
-- ResShared
- for resources which can be disabled and therefore can be shared.
-
-If it is desirable to test a resource against any type a generic
-access type 'ResAny' is provided. If this is set the resource will
-conflict with any resource of a different entity intersecting its
-range. Further it can be specified that a resource is decoded however
-never used during any stage (ResUnused) or during OPERATING state
-(ResUnusedOpr). A resource only visible during the init functions (ie.
-EntityInit(), EntityEnter() and EntityLeave() should be registered
-with the flag 'ResInit'. A resource that might conflict with
-background resource ranges may be flagged with 'ResBios'. This might
-be useful when registering resources ranges that were assigned by the
-system Bios.
-
-Several predefined resource lists are available for VGA and 8514/A
-resources in common/sf86Resources.h.
-
-IV. Available Functions
-=======================
-
-The functions provided for resource management will be listed in order
-of use in the driver.
-
-IV.1. Probe phase
------------------
-
-In this stage each driver detects those resources it is able to drive,
-creates an entity record for each of them, registers non-relocatable
-resources and allocates screens and adds the resources to screens.
-
-Two helper functions are provided for matching device sections in the
-XF86Config file to the devices:
-
- int xf86MatchPciInstances(const char *driverName, int vendorID,
- SymTabPtr chipsets, PciChipsets *PCIchipsets,
- GDevPtr *devList, int numDevs, DriverPtr drvp,
- int **foundEntities);
-
- int xf86MatchIsaInstances(const char *driverName, SymTabPtr chipsets,
- IsaChipsets *ISAchipsets, DriverPtr drvp,
- FindIsaDevProc FindIsaDevice, GDevPtr *devList,
- int numDevs, int **foundEntities);
-
-Both functions return the number of matched entities and their indices
-in foundEntities list.
-
-They make use of several sub functions which are also available on the
-driver level:
-
- Bool xf86ComparePciBusString(const char *busID, int bus,
- int device, int func);
-
-and
-
- Bool xf86ParseIsaBusString(const char *busID);
-
-are called to interpret the busID in the device section. The functions:
-
- int xf86ClaimPciSlot(int bus, int device, int func, DriverPtr drvp,
- int chipset, GDevPtr dev, Bool active);
-
- int xf86ClaimIsaSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool
- active);
-
-are used to allocate the entities and initialize their data
-structures. Both functions return the index of the newly allocated
-entity record or (-1) should the function fail. Before probing an ISA
-card
-
- Bool xf86IsPrimaryIsa();
-
-gets called to determine if the primary card was not detected on the
-PCI bus.
-
-Two helper functions are provided to aid configuring entities:
-
- Bool xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
- PciChipsets *p_chip, resList res,
- EntityProc init, EntityProc enter,
- EntityProc leave, pointer private);
- Bool xf86ConfigActiveIsaEntity(ScrnInfoPtr pScrn, int entityIndex,
- IsaChipsets *i_chip, resList res,
- EntityProc init, EntityProc enter,
- EntityProc leave, pointer private);
-
-They are used to register the init/enter/leave functions described
-above as well as the non-relocatable resources. Generally the list of
-fixed resources is obtained from the Isa/PciChipsets lists. However
-an additional list of resources may be passed. Generally this is not
-required. The init/enter/leave functions have to be of type
-
- typedef void (*EntityProc)(int entityIndex,pointer private);
-
-They are passed the entity index and a pointer to a private scratch
-area. This are can be set up during Probe() and its address can be
-passed to xf86ConfigActiveIsaEntity() xf86ConfigActivePciEntity() as
-the last argument.
-
-These helper functions use:
-
- void xf86ClaimFixedResources(resList list, int entityIndex);
-
- To register the non relocatable resources which cannot be disabled
- and which therefore would cause the server to fail immediately if
- they were found to conflict. It also records non-relocatable but
- sharable resources for processing after the Probe() phase.
-
- Bool xf86SetEntityFuncs(int entityIndex, EntityProc init,
- EntityProc enter, EntityProc leave, pointer);
-
- This function registers the init/enter/leave() functions along with
- the pointer to their private area to the entity.
-
- void xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex);
-
- adds the entity to the screen.
-
-These functions are also available on the driver level. A detailed
-Probe() function is listed below. For most drivers this can be used
-with little change.
-
-Please note that VGA resources have to be claimed in Probe()
-phase. Otherwise they are not routed to the bus.
-
-IV.2. PreInit() phase
----------------------
-
-During this phase the remaining resource should be registered.
-PreInit() should call
-
- EntityInfoPtr xf86GetEntityInfo(int entityIndex);
-
-To obtain a pointer to an EntityInfoRec for each entity it is able to
-drive and check if any resource are listed in 'resources'. These have
-been rejected in the post-Probe() phase. The driver should decide if
-it can continue without using these or if it should fail. The pointer
-to the EntityInfoRec should be freed if not needed any more.
-
-Several functions are provided to simplify resource registration:
-
- Bool xf86IsEntityPrimary(int entityIndex);
-
-is used to determine if the entity is the display device that is used
-during boot-up and text mode.
-
- Bool xf86IsScreenPrimary(int scrnIndex);
-
-finds out if the primary entity is registered for the screen with
-specified index.
-
- pciVideoPtr xf86GetPciInfoForEntity(int entityIndex);
-
-returns a pointer to the pciVideoRec of the specified entity. If the
-entity is not a PCI device NULL is returned.
-
-The primary function for registration of resources is
-
- resPtr xf86RegisterResources(int entityIndex, resList list, int access);
-
-it tries to register the resources in 'list'. If list is NULL it tries
-to determine the resources automatically. This only works for entities
-that provide a generic way to read out the resource ranges they
-decode. So far this is only the case for PCI devices. By default the
-PCI resources are registered as shared (ResShared) if the driver wants
-to set a different access type it can do so by specifying the access
-flags in the third argument. A value of 0 means to use the default
-settings. If for any reason the resource broker is not able to
-register some of the requested resources the function will return a
-pointer to a list of the failed ones. In this case the driver may move
-the resource to different locations. In case of PCI bus entities this
-is done by passing the list of failed resources to
-
- resPtr xf86ReallocatePciResources(int entityIndex, resPtr pRes);
-
-this function returns a list of reallocated resource. This list needs
-to be passed to xf86RegisterResources() again to be registered with
-the broker.
-
-Two functions are provided to obtain a resource range of a given type:
-
- resRange xf86GetBlock(long type, memType size,
- memType window_start, memType window_end,
- memType align_mask, resPtr avoid);
- resRange xf86GetSparse(long type, unsigned long fixed_bits,
- unsigned long decode_mask, unsigned long address_mask,
- resPtr avoid);
-
-The first one tries to find a block range of size 'size' and type
-'type' in a window bound by window_start and window_end with the
-alignment specified in alignment mask. Optionally a list of resource
-ranges which should be avoided inside this window can be passed. On
-failure it will return a zero range of type 'ResEnd'.
-
-The latter function does the same for sparse resources. A spares range
-is determined by to parameters: the mask and the base value. An
-address satisfying
-
- mask & address == base
-
-belongs to the specific spares range. 'mask' and 'base' themselves
-have to satisfy:
-
- mask & base == base.
-
-Here three values have to be specified: the address mask which marks
-all bits of the mask part of the address, the decode_mask which masks
-out the bits which are hard coded and are therefore not available for
-relocation and the values of the fixed bits. The function tries to
-find a base that satisfies the given condition. If the function fails
-it will return a zero range of type 'ResEnd'. Optionally it might be
-passed a list of resource ranges to avoid.
-
-Certain PCI devices are broken in the sense that they return invalid
-size information for a certain resource. In this case the driver can
-supply the correct size and make sure that the resource range
-allocated for the card is large enough to hold the address range
-decoded by the card. The function:
-
- Bool xf86FixPciResource(int entityIndex, unsigned int prt, CARD32 alignment,
- long type);
-
-is used for that. The parameter prt contains the number of the PCI
-base register that needs to be modified. A value of 6 refers to the
-BIOS base register. The size is specified in the alignment
-register. Since PCI resources need to span an integral range of the
-size 2^n the alignment also specifies the number of addresses that
-will be decoded. If the driver specifies a type mask it can override
-the default type for PCI resources which is 'ResShared'. The resource
-broker needs to know that to find a matching resource range. This
-function should be called before calling xf86RegisterResources().
-
- Bool xf86CheckPciMemBase(pciVideoPtr pPci, unsigned long base);
-
-checks that the memory base value specified in base matches one of the
-PCI base address register values for the given PCI device.
-
-The driver may replace the generic access control functions for an
-entity by it's own ones.
-
- void xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
- xf86SetAccessFuncPtr oldFuncs);
-
- with:
-
- typedef struct {
- xf86AccessPtr mem;
- xf86AccessPtr io;
- xf86AccessPtr io_mem;
- } xf86SetAccessFuncRec, *xf86SetAccessFuncPtr;
-
-is used for that. The driver can pass three functions: one for I/O
-access, one for memory access and one for combined memory and I/O
-access. If the memory access and combined access functions are
-identical the common level assumes that the memory access cannot be
-controlled independently of I/O access, if the I/O access function and
-the combined access functions are the same it is assumed that I/O can
-not be controlled independently. If memory and I/O have to be
-controlled together all three values should be the same. If a non
-NULL value is passed as third argument it is interpreted as an address
-where to store the old access records. If the third argument is NULL
-it will be assumed that the generic access should be enabled before
-replacing the access functions. Otherwise it will be disabled. The
-driver may enable them itself using the returned values. It should do
-this from his replacement access functions as the generic access may
-be disabled by the common level on certain occasions. If replacement
-functions are specified they must control all resources of the
-specific type registered for the entity.
-
-To find out if specific resource range is conflicting with another
-resource
-
- memType xf86ChkConflict(resRange *rgp, int entityIndex);
-
-may be called. If a non-zero value is returned a conflict is found.
-
- resPtr xf86SetOperatingState(resList list, int entityIndex, int mask);
-
-is used to set the state of a resource during OPERATING state. 'list'
-holds a list to which 'mask' is to be applied. The parameter 'mask'
-may have the value 'ResUnusedOpr' and 'ResDisableOpr'. The first one
-should be used if a resource isn't used during OPERATING state however
-decoded by the device while the latter one indicates that the resource
-is not decoded during OPERATING state. Note that the resource ranges
-have to match those specified during registration. If a range has been
-specified starting at A and ending at B and suppose C us a value
-satisfying A < C < B one may not specify the resource range (A,B) by
-splitting it into two ranges (A,C) and (C,B).
-
-Two functions are provided for special cases:
-
- void xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex);
-
-may be used to remove an entity from a screen. This only makes sense
-if a screen has more than one entity assigned or the screen is to be
-deleted. No test is made if the screen has any entities left.
-
- void xf86DeallocateResourcesForEntity(int entityIndex, long type);
-
-deallocates all resources of a given type registered for a certain
-entity from the resource broker list.
-
-IV.3. ScreenInit() phase
-------------------------
-
-Setting up the rac flags is all that remains to do in ScreenInit()
-phase (Note that these flags might also be set up in PreInit() phase).
-The ScrnInfoRec has separate flags for memory and PIO access:
-racIoFlags and racMemFlags. They specifies which graphics operations
-might require the use of resources which might be disabled for some
-reason. Note that even exclusive resources might be disabled if they
-are disabled along with shared resources. For example if a driver has
-registered the VGA PIO resources and lets the common level disable
-these by disabling PIO access in PCI config space (the standard way),
-exclusive PCI PIO ranges will also be disabled. Therefore the driver
-has to flag any operations requiring PCI PIO resources in racIoFlags.
-The avaliable flags are defined in rac/xf86RAC.h. Available are:
-
- RAC_FB for framebuffer operations (including hw acceleration)
- RAC_CURSOR for Cursor operations
- (??? I'm not sure if we need this for SW cursor it depends
- on which level the sw cursor is drawn)
- RAC_COLORMAP for colormap operations
- RAC_VIEWPORT for the call to RACAdjustFrame()
-
-The flags are or'ed.
-
-V. Appendix
-===========
-
-A. Sample Probe() Function
---------------------------
-
-static Bool
-XXXProbe(DriverPtr drv, int flags)
-{
- Bool foundScreen = FALSE;
- int numDevSections, numUsed;
- GDevPtr *devSections;
- int *usedChips;
- int i;
-
- /*
- * Find the config file Device sections that match this
- * driver, and return if there are none.
- */
- if ((numDevSections = xf86MatchDevice(CHIPS_DRIVER_NAME,
- &devSections)) <= 0) {
- return FALSE;
- }
- /* PCI BUS */
- /* test if PCI bus present */
- if (xf86GetPciVideoInfo() ) {
- /* match PCI instances with ones supported by the driver */
- numUsed = xf86MatchPciInstances(XXX_NAME, PCI_VENDOR_XXX,
- XXXChipsets, XXXPCIchipsets,
- devSections,numDevSections, drv,
- &usedChips);
- if (numUsed > 0) {
- for (i = 0; i < numUsed; i++) {
- /* Allocate a ScrnInfoRec */
- ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0);
- pScrn->driverVersion = VERSION;
- pScrn->driverName = XXX_DRIVER_NAME;
- pScrn->name = XXX_NAME;
- pScrn->Probe = XXXProbe;
- pScrn->PreInit = XXXPreInit;
- pScrn->ScreenInit = XXXScreenInit;
- pScrn->SwitchMode = XXXSwitchMode;
- pScrn->AdjustFrame = XXXAdjustFrame;
- pScrn->EnterVT = XXXEnterVT;
- pScrn->LeaveVT = XXXLeaveVT;
- pScrn->FreeScreen = XXXFreeScreen;
- pScrn->ValidMode = XXXValidMode;
- foundScreen = TRUE;
- /* add screen to entity */
- xf86ConfigActivePciEntity(pScrn,usedChips[i],XXXPCIchipsets,
- NULL,NULL,NULL,NULL,NULL);
- }
- }
- }
-
- /* Isa Bus */
- numUsed = xf86MatchIsaInstances(XXX_NAME,XXXChipsets,XXXISAchipsets,
- drv,chipsFindIsaDevice,devSections,
- numDevSections,&usedChips);
- if(numUsed >= 0)
- for (i = 0; i < numUsed; i++) {
- ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0);
-
- pScrn->driverVersion = VERSION;
- pScrn->driverName = XXX_DRIVER_NAME;
- pScrn->name = XXX_NAME;
- pScrn->Probe = XXXProbe;
- pScrn->PreInit = XXXPreInit;
- pScrn->ScreenInit = XXXScreenInit;
- pScrn->SwitchMode = XXXSwitchMode;
- pScrn->AdjustFrame = XXXAdjustFrame;
- pScrn->EnterVT = XXXEnterVT;
- pScrn->LeaveVT = XXXLeaveVT;
- pScrn->FreeScreen = XXXFreeScreen;
- pScrn->ValidMode = XXXValidMode;
- foundScreen = TRUE;
- xf86ConfigActiveIsaEntity(pScrn,usedChips[i],XXXISAchipsets,
- NULL,NULL,NULL,NULL,NULL);
- }
- xfree(devSections);
- return foundScreen;
-}
-
-B. Porting Issues
------------------
-
-Here are some hints on porting code developed for RAC 1 to RAC 2.
-
-1. a. Initialization of RAC is now entirely done on the common level.
- Therefore the call to xf86RACInit() can be removed.
-
- b. Also there is no need for the racSymbols list.
-
- c. LoadSubModule(..,rac) should be removed.
-
- d. racSymbols should be removed from LoaderRequestSymList(racSymbols,..)
-
-2. a. if the driver uses the predefined resource lists xf86Resources.h
- needs to be included.
-
- b. RES_VGA should be changed to RES_EXCLUSIVE_VGA
-
-3. The device list now belongs to the EntityInfoRec.
- Change pScrn->device to xxx->pEnt->device.
-
-4. Rewrite the Probe() function. The example given above should work
- as a guideline.
-
-5. Register all necessary resources in PreInit() by calling
- xf86RegisterResources().
-
-6. If applicable set the operating state of the registered resources
- by calling xf86SetOperatingState(). This should be done during
- PreInit(). If necessary it might still be done in ScreenInit()
-
-7. Set up the racIoFlags and racMemFlags.
-
-
- LocalWords: ISA
diff --git a/hw/xfree86/doc/man/Xorg.man.pre b/hw/xfree86/doc/man/Xorg.man.pre
index e0db08616..2f9ff98c7 100644
--- a/hw/xfree86/doc/man/Xorg.man.pre
+++ b/hw/xfree86/doc/man/Xorg.man.pre
@@ -134,7 +134,7 @@ will use. Without this option,
.B __xservername__
will pick the first available Virtual Terminal that it can locate. This
option applies only to platforms that have virtual terminal support, such
-as Linux, BSD, SVR3, and SVR4.
+as Linux, BSD, OpenSolaris, SVR3, and SVR4.
.TP
.B \-allowMouseOpenFail
Allow the server to start up even if the mouse device can't be opened
@@ -313,10 +313,6 @@ file verbosity level. When the
value is supplied, the log file verbosity level is set to that value.
The default log file verbosity level is 3.
.TP 8
-.B \-modalias
-Print a list of device ids each installed driver module claims to support,
-in a format similar to Linux modalias.
-.TP 8
.BI \-modulepath " searchpath"
Set the module search path to
.IR searchpath .
@@ -356,11 +352,6 @@ section and this option, the first relevant
.B InputDevice
section is used for the core pointer.
.TP 8
-.B \-probeonly
-Causes the server to exit after the device probing stage. The
-__xconfigfile__(__filemansuffix__) file is still used when this option is
-given, so information that can be auto-detected should be commented out.
-.TP 8
.B \-quiet
Suppress most informational messages at startup. The verbosity level
is set to zero.
diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
index fbb2c6b73..634805a69 100644
--- a/hw/xfree86/doc/man/xorg.conf.man.pre
+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
@@ -1389,11 +1389,10 @@ This option controls whether the video card should drive the sync signal
on the green color pin. Not all cards support this option, and most
monitors do not require it. The default is off.
.TP 7
-.BI "Option " "\*qTargetRefresh\*q " \*qrate\*q
-This optional entry specifies the vertical refresh rate that the server
-should aim for when selecting video modes. Without this option, the
-default is to prefer modes with higher refresh rates.
-.TP 7
+.BI "Option " "\*qPrimary\*q " \*qbool\*q
+This optional entry specifies that the monitor should be treated as the primary
+monitor. (RandR 1.2-supporting drivers only)
+.TP7
.BI "Option " "\*qPreferredMode\*q " \*qstring\*q
This optional entry specifies a mode to be marked as the preferred initial mode
of the monitor.
diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c
index 3af9878d5..d32b284ed 100644
--- a/hw/xfree86/dri/dri.c
+++ b/hw/xfree86/dri/dri.c
@@ -69,6 +69,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "mipointer.h"
#include "xf86_OSproc.h"
#include "inputstr.h"
+#include "xf86VGAarbiter.h"
#define PCI_BUS_NO_DOMAIN(bus) ((bus) & 0xffu)
@@ -333,6 +334,12 @@ DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
return FALSE;
}
+ if (!xf86VGAarbiterAllowDRI(pScreen)) {
+ DRIDrvMsg(pScreen->myNum, X_WARNING,
+ "Direct rendering is not supported when VGA arb is necessary for the device\n");
+ return FALSE;
+ }
+
/*
* If Xinerama is on, don't allow DRI to initialise. It won't be usable
* anyway.
diff --git a/hw/xfree86/dri/xf86dri.c b/hw/xfree86/dri/xf86dri.c
index 902fe1264..d3e5e688a 100644
--- a/hw/xfree86/dri/xf86dri.c
+++ b/hw/xfree86/dri/xf86dri.c
@@ -214,8 +214,8 @@ ProcXF86DRIOpenConnection(
rep.busIdStringLength = 0;
if (busIdString)
rep.busIdStringLength = strlen(busIdString);
- rep.length = (SIZEOF(xXF86DRIOpenConnectionReply) - SIZEOF(xGenericReply) +
- ((rep.busIdStringLength + 3) & ~3)) >> 2;
+ rep.length = bytes_to_int32(SIZEOF(xXF86DRIOpenConnectionReply) - SIZEOF(xGenericReply) +
+ pad_to_int32(rep.busIdStringLength));
rep.hSAREALow = (CARD32)(hSAREA & 0xffffffff);
#if defined(LONG64) && !defined(__linux__)
@@ -300,9 +300,9 @@ ProcXF86DRIGetClientDriverName(
rep.clientDriverNameLength = 0;
if (clientDriverName)
rep.clientDriverNameLength = strlen(clientDriverName);
- rep.length = (SIZEOF(xXF86DRIGetClientDriverNameReply) -
+ rep.length = bytes_to_int32(SIZEOF(xXF86DRIGetClientDriverNameReply) -
SIZEOF(xGenericReply) +
- ((rep.clientDriverNameLength + 3) & ~3)) >> 2;
+ pad_to_int32(rep.clientDriverNameLength));
WriteToClient(client,
sizeof(xXF86DRIGetClientDriverNameReply), (char *)&rep);
@@ -515,7 +515,7 @@ ProcXF86DRIGetDrawableInfo(
rep.length += sizeof(drm_clip_rect_t) * rep.numClipRects;
}
- rep.length = ((rep.length + 3) & ~3) >> 2;
+ rep.length = bytes_to_int32(rep.length);
WriteToClient(client, sizeof(xXF86DRIGetDrawableInfoReply), (char *)&rep);
@@ -574,9 +574,9 @@ ProcXF86DRIGetDeviceInfo(
rep.length = 0;
if (rep.devPrivateSize) {
- rep.length = (SIZEOF(xXF86DRIGetDeviceInfoReply) -
+ rep.length = bytes_to_int32(SIZEOF(xXF86DRIGetDeviceInfoReply) -
SIZEOF(xGenericReply) +
- ((rep.devPrivateSize + 3) & ~3)) >> 2;
+ pad_to_int32(rep.devPrivateSize));
}
WriteToClient(client, sizeof(xXF86DRIGetDeviceInfoReply), (char *)&rep);
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 385c5e8d4..d15ced112 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -39,6 +39,7 @@
#include "scrnintstr.h"
#include "windowstr.h"
#include "dri2.h"
+#include "xf86VGAarbiter.h"
#include "xf86.h"
@@ -63,6 +64,7 @@ typedef struct _DRI2Screen {
const char *deviceName;
int fd;
unsigned int lastSequence;
+
DRI2CreateBufferProcPtr CreateBuffer;
DRI2DestroyBufferProcPtr DestroyBuffer;
DRI2CopyRegionProcPtr CopyRegion;
@@ -133,17 +135,17 @@ DRI2CreateDrawable(DrawablePtr pDraw)
}
static int
-find_attachment(DRI2BufferPtr *buffer_list, int count, unsigned attachment)
+find_attachment(DRI2DrawablePtr pPriv, unsigned attachment)
{
int i;
- if (buffer_list == NULL) {
+ if (pPriv->buffers == NULL) {
return -1;
}
- for (i = 0; i < count; i++) {
- if ((buffer_list[i] != NULL)
- && (buffer_list[i]->attachment == attachment)) {
+ for (i = 0; i < pPriv->bufferCount; i++) {
+ if ((pPriv->buffers[i] != NULL)
+ && (pPriv->buffers[i]->attachment == attachment)) {
return i;
}
}
@@ -160,7 +162,7 @@ allocate_or_reuse_buffer(DrawablePtr pDraw, DRI2ScreenPtr ds,
DRI2BufferPtr buffer;
int old_buf;
- old_buf = find_attachment(pPriv->buffers, pPriv->bufferCount, attachment);
+ old_buf = find_attachment(pPriv, attachment);
if ((old_buf < 0)
|| !dimensions_match
@@ -186,10 +188,18 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
int need_fake_front = 0;
int have_fake_front = 0;
int front_format = 0;
- const int dimensions_match = (pDraw->width == pPriv->width)
- && (pDraw->height == pPriv->height);
+ int dimensions_match;
int i;
+ if (!pPriv) {
+ *width = pDraw->width;
+ *height = pDraw->height;
+ *out_count = 0;
+ return NULL;
+ }
+
+ dimensions_match = (pDraw->width == pPriv->width)
+ && (pDraw->height == pPriv->height);
buffers = xalloc((count + 1) * sizeof(buffers[0]));
@@ -200,7 +210,6 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
buffers[i] = allocate_or_reuse_buffer(pDraw, ds, pPriv, attachment,
format, dimensions_match);
-
/* If the drawable is a window and the front-buffer is requested,
* silently add the fake front-buffer to the list of requested
* attachments. The counting logic in the loop accounts for the case
@@ -254,7 +263,6 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
xfree(pPriv->buffers);
}
-
pPriv->buffers = buffers;
pPriv->bufferCount = *out_count;
pPriv->width = pDraw->width;
@@ -318,13 +326,13 @@ DRI2CopyRegion(DrawablePtr pDraw, RegionPtr pRegion,
for (i = 0; i < pPriv->bufferCount; i++)
{
if (pPriv->buffers[i]->attachment == dest)
- pDestBuffer = pPriv->buffers[i];
+ pDestBuffer = (DRI2BufferPtr) pPriv->buffers[i];
if (pPriv->buffers[i]->attachment == src)
- pSrcBuffer = pPriv->buffers[i];
+ pSrcBuffer = (DRI2BufferPtr) pPriv->buffers[i];
}
if (pSrcBuffer == NULL || pDestBuffer == NULL)
return BadValue;
-
+
(*ds->CopyRegion)(pDraw, pRegion, pDestBuffer, pSrcBuffer);
return Success;
@@ -341,7 +349,7 @@ DRI2DestroyDrawable(DrawablePtr pDraw)
pPriv = DRI2GetDrawable(pDraw);
if (pPriv == NULL)
return;
-
+
pPriv->refCount--;
if (pPriv->refCount > 0)
return;
@@ -349,9 +357,8 @@ DRI2DestroyDrawable(DrawablePtr pDraw)
if (pPriv->buffers != NULL) {
int i;
- for (i = 0; i < pPriv->bufferCount; i++) {
+ for (i = 0; i < pPriv->bufferCount; i++)
(*ds->DestroyBuffer)(pDraw, pPriv->buffers[i]);
- }
xfree(pPriv->buffers);
}
@@ -405,20 +412,23 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
{
DRI2ScreenPtr ds;
- ds = xalloc(sizeof *ds);
- if (!ds)
+ if (info->version < 3)
return FALSE;
- if ((info->version < 2)
- || (info->CreateBuffer == NULL)
- || (info->DestroyBuffer == NULL)) {
- return FALSE;
+ if (!xf86VGAarbiterAllowDRI(pScreen)) {
+ xf86DrvMsg(pScreen->myNum, X_WARNING,
+ "[DRI2] Direct rendering is not supported when VGA arb is necessary for the device\n");
+ return FALSE;
}
+ ds = xalloc(sizeof *ds);
+ if (!ds)
+ return FALSE;
ds->fd = info->fd;
ds->driverName = info->driverName;
ds->deviceName = info->deviceName;
+
ds->CreateBuffer = info->CreateBuffer;
ds->DestroyBuffer = info->DestroyBuffer;
ds->CopyRegion = info->CopyRegion;
diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h
index b3d02a99e..175471aae 100644
--- a/hw/xfree86/dri2/dri2.h
+++ b/hw/xfree86/dri2/dri2.h
@@ -35,6 +35,7 @@
#include <X11/extensions/dri2tokens.h>
+/* Version 2 structure (with format at the end) */
typedef struct {
unsigned int attachment;
unsigned int name;
@@ -45,6 +46,8 @@ typedef struct {
void *driverPrivate;
} DRI2BufferRec, *DRI2BufferPtr;
+typedef DRI2BufferRec DRI2Buffer2Rec, *DRI2Buffer2Ptr;
+
typedef DRI2BufferPtr (*DRI2CreateBuffersProcPtr)(DrawablePtr pDraw,
unsigned int *attachments,
int count);
@@ -68,7 +71,7 @@ typedef void (*DRI2DestroyBufferProcPtr)(DrawablePtr pDraw,
/**
* Version of the DRI2InfoRec structure defined in this header
*/
-#define DRI2INFOREC_VERSION 2
+#define DRI2INFOREC_VERSION 3
typedef struct {
unsigned int version; /**< Version of this struct */
@@ -76,18 +79,10 @@ typedef struct {
const char *driverName;
const char *deviceName;
- DRI2CreateBuffersProcPtr CreateBuffers;
- DRI2DestroyBuffersProcPtr DestroyBuffers;
- DRI2CopyRegionProcPtr CopyRegion;
- DRI2WaitProcPtr Wait;
-
- /**
- * \name Fields added in version 2 of the structure.
- */
- /*@{*/
DRI2CreateBufferProcPtr CreateBuffer;
DRI2DestroyBufferProcPtr DestroyBuffer;
- /*@}*/
+ DRI2CopyRegionProcPtr CopyRegion;
+ DRI2WaitProcPtr Wait;
} DRI2InfoRec, *DRI2InfoPtr;
diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
index 029dce84e..72f9a448b 100644
--- a/hw/xfree86/dri2/dri2ext.c
+++ b/hw/xfree86/dri2/dri2ext.c
@@ -53,10 +53,10 @@ static ExtensionEntry *dri2Extension;
static RESTYPE dri2DrawableRes;
static Bool
-validDrawable(ClientPtr client, XID drawable,
+validDrawable(ClientPtr client, XID drawable, Mask access_mode,
DrawablePtr *pDrawable, int *status)
{
- *status = dixLookupDrawable(pDrawable, drawable, client, 0, DixReadAccess);
+ *status = dixLookupDrawable(pDrawable, drawable, client, 0, access_mode);
if (*status != Success) {
client->errorValue = drawable;
return FALSE;
@@ -105,7 +105,8 @@ ProcDRI2Connect(ClientPtr client)
const char *deviceName;
REQUEST_SIZE_MATCH(xDRI2ConnectReq);
- if (!validDrawable(client, stuff->window, &pDraw, &status))
+ if (!validDrawable(client, stuff->window, DixGetAttrAccess,
+ &pDraw, &status))
return status;
rep.type = X_Reply;
@@ -140,7 +141,8 @@ ProcDRI2Authenticate(ClientPtr client)
int status;
REQUEST_SIZE_MATCH(xDRI2AuthenticateReq);
- if (!validDrawable(client, stuff->window, &pDraw, &status))
+ if (!validDrawable(client, stuff->window, DixGetAttrAccess,
+ &pDraw, &status))
return status;
rep.type = X_Reply;
@@ -161,7 +163,8 @@ ProcDRI2CreateDrawable(ClientPtr client)
REQUEST_SIZE_MATCH(xDRI2CreateDrawableReq);
- if (!validDrawable(client, stuff->drawable, &pDrawable, &status))
+ if (!validDrawable(client, stuff->drawable, DixAddAccess,
+ &pDrawable, &status))
return status;
status = DRI2CreateDrawable(pDrawable);
@@ -184,7 +187,8 @@ ProcDRI2DestroyDrawable(ClientPtr client)
int status;
REQUEST_SIZE_MATCH(xDRI2DestroyDrawableReq);
- if (!validDrawable(client, stuff->drawable, &pDrawable, &status))
+ if (!validDrawable(client, stuff->drawable, DixRemoveAccess,
+ &pDrawable, &status))
return status;
FreeResourceByType(stuff->drawable, dri2DrawableRes, FALSE);
@@ -250,7 +254,8 @@ ProcDRI2GetBuffers(ClientPtr client)
unsigned int *attachments;
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * 4);
- if (!validDrawable(client, stuff->drawable, &pDrawable, &status))
+ if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
+ &pDrawable, &status))
return status;
attachments = (unsigned int *) &stuff[1];
@@ -273,7 +278,8 @@ ProcDRI2GetBuffersWithFormat(ClientPtr client)
unsigned int *attachments;
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * (2 * 4));
- if (!validDrawable(client, stuff->drawable, &pDrawable, &status))
+ if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
+ &pDrawable, &status))
return status;
attachments = (unsigned int *) &stuff[1];
@@ -296,7 +302,8 @@ ProcDRI2CopyRegion(ClientPtr client)
REQUEST_SIZE_MATCH(xDRI2CopyRegionReq);
- if (!validDrawable(client, stuff->drawable, &pDrawable, &status))
+ if (!validDrawable(client, stuff->drawable, DixWriteAccess,
+ &pDrawable, &status))
return status;
VERIFY_REGION(pRegion, stuff->region, client, DixReadAccess);
diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c
index 3eee070b8..00ebd6b39 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/hw/xfree86/fbdevhw/fbdevhw.c
@@ -17,16 +17,10 @@
#include "fbdevhw.h"
#include "fbpriv.h"
-#if 0
-/* kernel header doesn't work with -ansi */
-# include "asm/page.h" /* #define for PAGE_* */
-#else
-# define PAGE_MASK (~(getpagesize() - 1))
-#endif
+#define PAGE_MASK (~(getpagesize() - 1))
#include "globals.h"
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
#define DEBUG 0
@@ -65,20 +59,7 @@ _X_EXPORT XF86ModuleData fbdevhwModuleData = {
static pointer
fbdevhwSetup(pointer module, pointer opts, int *errmaj, int *errmin)
{
- const char *osname;
-
- /* Check that we're being loaded on a Linux system */
- LoaderGetOS(&osname, NULL, NULL, NULL);
- if (!osname || strcmp(osname, "linux") != 0) {
- if (errmaj)
- *errmaj = LDR_BADOS;
- if (errmin)
- *errmin = 0;
- return NULL;
- } else {
- /* OK */
- return (pointer)1;
- }
+ return (pointer)1;
}
#include <fcntl.h>
@@ -234,10 +215,8 @@ xfree2fbdev_timing(DisplayModePtr mode, struct fb_var_screeninfo *var)
var->sync |= FB_SYNC_VERT_HIGH_ACT;
if (mode->Flags & V_PCSYNC)
var->sync |= FB_SYNC_COMP_HIGH_ACT;
-#if 1 /* Badly needed for PAL/NTSC on Amiga (amifb)!! [geert] */
if (mode->Flags & V_BCAST)
var->sync |= FB_SYNC_BROADCAST;
-#endif
if (mode->Flags & V_INTERLACE)
var->vmode = FB_VMODE_INTERLACED;
else if (mode->Flags & V_DBLSCAN)
@@ -281,10 +260,8 @@ fbdev2xfree_timing(struct fb_var_screeninfo *var, DisplayModePtr mode)
mode->Flags |= var->sync & FB_SYNC_HOR_HIGH_ACT ? V_PHSYNC : V_NHSYNC;
mode->Flags |= var->sync & FB_SYNC_VERT_HIGH_ACT ? V_PVSYNC : V_NVSYNC;
mode->Flags |= var->sync & FB_SYNC_COMP_HIGH_ACT ? V_PCSYNC : V_NCSYNC;
-#if 1 /* Badly needed for PAL/NTSC on Amiga (amifb)!! [geert] */
if (var->sync & FB_SYNC_BROADCAST)
mode->Flags |= V_BCAST;
-#endif
if ((var->vmode & FB_VMODE_MASK) == FB_VMODE_INTERLACED)
mode->Flags |= V_INTERLACE;
else if ((var->vmode & FB_VMODE_MASK) == FB_VMODE_DOUBLE)
@@ -343,10 +320,9 @@ fbdev_open_pci(struct pci_device * pPci, char **namep)
return fd;
}
+ close(fd);
}
}
-
- close(fd);
}
diff --git a/hw/xfree86/int10/helper_exec.c b/hw/xfree86/int10/helper_exec.c
index 94b3d2d9c..6ba647f89 100644
--- a/hw/xfree86/int10/helper_exec.c
+++ b/hw/xfree86/int10/helper_exec.c
@@ -644,7 +644,6 @@ bios_checksum(const CARD8 *start, int size)
void
LockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga)
{
- xf86SetCurrentAccess(FALSE, xf86Screens[pInt->scrnIndex]);
vga->save_msr = inb(pInt->ioBase + 0x03CC);
vga->save_vse = inb(pInt->ioBase + 0x03C3);
#ifndef __ia64__
@@ -657,20 +656,17 @@ LockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga)
outb(pInt->ioBase + 0x46E8, ~(CARD8)0x08 & vga->save_46e8);
#endif
outb(pInt->ioBase + 0x0102, ~(CARD8)0x01 & vga->save_pos102);
- xf86SetCurrentAccess(TRUE, xf86Screens[pInt->scrnIndex]);
}
void
UnlockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga)
{
- xf86SetCurrentAccess(FALSE, xf86Screens[pInt->scrnIndex]);
outb(pInt->ioBase + 0x0102, vga->save_pos102);
#ifndef __ia64__
outb(pInt->ioBase + 0x46E8, vga->save_46e8);
#endif
outb(pInt->ioBase + 0x03C3, vga->save_vse);
outb(pInt->ioBase + 0x03C2, vga->save_msr);
- xf86SetCurrentAccess(TRUE, xf86Screens[pInt->scrnIndex]);
}
#if defined (_PC)
diff --git a/hw/xfree86/loader/loader.c b/hw/xfree86/loader/loader.c
index 47c8c2e7f..6a4c08916 100644
--- a/hw/xfree86/loader/loader.c
+++ b/hw/xfree86/loader/loader.c
@@ -117,11 +117,6 @@ _LoaderListPop(int handle)
void
LoaderInit(void)
{
- char *ld_bind_now = getenv("LD_BIND_NOW");
- if (ld_bind_now && *ld_bind_now) {
- xf86Msg(X_ERROR, "LD_BIND_NOW is set, dlloader will NOT work!\n");
- }
-
xf86MsgVerb(X_INFO, 2, "Loader magic: %p\n", (void *)xorg_symbols);
xf86MsgVerb(X_INFO, 2, "Module ABI versions:\n");
xf86ErrorFVerb(2, "\t%s: %d.%d\n", ABI_CLASS_ANSIC,
@@ -257,13 +252,6 @@ LoaderSymbol(const char *sym)
return (DLFindSymbol(sym));
}
-/* more stub */
-int
-LoaderCheckUnresolved(int delay_flag)
-{
- return 0;
-}
-
int
LoaderUnload(int handle)
{
diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
index fccb3b1ae..0b220f1b6 100644
--- a/hw/xfree86/loader/loadmod.c
+++ b/hw/xfree86/loader/loadmod.c
@@ -68,8 +68,6 @@
#include <dirent.h>
#include <limits.h>
-#define TestFree(a) if (a) { xfree (a); a = NULL; }
-
typedef struct _pattern {
const char *pattern;
regex_t rex;
@@ -1020,9 +1018,9 @@ doLoadModule(const char *module, const char *path, const char **subdirlist,
LoadModule_exit:
FreePathList(pathlist);
FreePatterns(patterns);
- TestFree(found);
- TestFree(name);
- TestFree(p);
+ xfree(found);
+ xfree(name);
+ xfree(p);
return ret;
}
@@ -1098,7 +1096,7 @@ UnloadModuleOrDriver(ModuleDescPtr mod)
UnloadModuleOrDriver(mod->child);
if (mod->sib)
UnloadModuleOrDriver(mod->sib);
- TestFree(mod->name);
+ xfree(mod->name);
xfree(mod);
}
@@ -1121,7 +1119,7 @@ UnloadSubModule(pointer _mod)
if (mod->child)
UnloadModuleOrDriver(mod->child);
- TestFree(mod->name);
+ xfree(mod->name);
xfree(mod);
}
diff --git a/hw/xfree86/loader/sdksyms.sh b/hw/xfree86/loader/sdksyms.sh
index b320661c7..11865472f 100755
--- a/hw/xfree86/loader/sdksyms.sh
+++ b/hw/xfree86/loader/sdksyms.sh
@@ -117,12 +117,11 @@ cat > sdksyms.c << EOF
#include "xf86PciInfo.h"
#include "xf86Priv.h"
#include "xf86Privstr.h"
-#include "xf86Resources.h"
#include "xf86cmap.h"
#include "xf86fbman.h"
#include "xf86str.h"
-#include "xf86RAC.h"
#include "xf86Xinput.h"
+#include "xf86VGAarbiter.h"
#include "xisb.h"
#if XV
# include "xf86xv.h"
diff --git a/hw/xfree86/modes/Makefile.am b/hw/xfree86/modes/Makefile.am
index dc090cf75..9236426bf 100644
--- a/hw/xfree86/modes/Makefile.am
+++ b/hw/xfree86/modes/Makefile.am
@@ -10,6 +10,7 @@ libxf86modes_la_SOURCES = \
xf86Cursors.c \
xf86cvt.c \
xf86gtf.c \
+ xf86DisplayIDModes.c \
xf86EdidModes.c \
xf86Modes.c \
xf86Modes.h \
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 51fe1152e..8d636af48 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -40,8 +40,7 @@
#include "xf86Priv.h"
#include "xf86RandR12.h"
#include "X11/extensions/render.h"
-#define DPMS_SERVER
-#include "X11/extensions/dpms.h"
+#include "X11/extensions/dpmsconst.h"
#include "X11/Xatom.h"
#ifdef RENDER
#include "picturestr.h"
@@ -369,12 +368,13 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
}
ret = TRUE;
- crtc->active = TRUE;
- if (scrn->pScreen)
- xf86CrtcSetScreenSubpixelOrder (scrn->pScreen);
done:
- if (!ret) {
+ if (ret) {
+ crtc->active = TRUE;
+ if (scrn->pScreen)
+ xf86CrtcSetScreenSubpixelOrder (scrn->pScreen);
+ } else {
crtc->x = saved_x;
crtc->y = saved_y;
crtc->rotation = saved_rotation;
@@ -440,6 +440,7 @@ typedef enum {
OPTION_IGNORE,
OPTION_ROTATE,
OPTION_PANNING,
+ OPTION_PRIMARY,
} OutputOpts;
static OptionInfoRec xf86OutputOptions[] = {
@@ -456,6 +457,7 @@ static OptionInfoRec xf86OutputOptions[] = {
{OPTION_IGNORE, "Ignore", OPTV_BOOLEAN, {0}, FALSE },
{OPTION_ROTATE, "Rotate", OPTV_STRING, {0}, FALSE },
{OPTION_PANNING, "Panning", OPTV_STRING, {0}, FALSE },
+ {OPTION_PRIMARY, "Primary", OPTV_BOOLEAN, {0}, FALSE },
{-1, NULL, OPTV_NONE, {0}, FALSE },
};
@@ -588,6 +590,7 @@ xf86OutputCreate (ScrnInfoPtr scrn,
xf86OutputPtr output, *outputs;
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
int len;
+ Bool primary;
if (name)
len = strlen (name) + 1;
@@ -633,10 +636,22 @@ xf86OutputCreate (ScrnInfoPtr scrn,
xfree (output);
return NULL;
}
-
+
xf86_config->output = outputs;
- xf86_config->output[xf86_config->num_output++] = output;
-
+
+ if (xf86GetOptValBool (output->options, OPTION_PRIMARY, &primary) && primary)
+ {
+ memmove(xf86_config->output + 1, xf86_config->output,
+ xf86_config->num_output * sizeof (xf86OutputPtr));
+ xf86_config->output[0] = output;
+ }
+ else
+ {
+ xf86_config->output[xf86_config->num_output] = output;
+ }
+
+ xf86_config->num_output++;
+
return output;
}
@@ -1909,7 +1924,8 @@ xf86SetScrnInfoModes (ScrnInfoPtr scrn)
}
static void
-xf86EnableOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, Bool *enabled)
+xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
+ Bool *enabled)
{
Bool any_enabled = FALSE;
int o;
@@ -2217,10 +2233,13 @@ xf86CrtcSetInitialGamma(xf86CrtcPtr crtc, float gamma_red, float gamma_green,
blue = green + size;
/* Only cause warning if user wanted gamma to be set. */
- if (!crtc->funcs->gamma_set && (gamma_red != 1.0 || gamma_green != 1.0 || gamma_blue != 1.0))
+ if (!crtc->funcs->gamma_set && (gamma_red != 1.0 || gamma_green != 1.0 || gamma_blue != 1.0)) {
+ free(red);
return FALSE;
- else if (!crtc->funcs->gamma_set)
+ } else if (!crtc->funcs->gamma_set) {
+ free(red);
return TRUE;
+ }
/* At this early stage none of the randr-interface stuff is up.
* So take the default gamma size for lack of something better.
@@ -2246,8 +2265,10 @@ xf86CrtcSetInitialGamma(xf86CrtcPtr crtc, float gamma_red, float gamma_green,
}
/* Default size is 256, so anything else is failure. */
- if (size != crtc->gamma_size)
+ if (size != crtc->gamma_size) {
+ free(red);
return FALSE;
+ }
crtc->gamma_size = size;
memcpy (crtc->gamma_red, red, crtc->gamma_size * sizeof (CARD16));
@@ -2343,7 +2364,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
modes = xnfcalloc (config->num_output, sizeof (DisplayModePtr));
enabled = xnfcalloc (config->num_output, sizeof (Bool));
- xf86EnableOutputs(scrn, config, enabled);
+ xf86CollectEnabledOutputs(scrn, config, enabled);
if (xf86TargetUserpref(scrn, config, modes, enabled, width, height))
xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n");
diff --git a/hw/xfree86/modes/xf86Cursors.c b/hw/xfree86/modes/xf86Cursors.c
index cbaab5738..fc4df8477 100644
--- a/hw/xfree86/modes/xf86Cursors.c
+++ b/hw/xfree86/modes/xf86Cursors.c
@@ -39,8 +39,7 @@
#include "xf86RandR12.h"
#include "xf86CursorPriv.h"
#include "X11/extensions/render.h"
-#define DPMS_SERVER
-#include "X11/extensions/dpms.h"
+#include "X11/extensions/dpmsconst.h"
#include "X11/Xatom.h"
#ifdef RENDER
#include "picturestr.h"
@@ -640,9 +639,11 @@ xf86_reload_cursors (ScreenPtr screen)
(*cursor_info->LoadCursorARGB) (scrn, cursor);
else if (src)
#endif
- (*cursor_info->LoadCursorImage)(cursor_info->pScrn, src);
+ (*cursor_info->LoadCursorImage)(scrn, src);
- (*cursor_info->SetCursorPosition)(cursor_info->pScrn, x, y);
+ x += scrn->frameX0 + cursor_screen_priv->HotX;
+ y += scrn->frameY0 + cursor_screen_priv->HotY;
+ (*cursor_info->SetCursorPosition)(scrn, x, y);
}
}
diff --git a/hw/xfree86/modes/xf86DisplayIDModes.c b/hw/xfree86/modes/xf86DisplayIDModes.c
new file mode 100644
index 000000000..182d43e0e
--- /dev/null
+++ b/hw/xfree86/modes/xf86DisplayIDModes.c
@@ -0,0 +1,437 @@
+/*
+ * Copyright 2009 Red Hat, 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * them 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 MERCHANTIBILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE 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.
+ *
+ * Authors:
+ * Adam Jackson <ajax@redhat.com>
+ */
+
+#include "xorg-config.h"
+#include "xf86.h"
+#include "xf86str.h"
+#include "edid.h"
+#include "xf86DDC.h"
+
+typedef void (*did_proc)(int scrnIndex, unsigned char *data, void *closure);
+
+#define DID_PRODUCT_ID 0x00
+#define DID_DISPLAY_PARAMETERS 0x01
+#define DID_COLOR_INFO 0x02
+#define DID_TIMING_1_DETAILED 0x03
+#define DID_TIMING_2_DETAILED 0x04
+#define DID_TIMING_3_SHORT 0x05
+#define DID_TIMING_4_DMT 0x06
+#define DID_TIMING_VESA 0x07
+#define DID_TIMING_CEA 0x08
+#define DID_TIMING_RANGE_LIMITS 0x09
+#define DID_PRODUCT_SERIAL 0x0A
+#define DID_ASCII_STRING 0x0B
+#define DID_DISPLAY_DEVICE 0x0C
+#define DID_POWER_SEQUENCING 0x0D
+#define DID_TRANSFER_INFO 0x0E
+#define DID_DISPLAY_INTERFACE 0x0F
+#define DID_STEREO 0x10
+#define DID_VENDOR 0x7F
+
+#define extract_le16(x, i) ((x[i+1] << 8) + (x[i]))
+#define extract_le24(x, i) ((x[i+2] << 16) + (x[i+1] << 8) + (x[i]))
+
+static DisplayModePtr
+modeCalloc(void)
+{
+ return xcalloc(1, sizeof(DisplayModeRec));
+}
+
+/*
+ * How awesome is it to have two detailed timing formats, neither of which
+ * are compatible with the format in EDID? So awesome.
+ */
+
+static void
+didDetailedTiming1(int i, unsigned char *x, MonPtr mon)
+{
+ DisplayModePtr m = modeCalloc();
+
+ if (!m)
+ return;
+
+ m->Clock = extract_le24(x, 0);
+
+ m->HDisplay = extract_le16(x, 4);
+ m->HSyncStart = m->HDisplay + (extract_le16(x, 8) & 0x7f);
+ m->HSyncEnd = m->HSyncStart + extract_le16(x, 10);
+ m->HTotal = m->HDisplay + extract_le16(x, 6);
+ m->Flags |= (x[9] & 0x80) ? V_PHSYNC : V_NHSYNC;
+
+ m->VDisplay = extract_le16(x, 12);
+ m->VSyncStart = m->VDisplay + (extract_le16(x, 16) & 0x7f);
+ m->VSyncEnd = m->VSyncStart + extract_le16(x, 18);
+ m->VTotal = m->VDisplay + extract_le16(x, 14);
+ m->Flags |= (x[17] & 0x80) ? V_PVSYNC : V_NVSYNC;
+
+ m->type = M_T_DRIVER;
+ if (x[3] & 0x80)
+ m->type |= M_T_PREFERRED;
+
+ /* XXX double check handling of this */
+ if (x[3] & 0x10)
+ m->Flags |= V_INTERLACE;
+
+ mon->Modes = xf86ModesAdd(mon->Modes, m);
+}
+
+/* XXX no sync bits. what to do? */
+static void
+didDetailedTiming2(int i, unsigned char *x, MonPtr mon)
+{
+ DisplayModePtr mode = modeCalloc();
+
+ if (!mode)
+ return;
+
+ mode->Clock = extract_le24(x, 0);
+
+ /* horiz sizes are in character cells, not pixels, hence * 8 */
+ mode->HDisplay = ((extract_le16(x, 4) & 0x01ff) + 1) * 8;
+ mode->HSyncStart = mode->HDisplay + (((x[6] & 0xf0) >> 4) + 1) * 8;
+ mode->HSyncEnd = mode->HSyncStart + ((x[6] & 0x0f) + 1) * 8;
+ mode->HTotal = mode->HDisplay + ((x[5] >> 1) + 1) * 8;
+
+ mode->VDisplay = extract_le16(x, 7) & 0x07ff;
+ mode->VSyncStart = mode->VDisplay + (x[10] >> 4) + 1;
+ mode->VSyncEnd = mode->VSyncStart + (x[10] & 0x0f) + 1;
+ mode->VTotal = mode->VDisplay + x[9];
+
+ mode->status = M_T_DRIVER;
+ if (x[3] & 0x80)
+ mode->status |= M_T_PREFERRED;
+
+ /* XXX double check handling of this */
+ if (x[3] & 0x10)
+ mode->Flags |= V_INTERLACE;
+
+ mon->Modes = xf86ModesAdd(mon->Modes, mode);
+}
+
+static void
+didShortTiming(int i, unsigned char *x, MonPtr mon)
+{
+ DisplayModePtr m;
+ int w, h, r;
+
+ w = (x[1] + 1) * 8;
+ switch (x[0] & 0x0f) {
+ case 0:
+ h = w;
+ break;
+ case 1:
+ h = (w * 4) / 5;
+ break;
+ case 2:
+ h = (w * 3) / 4;
+ break;
+ case 3:
+ h = (w * 9) / 15;
+ break;
+ case 4:
+ h = (w * 9) / 16;
+ break;
+ case 5:
+ h = (w * 10) / 16;
+ break;
+ default:
+ return;
+ }
+ r = (x[2] & 0x7f) + 1;
+
+ m = xf86CVTMode(w, h, r, !!(x[0] & 0x10), !!(x[2] & 0x80));
+
+ m->type = M_T_DRIVER;
+ if (x[0] & 0x80)
+ m->type |= M_T_PREFERRED;
+
+ mon->Modes = xf86ModesAdd(mon->Modes, m);
+}
+
+static void
+didDMTTiming(int i, unsigned char *x, void *closure)
+{
+ MonPtr mon = closure;
+
+ mon->Modes = xf86ModesAdd(mon->Modes,
+ xf86DuplicateMode(DMTModes + *x));
+}
+
+#define RB 1
+#define INT 2
+static const struct did_dmt {
+ short w, h, r, f;
+} did_dmt[] = {
+ /* byte 3 */
+ { 640, 350, 85, 0 },
+ { 640, 400, 85, 0 },
+ { 720, 400, 85, 0 },
+ { 640, 480, 60, 0 },
+ { 640, 480, 72, 0 },
+ { 640, 480, 75, 0 },
+ { 640, 480, 85, 0 },
+ { 800, 600, 56, 0 },
+ /* byte 4 */
+ { 800, 600, 60, 0 },
+ { 800, 600, 72, 0 },
+ { 800, 600, 75, 0 },
+ { 800, 600, 85, 0 },
+ { 800, 600, 120, RB },
+ { 848, 480, 60, 0 },
+ { 1024, 768, 43, INT },
+ { 1024, 768, 60, 0 },
+ /* byte 5 */
+ { 1024, 768, 70, 0 },
+ { 1024, 768, 75, 0 },
+ { 1024, 768, 85, 0 },
+ { 1024, 768, 120, RB },
+ { 1152, 864, 75, 0 },
+ { 1280, 768, 60, RB },
+ { 1280, 768, 60, 0 },
+ { 1280, 768, 75, 0 },
+ /* byte 6 */
+ { 1280, 768, 85, 0 },
+ { 1280, 768, 120, RB },
+ { 1280, 800, 60, RB },
+ { 1280, 800, 60, 0 },
+ { 1280, 800, 75, 0 },
+ { 1280, 800, 85, 0 },
+ { 1280, 800, 120, RB },
+ { 1280, 960, 60, 0 },
+ /* byte 7 */
+ { 1280, 960, 85, 0 },
+ { 1280, 960, 120, RB },
+ { 1280, 1024, 60, 0 },
+ { 1280, 1024, 75, 0 },
+ { 1280, 1024, 85, 0 },
+ { 1280, 1024, 120, RB },
+ { 1360, 768, 60, 0 },
+ { 1360, 768, 120, RB },
+ /* byte 8 */
+ { 1400, 1050, 60, RB },
+ { 1400, 1050, 60, 0 },
+ { 1400, 1050, 75, 0 },
+ { 1400, 1050, 85, 0 },
+ { 1400, 1050, 120, RB },
+ { 1440, 900, 60, RB },
+ { 1440, 900, 60, 0 },
+ { 1440, 900, 75, 0 },
+ /* byte 9 */
+ { 1440, 900, 85, 0 },
+ { 1440, 900, 120, RB },
+ { 1600, 1200, 60, 0 },
+ { 1600, 1200, 65, 0 },
+ { 1600, 1200, 70, 0 },
+ { 1600, 1200, 75, 0 },
+ { 1600, 1200, 85, 0 },
+ { 1600, 1200, 120, RB },
+ /* byte a */
+ { 1680, 1050, 60, RB },
+ { 1680, 1050, 60, 0 },
+ { 1680, 1050, 75, 0 },
+ { 1680, 1050, 85, 0 },
+ { 1680, 1050, 120, RB },
+ { 1792, 1344, 60, 0 },
+ { 1792, 1344, 75, 0 },
+ { 1792, 1344, 120, RB },
+ /* byte b */
+ { 1856, 1392, 60, 0 },
+ { 1856, 1392, 75, 0 },
+ { 1856, 1392, 120, RB },
+ { 1920, 1200, 60, RB },
+ { 1920, 1200, 60, 0 },
+ { 1920, 1200, 75, 0 },
+ { 1920, 1200, 85, 0 },
+ { 1920, 1200, 120, RB },
+ /* byte c */
+ { 1920, 1440, 60, 0 },
+ { 1920, 1440, 75, 0 },
+ { 1920, 1440, 120, RB },
+ { 2560, 1600, 60, RB },
+ { 2560, 1600, 60, 0 },
+ { 2560, 1600, 75, 0 },
+ { 2560, 1600, 85, 0 },
+ { 2560, 1600, 120, RB },
+};
+
+static void
+didVesaTiming(int scrn, unsigned char *x, MonPtr mon)
+{
+ int i, j;
+
+ x += 3;
+
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 8; j++)
+ if (x[i] & (1 << j)) {
+ const struct did_dmt *d = &(did_dmt[i * 8 + j]);
+ if (d->f == INT)
+ continue;
+ mon->Modes = xf86ModesAdd(mon->Modes,
+ FindDMTMode(d->w, d->h, d->r,
+ d->f == RB));
+ }
+
+}
+
+static void
+handleDisplayIDBlock(int scrnIndex, unsigned char *x, void *closure)
+{
+ MonPtr mon = closure;
+
+ switch (x[0]) {
+ case DID_DISPLAY_PARAMETERS:
+ /* w/h are in decimillimeters */
+ mon->widthmm = (extract_le16(x, 3) + 5) / 10;
+ mon->heightmm = (extract_le16(x, 5) + 5) / 10;
+ /* XXX pixel count, feature flags, gamma, aspect, color depth */
+ break;
+
+ case DID_TIMING_RANGE_LIMITS:
+ {
+ int n;
+
+ mon->maxPixClock = max(mon->maxPixClock, extract_le24(x, 6) * 10);
+
+ n = mon->nHsync++;
+ if (n < MAX_HSYNC) {
+ mon->hsync[n].lo = x[9];
+ mon->hsync[n].hi = x[10];
+ } else {
+ n = MAX_HSYNC;
+ }
+ n = mon->nVrefresh++;
+ if (n < MAX_VREFRESH) {
+ mon->vrefresh[n].lo = x[13];
+ mon->vrefresh[n].hi = x[14];
+ } else {
+ n = MAX_VREFRESH;
+ }
+ break;
+ }
+
+ case DID_TIMING_1_DETAILED:
+ {
+ int i;
+ for (i = 0; i < x[2]; i += 20)
+ didDetailedTiming1(scrnIndex, x + i + 3, mon);
+ break;
+ }
+
+ case DID_TIMING_2_DETAILED:
+ {
+ int i;
+ for (i = 0; i < x[2]; i += 11)
+ didDetailedTiming2(scrnIndex, x + i + 3, mon);
+ break;
+ }
+
+ case DID_TIMING_3_SHORT:
+ {
+ int i;
+ for (i = 0; i < x[2]; i += 3)
+ didShortTiming(scrnIndex, x + i + 3, mon);
+ break;
+ }
+
+ case DID_TIMING_4_DMT:
+ {
+ int i;
+ for (i = 0; i < x[2]; i++)
+ didDMTTiming(scrnIndex, x + i + 3, mon);
+ break;
+ }
+
+ case DID_TIMING_VESA:
+ didVesaTiming(scrnIndex, x, mon);
+ break;
+
+ /* XXX pixel format, ar, orientation, subpixel, dot pitch, bit depth */
+ case DID_DISPLAY_DEVICE:
+
+ /* XXX interface, links, color encoding, ss, drm */
+ case DID_DISPLAY_INTERFACE:
+
+ /* XXX stereo */
+ case DID_STEREO:
+
+ /* nothing interesting in these */
+ case DID_COLOR_INFO:
+ case DID_PRODUCT_SERIAL:
+ case DID_ASCII_STRING:
+ case DID_POWER_SEQUENCING:
+ case DID_TRANSFER_INFO:
+ case DID_VENDOR:
+ break;
+
+ /* warn about anything else */
+ default:
+ xf86DrvMsg(scrnIndex, X_WARNING,
+ "Unknown DisplayID block type %hx\n", x[0]);
+ break;
+ }
+}
+
+static void
+forEachDisplayIDBlock(int scrnIndex, unsigned char *did, did_proc proc,
+ void *closure)
+{
+ int num_extensions = did[3];
+ int section_size = did[1];
+ unsigned char *block;
+
+ do {
+ if ((did[0] & 0xf0) != 0x10) /* not 1.x, abort */
+ return;
+ /* XXX also, checksum */
+
+ block = did + 4;
+
+ while (section_size > 0) {
+ int block_size = (block[2] + 2);
+
+ proc(scrnIndex, block, closure);
+
+ section_size -= block_size;
+ block += block_size;
+ }
+
+ did += (did[1] + 5);
+ } while (num_extensions--);
+}
+
+/*
+ * Fill out MonPtr with xf86MonPtr information.
+ */
+void
+xf86DisplayIDMonitorSet(int scrnIndex, MonPtr mon, xf86MonPtr DDC)
+{
+ if (!mon || !DDC)
+ return;
+
+ mon->DDC = DDC;
+
+ forEachDisplayIDBlock(scrnIndex, DDC->rawData, handleDisplayIDBlock, mon);
+}
diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
index 50b669c3e..6e11f9a3d 100644
--- a/hw/xfree86/modes/xf86EdidModes.c
+++ b/hw/xfree86/modes/xf86EdidModes.c
@@ -210,6 +210,11 @@ static Bool quirk_first_detailed_preferred (int scrnIndex, xf86MonPtr DDC)
DDC->vendor.prod_id == 2423)
return TRUE;
+ /* Peacock Ergovision 19. See rh#492359 */
+ if (memcmp (DDC->vendor.name, "PEA", 4) == 0 &&
+ DDC->vendor.prod_id == 9003)
+ return TRUE;
+
return FALSE;
}
@@ -333,7 +338,7 @@ DDCModesFromEstablished(int scrnIndex, struct established_timings *timing,
}
/* Autogenerated from the DMT spec */
-static const DisplayModeRec DMTModes[] = {
+const DisplayModeRec DMTModes[] = {
{ MODEPREFIX, 31500, 640, 672, 736, 832, 0, 350, 382, 385, 445, 0, V_PHSYNC | V_NVSYNC, MODESUFFIX }, /* 640x350@85Hz */
{ MODEPREFIX, 31500, 640, 672, 736, 832, 0, 400, 401, 404, 445, 0, V_NHSYNC | V_PVSYNC, MODESUFFIX }, /* 640x400@85Hz */
{ MODEPREFIX, 35500, 720, 756, 828, 936, 0, 400, 401, 404, 446, 0, V_NHSYNC | V_PVSYNC, MODESUFFIX }, /* 720x400@85Hz */
@@ -443,7 +448,7 @@ ModeRefresh(const DisplayModeRec *mode)
* part of the DMT pool. For the 'standard' EDID mode descriptor there's
* no way to specify whether the mode should be RB or not.
*/
-static DisplayModePtr
+DisplayModePtr
FindDMTMode(int hsize, int vsize, int refresh, Bool rb)
{
int i;
@@ -938,7 +943,7 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
* Fill out MonPtr with xf86MonPtr information.
*/
void
-xf86DDCMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC)
+xf86EdidMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC)
{
DisplayModePtr Modes = NULL, Mode;
int i, clock;
diff --git a/hw/xfree86/modes/xf86Modes.c b/hw/xfree86/modes/xf86Modes.c
index 74d8648ec..d105b48ab 100644
--- a/hw/xfree86/modes/xf86Modes.c
+++ b/hw/xfree86/modes/xf86Modes.c
@@ -48,8 +48,6 @@ extern XF86ConfigPtr xf86configptr;
/**
* Calculates the horizontal sync rate of a mode.
- *
- * Exact copy of xf86Mode.c's.
*/
double
xf86ModeHSync(const DisplayModeRec *mode)
@@ -66,8 +64,6 @@ xf86ModeHSync(const DisplayModeRec *mode)
/**
* Calculates the vertical refresh rate of a mode.
- *
- * Exact copy of xf86Mode.c's.
*/
double
xf86ModeVRefresh(const DisplayModeRec *mode)
@@ -123,7 +119,7 @@ unsigned int
xf86ModeBandwidth(DisplayModePtr mode, int depth)
{
float a_active, a_total, active_percent, pixels_per_second;
- int bytes_per_pixel = (depth + 7) / 8;
+ int bytes_per_pixel = bits_to_bytes(depth);
if (!mode->HTotal || !mode->VTotal || !mode->Clock)
return 0;
@@ -151,8 +147,6 @@ xf86SetModeDefaultName(DisplayModePtr mode)
*
* Initialises the Crtc parameters for a mode. The initialisation includes
* adjustments for interlaced and double scan modes.
- *
- * Exact copy of xf86Mode.c's.
*/
void
xf86SetModeCrtc(DisplayModePtr p, int adjustFlags)
@@ -260,8 +254,6 @@ xf86DuplicateModes(ScrnInfoPtr pScrn, DisplayModePtr modeList)
*
* 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.
- *
- * This isn't in xf86Modes.c, but it might deserve to be there.
*/
Bool
xf86ModesEqual(const DisplayModeRec *pMode1, const DisplayModeRec *pMode2)
@@ -285,7 +277,6 @@ xf86ModesEqual(const DisplayModeRec *pMode1, const DisplayModeRec *pMode2)
}
}
-/* exact copy of xf86Mode.c */
static void
add(char **p, char *new)
{
@@ -296,8 +287,6 @@ add(char **p, char *new)
/**
* Print out a modeline.
- *
- * Convenient VRefresh printing was added, though, compared to xf86Mode.c
*/
void
xf86PrintModeline(int scrnIndex,DisplayModePtr mode)
@@ -541,17 +530,9 @@ xf86ModeIsReduced(const DisplayModeRec *mode)
void
xf86ValidateModesReducedBlanking(ScrnInfoPtr pScrn, DisplayModePtr modeList)
{
- DisplayModePtr mode;
-
- for (mode = modeList; mode != NULL; mode = mode->next) {
- /* gratuitous duplication from pre-randr validation code */
- if ((((mode->HDisplay * 5 / 4) & ~0x07) > mode->HTotal) &&
- ((mode->HTotal - mode->HDisplay) == 160) &&
- ((mode->HSyncEnd - mode->HDisplay) == 80) &&
- ((mode->HSyncEnd - mode->HSyncStart) == 32) &&
- ((mode->VSyncStart - mode->VDisplay) == 3))
- mode->status = MODE_NO_REDUCED;
- }
+ for (; modeList != NULL; modeList = modeList->next)
+ if (xf86ModeIsReduced(modeList))
+ modeList->status = MODE_NO_REDUCED;
}
/**
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index 0de21e253..c2465bce3 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -1718,13 +1718,11 @@ gamma_to_ramp(float gamma, CARD16 *ramp, int size)
static int
xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma)
{
- int i, size = 0;
CARD16 *points, *red, *green, *blue;
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
- rrScrPrivPtr rp = rrGetScrPriv(pScrn->pScreen);
-
- for (i = 0; i < rp->numCrtcs; i++)
- size = max(size, rp->crtcs[i]->gammaSize);
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ RRCrtcPtr crtc = config->output[config->compat_output]->crtc->randr_crtc;
+ int size = max(0, crtc->gammaSize);
if (!size)
return Success;
@@ -1737,13 +1735,10 @@ xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma)
green = points + size;
blue = points + 2 * size;
- for (i = 0; i < rp->numCrtcs; i++) {
- gamma_to_ramp(gamma.red, red, rp->crtcs[i]->gammaSize);
- gamma_to_ramp(gamma.green, green, rp->crtcs[i]->gammaSize);
- gamma_to_ramp(gamma.blue, blue, rp->crtcs[i]->gammaSize);
- RRCrtcGammaSet(rp->crtcs[i], red, green, blue);
- memset(points, 0, 3 * size * sizeof(CARD16));
- }
+ gamma_to_ramp(gamma.red, red, size);
+ gamma_to_ramp(gamma.green, green, size);
+ gamma_to_ramp(gamma.blue, blue, size);
+ RRCrtcGammaSet(crtc, red, green, blue);
xfree(points);
diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index 618072ab6..d9face1cb 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -40,8 +40,7 @@
#include "xf86Modes.h"
#include "xf86RandR12.h"
#include "X11/extensions/render.h"
-#define DPMS_SERVER
-#include "X11/extensions/dpms.h"
+#include "X11/extensions/dpmsconst.h"
#include "X11/Xatom.h"
/* borrowed from composite extension, move to Render and publish? */
@@ -229,6 +228,7 @@ xf86RotatePrepare (ScreenPtr pScreen)
DamageRegister (&(*pScreen->GetScreenPixmap)(pScreen)->drawable,
xf86_config->rotation_damage);
xf86_config->rotation_damage_registered = TRUE;
+ EnableLimitedSchedulingLatency();
}
xf86CrtcDamageShadow (crtc);
@@ -294,11 +294,12 @@ xf86RotateBlockHandler(int screenNum, pointer blockData,
ScreenPtr pScreen = screenInfo.screens[screenNum];
ScrnInfoPtr pScrn = xf86Screens[screenNum];
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ Bool rotation_active;
+ rotation_active = xf86RotateRedisplay(pScreen);
pScreen->BlockHandler = xf86_config->BlockHandler;
(*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
- if (xf86RotateRedisplay(pScreen))
- {
+ if (rotation_active) {
/* Re-wrap if rotation is still happening */
xf86_config->BlockHandler = pScreen->BlockHandler;
pScreen->BlockHandler = xf86RotateBlockHandler;
@@ -338,6 +339,7 @@ xf86RotateDestroy (xf86CrtcPtr crtc)
DamageUnregister (&(*pScreen->GetScreenPixmap)(pScreen)->drawable,
xf86_config->rotation_damage);
xf86_config->rotation_damage_registered = FALSE;
+ DisableLimitedSchedulingLatency();
}
DamageDestroy (xf86_config->rotation_damage);
xf86_config->rotation_damage = NULL;
diff --git a/hw/xfree86/os-support/bsd/Makefile.am b/hw/xfree86/os-support/bsd/Makefile.am
index e52dac13b..b6ecdf1d1 100644
--- a/hw/xfree86/os-support/bsd/Makefile.am
+++ b/hw/xfree86/os-support/bsd/Makefile.am
@@ -17,9 +17,6 @@ else
KMOD_SOURCES = $(srcdir)/../shared/kmod_noop.c
endif
-# FIXME: Non-i386/ia64 resource support.
-RES_SOURCES = $(srcdir)/../shared/stdResource.c
-
if AGP
AGP_SOURCES = $(srcdir)/../linux/lnx_agp.c
else
diff --git a/hw/xfree86/os-support/bsd/bsd_axp.c b/hw/xfree86/os-support/bsd/bsd_axp.c
index cb10a9d40..77c87ce1d 100644
--- a/hw/xfree86/os-support/bsd/bsd_axp.c
+++ b/hw/xfree86/os-support/bsd/bsd_axp.c
@@ -36,7 +36,7 @@ static _AXP axpList[] = {
{"lca",LCA},
{"t2",T2},
{"tsunami",TSUNAMI},
- {NULL,NONE}
+ {NULL,SYS_NONE}
};
axpDevice
@@ -65,7 +65,7 @@ bsdGetAXP(void)
#endif
for (i=0;;i++) {
if (axpList[i].name == NULL)
- return NONE;
+ return SYS_NONE;
if (!strcmp(sysname, axpList[i].name))
return axpList[i].type;
}
diff --git a/hw/xfree86/os-support/bus/Pci.c b/hw/xfree86/os-support/bus/Pci.c
index 6a1c6a8f7..b7fa25f71 100644
--- a/hw/xfree86/os-support/bus/Pci.c
+++ b/hw/xfree86/os-support/bus/Pci.c
@@ -151,13 +151,6 @@ xf86scanpci(void)
success = (pci_system_init() == 0);
- /* XXX */
-#if defined(DEBUGPCI)
- if (DEBUGPCI >= xf86Verbose) {
- xf86Verbose = DEBUGPCI;
- }
-#endif
-
/* choose correct platform/OS specific PCI init routine */
ARCH_PCI_INIT();
diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h
index 79b38f015..b52a6cfae 100644
--- a/hw/xfree86/os-support/bus/Pci.h
+++ b/hw/xfree86/os-support/bus/Pci.h
@@ -150,24 +150,6 @@
#define PCI_BUS_NO_DOMAIN(bus) ((bus) & 0xffu)
#define PCI_TAG_NO_DOMAIN(tag) ((tag) & 0x00ffff00u)
-/*
- * Debug Macros/Definitions
- */
-/* #define DEBUGPCI 2 */ /* Disable/enable trace in PCI code */
-
-#if defined(DEBUGPCI)
-
-# define PCITRACE(lvl,printfargs) \
- if (lvl > xf86Verbose) { \
- ErrorF printfargs; \
- }
-
-#else /* !defined(DEBUGPCI) */
-
-# define PCITRACE(lvl,printfargs)
-
-#endif /* !defined(DEBUGPCI) */
-
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
defined(__OpenBSD__) || defined(__NetBSD__) || \
defined(__DragonFly__) || defined(__sun) || defined(__GNU__)
diff --git a/hw/xfree86/os-support/bus/linuxPci.c b/hw/xfree86/os-support/bus/linuxPci.c
index e210fa1ab..920a14949 100644
--- a/hw/xfree86/os-support/bus/linuxPci.c
+++ b/hw/xfree86/os-support/bus/linuxPci.c
@@ -52,7 +52,6 @@
#include "compiler.h"
#include "xf86.h"
#include "xf86Priv.h"
-#define NEED_OS_RAC_PROTOS
#include "xf86_OSlib.h"
#include "Pci.h"
#include <dirent.h>
@@ -453,58 +452,3 @@ xf86MapLegacyIO(struct pci_device *dev)
return (IOADDRESS)DomainMmappedIO[domain];
}
-resPtr
-xf86AccResFromOS(resPtr pRes)
-{
- struct pci_device *dev;
- struct pci_device_iterator *iter;
- resRange range;
-
- iter = pci_id_match_iterator_create(& match_host_bridge);
- while ((dev = pci_device_next(iter)) != NULL) {
- const int domain = dev->domain;
- const struct pciSizes * const sizes = linuxGetSizesStruct(dev);
-
- /*
- * At minimum, the top and bottom resources must be claimed, so
- * that resources that are (or appear to be) unallocated can be
- * relocated.
- */
- RANGE(range, 0x00000000u, 0x0009ffffu,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, 0x000c0000u, 0x000effffu,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, 0x000f0000u, 0x000fffffu,
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, (ADDRESS)(sizes->mem_size - 1),
- (ADDRESS)(sizes->mem_size - 1),
- RANGE_TYPE(ResExcMemBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- RANGE(range, 0x00000000u, 0x00000000u,
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
- RANGE(range, (IOADDRESS)(sizes->io_size - 1),
- (IOADDRESS)(sizes->io_size - 1),
- RANGE_TYPE(ResExcIoBlock, domain));
- pRes = xf86AddResToList(pRes, &range, -1);
-
- /* FIXME: The old code reserved domain 0 for a special purpose. The
- * FIXME: new code just uses whatever domains the kernel tells it,
- * FIXME: but there is no way to get a domain < 0. What should
- * FIXME: happen here?
- *
- if (domain <= 0)
- break;
- */
- }
-
- pci_iterator_destroy(iter);
-
- return pRes;
-}
-
diff --git a/hw/xfree86/os-support/hurd/Makefile.am b/hw/xfree86/os-support/hurd/Makefile.am
index 9bbe2afaf..3e8224753 100644
--- a/hw/xfree86/os-support/hurd/Makefile.am
+++ b/hw/xfree86/os-support/hurd/Makefile.am
@@ -4,7 +4,6 @@ libhurd_la_SOURCES = hurd_bell.c hurd_init.c hurd_mmap.c \
hurd_video.c \
$(srcdir)/../shared/VTsw_noop.c \
$(srcdir)/../shared/posix_tty.c \
- $(srcdir)/../shared/stdResource.c \
$(srcdir)/../shared/vidmem.c \
$(srcdir)/../shared/sigiostubs.c \
$(srcdir)/../shared/pm_noop.c \
diff --git a/hw/xfree86/os-support/linux/Makefile.am b/hw/xfree86/os-support/linux/Makefile.am
index 81bd055e3..1239c8f6b 100644
--- a/hw/xfree86/os-support/linux/Makefile.am
+++ b/hw/xfree86/os-support/linux/Makefile.am
@@ -32,7 +32,6 @@ liblinux_la_SOURCES = lnx_init.c lnx_video.c \
$(srcdir)/../shared/posix_tty.c \
$(srcdir)/../shared/vidmem.c \
$(srcdir)/../shared/sigio.c \
- $(srcdir)/../shared/stdResource.c \
$(ACPI_SRCS) \
$(APM_SRCS) \
$(PLATFORM_PCI_SUPPORT)
diff --git a/hw/xfree86/os-support/linux/lnx_axp.c b/hw/xfree86/os-support/linux/lnx_axp.c
index d25999924..8571c048b 100644
--- a/hw/xfree86/os-support/linux/lnx_axp.c
+++ b/hw/xfree86/os-support/linux/lnx_axp.c
@@ -49,7 +49,7 @@ static AXP axpList[] = {
{"Miata",NULL,NULL,PYXIS_CIA},
{"Ruffian",NULL,NULL,PYXIS_CIA},
{"Nautilus",NULL,NULL,IRONGATE},
- {NULL,NULL,NULL,NONE}
+ {NULL,NULL,NULL,SYS_NONE}
};
diff --git a/hw/xfree86/os-support/linux/lnx_font.c b/hw/xfree86/os-support/linux/lnx_font.c
index 5b2696af5..d6fc283c0 100644
--- a/hw/xfree86/os-support/linux/lnx_font.c
+++ b/hw/xfree86/os-support/linux/lnx_font.c
@@ -168,7 +168,7 @@ lnx_savefont(void)
return FALSE;
}
- size = (width + 7)/8 * 32 * charcount;
+ size = bits_to_bytes(width) * 32 * charcount;
fontdata = (unsigned char *)xnfalloc(size);
if (!fontdata) {
xf86Msg(X_WARNING,
diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c
index a49086b37..5a6db8081 100644
--- a/hw/xfree86/os-support/linux/lnx_init.c
+++ b/hw/xfree86/os-support/linux/lnx_init.c
@@ -74,9 +74,11 @@ saveVtPerms(void)
static void
restoreVtPerms(void)
{
- /* Set the terminal permissions back to before we started. */
- chown("/dev/tty0", vtPermSave[0], vtPermSave[1]);
- chown(vtname, vtPermSave[2], vtPermSave[3]);
+ if (geteuid() == 0) {
+ /* Set the terminal permissions back to before we started. */
+ (void)chown("/dev/tty0", vtPermSave[0], vtPermSave[1]);
+ (void)chown(vtname, vtPermSave[2], vtPermSave[3]);
+ }
}
static void *console_handler;
@@ -184,20 +186,22 @@ xf86OpenConsole(void)
xf86Msg(X_WARNING,
"xf86OpenConsole: Could not save ownership of VT\n");
- /* change ownership of the vt */
- if (chown(vtname, getuid(), getgid()) < 0)
- xf86Msg(X_WARNING,"xf86OpenConsole: chown %s failed: %s\n",
- vtname, strerror(errno));
-
- /*
- * the current VT device we're running on is not "console", we want
- * to grab all consoles too
- *
- * Why is this needed??
- */
- if (chown("/dev/tty0", getuid(), getgid()) < 0)
- xf86Msg(X_WARNING,"xf86OpenConsole: chown /dev/tty0 failed: %s\n",
- strerror(errno));
+ if (geteuid() == 0) {
+ /* change ownership of the vt */
+ if (chown(vtname, getuid(), getgid()) < 0)
+ xf86Msg(X_WARNING,"xf86OpenConsole: chown %s failed: %s\n",
+ vtname, strerror(errno));
+
+ /*
+ * the current VT device we're running on is not
+ * "console", we want to grab all consoles too
+ *
+ * Why is this needed??
+ */
+ if (chown("/dev/tty0", getuid(), getgid()) < 0)
+ xf86Msg(X_WARNING,"xf86OpenConsole: chown /dev/tty0 failed: %s\n",
+ strerror(errno));
+ }
}
/*
@@ -282,9 +286,6 @@ xf86OpenConsole(void)
/* we really should have a InitOSInputDevices() function instead
* of Init?$#*&Device(). So I just place it here */
-
- } else { /* ShareVTs */
- close(xf86Info.consoleFd);
}
} else { /* serverGeneration != 1 */
if (!ShareVTs && VTSwitch)
@@ -313,7 +314,10 @@ xf86CloseConsole(void)
int vtno = -1;
#endif
- if (ShareVTs) return;
+ if (ShareVTs) {
+ close(xf86Info.consoleFd);
+ return;
+ }
if (console_handler) {
xf86RemoveGeneralHandler(console_handler);
diff --git a/hw/xfree86/os-support/misc/BUSmemcpy.c b/hw/xfree86/os-support/misc/BUSmemcpy.c
deleted file mode 100644
index e6ffde97e..000000000
--- a/hw/xfree86/os-support/misc/BUSmemcpy.c
+++ /dev/null
@@ -1,187 +0,0 @@
-
-/****************************************************************************
-
- For Alpha Linux, BusToMem() and MemToBus() can be simply memcpy(), BUT:
- we need to prevent unaligned operations when accessing DENSE space on the BUS,
- as the video memory is mmap'd that way. The below code does this.
-
-NOTE: we could simply use the "memcpy()" from LIBC here, but that, currently, is
- not as fast.
-
-Thanks to Linus Torvalds for contributing this code.
-
-****************************************************************************/
-
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#ifdef __alpha__
-
-#include "compiler.h"
-
-#define LWORD_CODING (0x60)
-#define SPARSE (7)
-
-static unsigned long __memcpy(unsigned long dest, unsigned long src, int n);
-
-void
-xf86BusToMem(unsigned char *dst, unsigned char *src, int len)
-{
- __memcpy((unsigned long)dst, (unsigned long)src, len);
-}
-void
-xf86MemToBus(unsigned char *dst, unsigned char *src, int len)
-{
- if (len == sizeof(int))
- if (!(((long)src | (long)dst) & 3))
- *((unsigned int*)dst) = *((unsigned int*)(src));
- else {
- int i;
- if (((long)src) & 3)
- i = ldl_u((unsigned int*)src);
- else
- i = *(unsigned int*)src;
- if (((long)dst) & 3)
- stl_u(i,(unsigned int*)dst);
- else
- *(unsigned int*)dst = i;
- }
- else
- __memcpy((unsigned long)dst, (unsigned long)src, len);
-}
-
-/*
- * linux/arch/alpha/lib/memcpy.c
- *
- * Copyright (C) 1995 Linus Torvalds, used with his permission.
- */
-
-/*
- * This is a reasonably optimized memcpy() routine.
- */
-
-/*
- * Note that the C code is written to be optimized into good assembly. However,
- * at this point gcc is unable to sanely compile "if (n >= 0)", resulting in a
- * explicit compare against 0 (instead of just using the proper "blt reg, xx" or
- * "bge reg, xx"). I hope alpha-gcc will be fixed to notice this eventually..
- */
-
-/*
- * This should be done in one go with ldq_u*2/mask/stq_u. Do it
- * with a macro so that we can fix it up later..
- */
-#define ALIGN_DEST_TO8(d,s,n) \
- while (d & 7) { \
- if (n <= 0) return; \
- n--; \
- *(char *) d = *(char *) s; \
- d++; s++; \
- }
-
-/*
- * This should similarly be done with ldq_u*2/mask/stq. The destination
- * is aligned, but we don't fill in a full quad-word
- */
-#define DO_REST(d,s,n) \
- while (n > 0) { \
- n--; \
- *(char *) d = *(char *) s; \
- d++; s++; \
- }
-
-/*
- * This should be done with ldq/mask/stq. The source and destination are
- * aligned, but we don't fill in a full quad-word
- */
-#define DO_REST_ALIGNED(d,s,n) DO_REST(d,s,n)
-
-/*
- * This does unaligned memory copies. We want to avoid storing to
- * an unaligned address, as that would do a read-modify-write cycle.
- * We also want to avoid double-reading the unaligned reads.
- *
- * Note the ordering to try to avoid load (and address generation) latencies.
- */
-static __inline__ void __memcpy_unaligned(unsigned long d, unsigned long s, long n)
-{
- ALIGN_DEST_TO8(d,s,n);
- n -= 8; /* to avoid compare against 8 in the loop */
- if (n >= 0) {
- unsigned long low_word, high_word;
- __asm__("ldq_u %0,%1":"=r" (low_word):"m" (*(unsigned long *) s));
- do {
- unsigned long tmp;
- __asm__("ldq_u %0,%1":"=r" (high_word):"m" (*(unsigned long *)(s+8)));
- n -= 8;
- __asm__("extql %1,%2,%0"
- :"=r" (low_word)
- :"r" (low_word), "r" (s));
- __asm__("extqh %1,%2,%0"
- :"=r" (tmp)
- :"r" (high_word), "r" (s));
- s += 8;
- *(unsigned long *) d = low_word | tmp;
- d += 8;
- low_word = high_word;
- } while (n >= 0);
- }
- n += 8;
- DO_REST(d,s,n);
-}
-
-/*
- * Hmm.. Strange. The __asm__ here is there to make gcc use a integer register
- * for the load-store. I don't know why, but it would seem that using a floating
- * point register for the move seems to slow things down (very small difference,
- * though).
- *
- * Note the ordering to try to avoid load (and address generation) latencies.
- */
-static __inline__ void __memcpy_aligned(unsigned long d, unsigned long s, long n)
-{
- ALIGN_DEST_TO8(d,s,n);
- n -= 8;
- while (n >= 0) {
- unsigned long tmp;
- __asm__("ldq %0,%1":"=r" (tmp):"m" (*(unsigned long *) s));
- n -= 8;
- s += 8;
- *(unsigned long *) d = tmp;
- d += 8;
- }
- n += 8;
- DO_REST_ALIGNED(d,s,n);
-}
-
-static unsigned long __memcpy(unsigned long dest, unsigned long src, int n)
-{
- if (!((dest ^ src) & 7)) {
- __memcpy_aligned(dest, src, n);
- return dest;
- }
- __memcpy_unaligned(dest, src, n);
- return dest;
-}
-
-#else /* __alpha__ */
-
-void
-xf86BusToMem(unsigned char *dst, unsigned char *src, int len)
-{
- memcpy(dst, src, len);
-}
-void
-xf86MemToBus(unsigned char *dst, unsigned char *src, int len)
-{
- memcpy(dst, src, len);
-}
-
-#endif /* __alpha__ */
diff --git a/hw/xfree86/os-support/misc/Delay.c b/hw/xfree86/os-support/misc/Delay.c
deleted file mode 100644
index 35ced8ceb..000000000
--- a/hw/xfree86/os-support/misc/Delay.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86_OSlib.h"
-
-#include <time.h>
-
-void
-xf86UDelay(long usec)
-{
-#if 0
- struct timeval start, interrupt;
-#else
- int sigio;
-
- sigio = xf86BlockSIGIO();
- usleep(usec);
- xf86UnblockSIGIO(sigio);
-#endif
-
-#if 0
- gettimeofday(&start,NULL);
-
- do {
- usleep(usec);
- gettimeofday(&interrupt,NULL);
-
- if ((usec = usec - (interrupt.tv_sec - start.tv_sec) * 1000000
- - (interrupt.tv_usec - start.tv_usec)) < 0)
- break;
- start = interrupt;
- } while (1);
-#endif
-}
-
diff --git a/hw/xfree86/os-support/misc/Makefile.am b/hw/xfree86/os-support/misc/Makefile.am
index 3d4b8ff0e..4bd3fc3e1 100644
--- a/hw/xfree86/os-support/misc/Makefile.am
+++ b/hw/xfree86/os-support/misc/Makefile.am
@@ -1,7 +1,7 @@
noinst_LTLIBRARIES = libmisc.la
-libmisc_la_SOURCES = Delay.c BUSmemcpy.c SlowBcopy.c
+libmisc_la_SOURCES = SlowBcopy.c
#AM_LDFLAGS = -r
diff --git a/hw/xfree86/os-support/misc/SlowBcopy.c b/hw/xfree86/os-support/misc/SlowBcopy.c
index 182a3e6ec..8a5017e52 100644
--- a/hw/xfree86/os-support/misc/SlowBcopy.c
+++ b/hw/xfree86/os-support/misc/SlowBcopy.c
@@ -1,15 +1,8 @@
-/*******************************************************************************
- for Alpha Linux
-*******************************************************************************/
-
/*
* Create a dependency that should be immune from the effect of register
* renaming as is commonly seen in superscalar processors. This should
* insert a minimum of 100-ns delays between reads/writes at clock rates
* up to 100 MHz---GGL
- *
- * Slowbcopy(char *src, char *dst, int count)
- *
*/
#ifdef HAVE_XORG_CONFIG_H
@@ -54,48 +47,3 @@ xf86SlowBcopy(unsigned char *src, unsigned char *dst, int len)
while(len--)
*dst++ = *src++;
}
-
-#ifdef __alpha__
-
-#ifdef linux
-
-#define SPARSE (7)
-
-#else
-
-#define SPARSE 0
-
-#endif
-
-void
-xf86SlowBCopyFromBus(unsigned char *src, unsigned char *dst, int count)
-{
- unsigned long addr;
- long result;
-
- addr = (unsigned long) src;
- while( count ){
- result = *(volatile int *) addr;
- result >>= ((addr>>SPARSE) & 3) * 8;
- *dst++ = (unsigned char) (0xffUL & result);
- addr += 1<<SPARSE;
- count--;
- outb(0x80, 0x00);
- }
-}
-
-void
-xf86SlowBCopyToBus(unsigned char *src, unsigned char *dst, int count)
-{
- unsigned long addr;
-
- addr = (unsigned long) dst;
- while(count) {
- *(volatile unsigned int *) addr = (unsigned short)(*src) * 0x01010101;
- src++;
- addr += 1<<SPARSE;
- count--;
- outb(0x80, 0x00);
- }
-}
-#endif
diff --git a/hw/xfree86/os-support/shared/VTsw_noop.c b/hw/xfree86/os-support/shared/VTsw_noop.c
index a3cfe40b9..78cbe0e34 100644
--- a/hw/xfree86/os-support/shared/VTsw_noop.c
+++ b/hw/xfree86/os-support/shared/VTsw_noop.c
@@ -36,19 +36,19 @@
*/
Bool
-xf86VTSwitchPending()
+xf86VTSwitchPending(void)
{
return(FALSE);
}
Bool
-xf86VTSwitchAway()
+xf86VTSwitchAway(void)
{
return(FALSE);
}
Bool
-xf86VTSwitchTo()
+xf86VTSwitchTo(void)
{
return(TRUE);
}
diff --git a/hw/xfree86/os-support/shared/bios_mmap.c b/hw/xfree86/os-support/shared/bios_mmap.c
index 40afd5b8e..a615a1d45 100644
--- a/hw/xfree86/os-support/shared/bios_mmap.c
+++ b/hw/xfree86/os-support/shared/bios_mmap.c
@@ -131,7 +131,7 @@ xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
return(-1);
}
- xf86SlowBCopyFromBus((unsigned char *)(base+Offset), Buf, Len);
+ xf86SlowBcopy((unsigned char *)(base+Offset), Buf, Len);
munmap((caddr_t)base, mlen);
close(fd);
diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c
index 5ba0b7e1c..44136ccfb 100644
--- a/hw/xfree86/os-support/shared/sigio.c
+++ b/hw/xfree86/os-support/shared/sigio.c
@@ -75,11 +75,11 @@
# define O_ASYNC FASYNC
#endif
-#ifdef MAX_DEVICES
-/* MAX_DEVICES represents the maximimum number of input devices usable
+#ifdef MAXDEVICES
+/* MAXDEVICES represents the maximimum number of input devices usable
* at the same time plus one entry for DRM support.
*/
-# define MAX_FUNCS (MAX_DEVICES + 1)
+# define MAX_FUNCS (MAXDEVICES + 1)
#else
# define MAX_FUNCS 16
#endif
diff --git a/hw/xfree86/os-support/shared/stdResource.c b/hw/xfree86/os-support/shared/stdResource.c
deleted file mode 100644
index 9db349bc0..000000000
--- a/hw/xfree86/os-support/shared/stdResource.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
- */
-
-/* Standard resource information code */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Privstr.h"
-#include "xf86Pci.h"
-#define NEED_OS_RAC_PROTOS
-#include "xf86_OSlib.h"
-#include "xf86Resources.h"
-
-/* Avoid Imakefile changes */
-#include "bus/Pci.h"
-
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
- defined(__NetBSD__) || defined(__OpenBSD__) || \
- defined(__DragonFly__) || defined(__sun) || defined(__GNU__)
-#define xf86StdAccResFromOS xf86AccResFromOS
-#endif
-
-resPtr
-xf86StdAccResFromOS(resPtr ret)
-{
- resRange range;
-
- /*
- * Fallback is to claim the following areas:
- *
- * 0x00000000 - 0x0009ffff low 640k host memory
- * 0x000c0000 - 0x000effff location of VGA and other extensions ROMS
- * 0x000f0000 - 0x000fffff system BIOS
- * 0x00100000 - 0x3fffffff low 1G - 1MB host memory
- * 0xfec00000 - 0xfecfffff default I/O APIC config space
- * 0xfee00000 - 0xfeefffff default Local APIC config space
- * 0xffe00000 - 0xffffffff high BIOS area (should this be included?)
- *
- * reference: Intel 440BX AGP specs
- *
- * The two APIC spaces appear to be BX-specific and should be dealt with
- * elsewhere.
- */
-
- /* Fallback is to claim 0x0 - 0x9ffff and 0x100000 - 0x7fffffff */
- RANGE(range, 0x00000000, 0x0009ffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x000c0000, 0x000effff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x000f0000, 0x000fffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
-#if 0
- RANGE(range, 0xfec00000, 0xfecfffff, ResExcMemBlock | ResBios);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xfee00000, 0xfeefffff, ResExcMemBlock | ResBios);
- ret = xf86AddResToList(ret, &range, -1);
- /* airlied - remove BIOS range it shouldn't be here
- this should use E820 - or THE OS */
- RANGE(range, 0xffe00000, 0xffffffff, ResExcMemBlock | ResBios);
- ret = xf86AddResToList(ret, &range, -1);
-#endif
- /*
- * Fallback would be to claim well known ports in the 0x0 - 0x3ff range
- * along with their sparse I/O aliases, but that's too imprecise. Instead
- * claim a bare minimum here.
- */
- RANGE(range, 0x00000000, 0x000000ff, ResExcIoBlock); /* For mainboard */
- ret = xf86AddResToList(ret, &range, -1);
-
- /*
- * At minimum, the top and bottom resources must be claimed, so that
- * resources that are (or appear to be) unallocated can be relocated.
- */
-/* RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
- ret = xf86AddResToList(ret, &range, -1);
- RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1); */
- RANGE(range, 0x0000ffff, 0x0000ffff, ResExcIoBlock);
- ret = xf86AddResToList(ret, &range, -1);
-
- /* XXX add others */
- return ret;
-}
diff --git a/hw/xfree86/os-support/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am
index 4496ee122..5163f4423 100644
--- a/hw/xfree86/os-support/solaris/Makefile.am
+++ b/hw/xfree86/os-support/solaris/Makefile.am
@@ -1,5 +1,5 @@
-if SOLARIS_USL_CONSOLE
-VTSW_SRC = $(srcdir)/../shared/VTsw_usl.c
+if SOLARIS_VT
+VTSW_SRC = sun_VTsw.c
else
VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c
endif
@@ -14,7 +14,7 @@ SOLARIS_INOUT_SRC = solaris-@SOLARIS_INOUT_ARCH@.S
DISTCLEANFILES = solaris-@SOLARIS_INOUT_ARCH@.il
solaris-@SOLARIS_INOUT_ARCH@.il: solaris-@SOLARIS_INOUT_ARCH@.S
- $(CPP) -P -DINLINE_ASM solaris-@SOLARIS_INOUT_ARCH@.S > $@
+ $(CPP) -P -DINLINE_ASM $(srcdir)/solaris-@SOLARIS_INOUT_ARCH@.S > $@
noinst_LTLIBRARIES = libsolaris.la
libsolaris_la_SOURCES = sun_init.c \
@@ -22,7 +22,6 @@ libsolaris_la_SOURCES = sun_init.c \
$(srcdir)/../shared/kmod_noop.c \
$(srcdir)/../shared/posix_tty.c \
$(srcdir)/../shared/sigio.c \
- $(srcdir)/../shared/stdResource.c \
$(srcdir)/../shared/vidmem.c \
$(VTSW_SRC)
nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
diff --git a/hw/xfree86/os-support/solaris/sun_VTsw.c b/hw/xfree86/os-support/solaris/sun_VTsw.c
new file mode 100644
index 000000000..0dc76b8b5
--- /dev/null
+++ b/hw/xfree86/os-support/solaris/sun_VTsw.c
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2009 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 <X11/X.h>
+
+#include "xf86.h"
+#include "xf86Priv.h"
+#include "xf86_OSlib.h"
+
+#include <door.h>
+#include <sys/vtdaemon.h>
+
+/*
+ * Handle the VT-switching interface for Solaris/OpenSolaris
+ */
+
+void
+xf86VTRequest(int sig)
+{
+ if (xf86Info.vtPendingNum != -1)
+ {
+ ioctl(xf86Info.consoleFd, VT_RELDISP, 1);
+ xf86Info.vtPendingNum = -1;
+
+ return;
+ }
+
+ xf86Info.vtRequestsPending = TRUE;
+ return;
+}
+
+Bool
+xf86VTSwitchPending(void)
+{
+ return(xf86Info.vtRequestsPending ? TRUE : FALSE);
+}
+
+Bool
+xf86VTSwitchAway(void)
+{
+ int door_fd;
+ vt_cmd_arg_t vt_door_arg;
+ door_arg_t door_arg;
+
+ xf86Info.vtRequestsPending = FALSE;
+
+ vt_door_arg.vt_ev = VT_EV_HOTKEYS;
+ vt_door_arg.vt_num = xf86Info.vtPendingNum;
+ door_arg.data_ptr = (char *)&vt_door_arg;
+ door_arg.data_size = sizeof (vt_cmd_arg_t);
+ door_arg.rbuf = NULL;
+ door_arg.rsize = 0;
+ door_arg.desc_ptr = NULL;
+ door_arg.desc_num = 0;
+
+ if ((door_fd = open(VT_DAEMON_DOOR_FILE, O_RDONLY)) < 0)
+ return (FALSE);
+
+ if (door_call(door_fd, &door_arg) != 0) {
+ close(door_fd);
+ return (FALSE);
+ }
+
+ close(door_fd);
+ return (TRUE);
+}
+
+Bool
+xf86VTSwitchTo(void)
+{
+ xf86Info.vtRequestsPending = FALSE;
+ if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0)
+ {
+ return(FALSE);
+ }
+ else
+ {
+ return(TRUE);
+ }
+}
diff --git a/hw/xfree86/os-support/solaris/sun_init.c b/hw/xfree86/os-support/solaris/sun_init.c
index 795b0c13c..2c569f02c 100644
--- a/hw/xfree86/os-support/solaris/sun_init.c
+++ b/hw/xfree86/os-support/solaris/sun_init.c
@@ -38,13 +38,15 @@ static Bool Protect0 = FALSE;
#ifdef HAS_USL_VTS
static int VTnum = -1;
static int xf86StartVT = -1;
+static int vtEnabled = 0;
#endif
-#if defined(__SOL8__) || (!defined(__i386__) && !defined(__i386))
-static char fb_dev[PATH_MAX] = "/dev/fb";
-#else
-static char fb_dev[PATH_MAX] = "/dev/console";
-#endif
+/* Device to open as xf86Info.consoleFd */
+static char consoleDev[PATH_MAX] = "/dev/fb";
+
+/* Set by -dev argument on CLI
+ Used by hw/xfree86/common/xf86AutoConfig.c for VIS_GETIDENTIFIER */
+_X_HIDDEN char xf86SolarisFbDev[PATH_MAX] = "/dev/fb";
void
xf86OpenConsole(void)
@@ -93,86 +95,101 @@ xf86OpenConsole(void)
/*
* Setup the virtual terminal manager
*/
- if (VTnum != -1)
+ if ((fd = open("/dev/vt/0",O_RDWR,0)) == -1)
{
- xf86Info.vtno = VTnum;
- from = X_CMDLINE;
+ xf86ErrorF("xf86OpenConsole: Cannot open /dev/vt/0 (%s)\n",
+ strerror(errno));
+ vtEnabled = 0;
}
else
{
- if ((fd = open("/dev/vt00",O_RDWR,0)) < 0)
- FatalError("xf86OpenConsole: Cannot open /dev/vt00 (%s)\n",
- strerror(errno));
+ if (ioctl(fd, VT_ENABLED, &vtEnabled) < 0)
+ {
+ xf86ErrorF("xf86OpenConsole: VT_ENABLED failed (%s)\n",
+ strerror(errno));
+ vtEnabled = 0;
+ }
+ }
+
+ if (vtEnabled == 0)
+ {
+ /* VT not enabled - kernel too old or Sparc platforms
+ without visual_io support */
+ xf86Msg(from, "VT infrastructure is not available\n");
+
+ xf86StartVT = 0;
+ xf86Info.vtno = 0;
+ strlcpy(consoleDev, xf86SolarisFbDev, sizeof(consoleDev));
+ }
+ else
+ {
if (ioctl(fd, VT_GETSTATE, &vtinfo) < 0)
FatalError("xf86OpenConsole: Cannot determine current VT\n");
xf86StartVT = vtinfo.v_active;
- /*
- * There is a SEVERE problem with x86's VT's. The VT_OPENQRY
- * ioctl() will panic the entire system if all 8 (7 VT's+Console)
- * terminals are used. The only other way I've found to determine
- * if there is a free VT is to try activating all the the available
- * VT's and see if they all succeed - if they do, there there is no
- * free VT, and the Xserver cannot continue without panic'ing the
- * system. (It's ugly, but it seems to work.) Note there is a
- * possible race condition here.
- *
- * David Holland 2/23/94
- */
-
- FreeVTslot = 0;
- for (i = 7; (i >= 0) && !FreeVTslot; i--)
- if (ioctl(fd, VT_ACTIVATE, i) != 0)
- FreeVTslot = 1;
+ if (VTnum != -1)
+ {
+ xf86Info.vtno = VTnum;
+ from = X_CMDLINE;
+ }
+ else
+ {
+ if ((ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) ||
+ (xf86Info.vtno == -1)) {
+ FatalError("xf86OpenConsole: Cannot find a free VT\n");
+ }
+ }
- if (!FreeVTslot ||
- (ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) ||
- (xf86Info.vtno == -1))
- FatalError("xf86OpenConsole: Cannot find a free VT\n");
+ xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
+ snprintf(consoleDev, PATH_MAX, "/dev/vt/%d", xf86Info.vtno);
+ }
+ if (fd != -1) {
close(fd);
}
- xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
-
- sprintf(fb_dev, "/dev/vt%02d", xf86Info.vtno); /* Solaris 2.1 x86 */
-
#endif /* HAS_USL_VTS */
if (!KeepTty)
setpgrp();
- if (((xf86Info.consoleFd = open(fb_dev, O_RDWR | O_NDELAY, 0)) < 0))
+ if (((xf86Info.consoleFd = open(consoleDev, O_RDWR | O_NDELAY, 0)) < 0))
FatalError("xf86OpenConsole: Cannot open %s (%s)\n",
- fb_dev, strerror(errno));
+ consoleDev, strerror(errno));
#ifdef HAS_USL_VTS
/* Change ownership of the vt */
- chown(fb_dev, getuid(), getgid());
+ chown(consoleDev, getuid(), getgid());
- /*
- * Now get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
+ if (vtEnabled)
+ {
+ /*
+ * Now get the VT
+ */
+ if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
+ xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
+
+ if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
+ xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
+ if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
+ FatalError("xf86OpenConsole: VT_GETMODE failed\n");
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0)
- FatalError("xf86OpenConsole: VT_GETMODE failed\n");
+ OsSignal(SIGUSR1, xf86VTRequest);
- signal(SIGUSR1, xf86VTRequest);
+ VT.mode = VT_PROCESS;
+ VT.relsig = SIGUSR1;
+ VT.acqsig = SIGUSR1;
- VT.mode = VT_PROCESS;
- VT.relsig = SIGUSR1;
- VT.acqsig = SIGUSR1;
+ if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0)
+ FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed\n");
- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0)
- FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed\n");
+ if (ioctl(xf86Info.consoleFd, VT_SETDISPINFO, atoi(display)) < 0)
+ xf86Msg(X_WARNING, "xf86OpenConsole: VT_SETDISPINFO failed\n");
+ }
#endif
#ifdef KDSETMODE
@@ -180,30 +197,31 @@ xf86OpenConsole(void)
if (i < 0) {
xf86Msg(X_WARNING,
"xf86OpenConsole: KDSETMODE KD_GRAPHICS failed on %s (%s)\n",
- fb_dev, strerror(errno));
+ consoleDev, strerror(errno));
}
#endif
}
else /* serverGeneration != 1 */
{
#ifdef HAS_USL_VTS
- /*
- * Now re-get the VT
- */
- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
-
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
- xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
+ if (vtEnabled) {
+ /*
+ * Now re-get the VT
+ */
+ if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86Info.vtno) != 0)
+ xf86Msg(X_WARNING, "xf86OpenConsole: VT_ACTIVATE failed\n");
- /*
- * If the server doesn't have the VT when the reset occurs,
- * this is to make sure we don't continue until the activate
- * signal is received.
- */
- if (!xf86Screens[0]->vtSema)
- sleep(5);
+ if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, xf86Info.vtno) != 0)
+ xf86Msg(X_WARNING, "xf86OpenConsole: VT_WAITACTIVE failed\n");
+ /*
+ * If the server doesn't have the VT when the reset occurs,
+ * this is to make sure we don't continue until the activate
+ * signal is received.
+ */
+ if (!xf86Screens[0]->vtSema)
+ sleep(5);
+ }
#endif /* HAS_USL_VTS */
}
@@ -218,7 +236,7 @@ xf86CloseConsole(void)
#if !defined(__i386__) && !defined(__i386) && !defined(__x86)
- if (!xf86DoProbe && !xf86DoConfigure) {
+ if (!xf86DoConfigure) {
int fd;
/*
@@ -228,7 +246,7 @@ xf86CloseConsole(void)
* at this point whether this should be done for all framebuffers in
* the system, rather than only the console.
*/
- if ((fd = open("/dev/fb", O_RDWR, 0)) < 0) {
+ if ((fd = open(xf86SolarisFbDev, O_RDWR, 0)) < 0) {
xf86Msg(X_WARNING,
"xf86CloseConsole(): unable to open framebuffer (%s)\n",
strerror(errno));
@@ -267,30 +285,16 @@ xf86CloseConsole(void)
#endif
#ifdef HAS_USL_VTS
+ if (vtEnabled == 1) {
+ if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1)
+ {
+ VT.mode = VT_AUTO; /* Set default vt handling */
+ ioctl(xf86Info.consoleFd, VT_SETMODE, &VT);
+ }
- /*
- * Solaris 2.1 x86 doesn't seem to "switch" back to the console when the VT
- * is relinquished and its mode is reset to auto. Also, Solaris 2.1 seems
- * to associate vt00 with the console so I've opened the "console" back up
- * and made it the active vt again in text mode and then closed it. There
- * must be a better hack for this but I'm not aware of one at this time.
- *
- * Doug Anson 11/6/93
- * danson@lgc.com
- *
- * Fixed - 12/5/93 - David Holland - davidh@dorite.use.com
- * Did the whole thing similarly to the way linux does it
- */
-
- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) != -1)
- {
- VT.mode = VT_AUTO; /* Set default vt handling */
- ioctl(xf86Info.consoleFd, VT_SETMODE, &VT);
+ /* Activate the VT that X was started on */
+ ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86StartVT);
}
-
- /* Activate the VT that X was started on */
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, xf86StartVT);
-
#endif /* HAS_USL_VTS */
close(xf86Info.consoleFd);
@@ -323,7 +327,7 @@ xf86ProcessArgument(int argc, char **argv, int i)
if ((argv[i][0] == 'v') && (argv[i][1] == 't'))
{
- if (sscanf(argv[i], "vt%2d", &VTnum) == 0)
+ if (sscanf(argv[i], "vt%d", &VTnum) == 0)
{
UseMsg();
VTnum = -1;
@@ -337,8 +341,7 @@ xf86ProcessArgument(int argc, char **argv, int i)
if ((i + 1) < argc) {
if (!strcmp(argv[i], "-dev")) {
- strncpy(fb_dev, argv[i+1], PATH_MAX);
- fb_dev[PATH_MAX - 1] = '\0';
+ strlcpy(xf86SolarisFbDev, argv[i+1], sizeof(xf86SolarisFbDev));
return 2;
}
}
@@ -349,7 +352,7 @@ xf86ProcessArgument(int argc, char **argv, int i)
void xf86UseMsg()
{
#ifdef HAS_USL_VTS
- ErrorF("vtXX Use the specified VT number\n");
+ ErrorF("vtX Use the specified VT number\n");
#endif
ErrorF("-dev <fb> Framebuffer device\n");
ErrorF("-keeptty Don't detach controlling tty\n");
diff --git a/hw/xfree86/os-support/xf86_OSlib.h b/hw/xfree86/os-support/xf86_OSlib.h
index 48d922301..c53fc0dac 100644
--- a/hw/xfree86/os-support/xf86_OSlib.h
+++ b/hw/xfree86/os-support/xf86_OSlib.h
@@ -117,15 +117,9 @@
# include <sys/seg.h>
# endif /* SVR4 && !sun */
/* V86SC_IOPL was moved to <sys/sysi86.h> on Solaris 7 and later */
-# if defined(sun) && defined (SVR4) /* Solaris? */
-# if defined(__i386__) || defined(__i386) || defined(__x86) /* on x86 or x64? */
-# if !defined(V86SC_IOPL) /* Solaris 7 or later? */
-# include <sys/v86.h> /* Nope */
-# endif
-# endif /* V86SC_IOPL */
-# else
-# include <sys/v86.h> /* Not solaris */
-# endif /* sun && i386 && SVR4 */
+# if !defined(V86SC_IOPL) /* Solaris 7 or later? */
+# include <sys/v86.h> /* Nope */
+# endif
# if defined(sun) && (defined (__i386__) || defined(__i386) || defined(__x86)) && defined (SVR4)
# include <sys/psw.h>
# endif
@@ -140,7 +134,7 @@
# include <sys/mmap.h> /* MMAP driver header */
# endif
-# if !defined(sun) || (!defined(sparc) && !defined(__SOL8__))
+# if !defined(sun) || defined(HAVE_SYS_VT_H)
# define HAS_USL_VTS
# endif
# if !defined(sun)
@@ -155,10 +149,14 @@
# define LED_NUM NLKED
# define LED_SCR SLKED
# elif defined(HAS_USL_VTS)
-# include <sys/at_ansi.h>
+# if !defined(sun)
+# include <sys/at_ansi.h>
+# endif
# include <sys/kd.h>
# include <sys/vt.h>
-# elif defined(sun)
+# endif
+
+# if defined(sun)
# include <sys/fbio.h>
# include <sys/kbd.h>
# include <sys/kbio.h>
@@ -198,9 +196,8 @@
# endif /* SVR4 */
-# if defined(sun) && (defined (__i386__) || defined(__i386)) && defined (SVR4) && !defined(__SOL8__)
+# if defined(sun) && defined(HAS_USL_VTS)
# define USE_VT_SYSREQ
-# define VT_SYSREQ_DEFAULT TRUE
# endif
#endif /* (SYSV || SVR4) */
diff --git a/hw/xfree86/os-support/xf86_OSproc.h b/hw/xfree86/os-support/xf86_OSproc.h
index 507db1862..c1a117334 100644
--- a/hw/xfree86/os-support/xf86_OSproc.h
+++ b/hw/xfree86/os-support/xf86_OSproc.h
@@ -68,10 +68,6 @@
#ifndef _XF86_OSPROC_H
#define _XF86_OSPROC_H
-#ifdef XF86_OS_PRIVS
-#include "xf86Pci.h"
-#endif
-
/*
* The actual prototypes have been pulled into this seperate file so
* that they can can be used without pulling in all of the OS specific
@@ -147,9 +143,6 @@ extern _X_EXPORT void xf86SetTVOut(int);
extern _X_EXPORT void xf86SetRGBOut(void);
#endif
extern _X_EXPORT void xf86OSRingBell(int, int, int);
-extern _X_EXPORT void xf86BusToMem(unsigned char *, unsigned char *, int);
-extern _X_EXPORT void xf86MemToBus(unsigned char *, unsigned char *, int);
-extern _X_EXPORT void xf86UDelay(long usec);
extern _X_EXPORT void xf86SetReallySlowBcopy(void);
extern _X_EXPORT void xf86SlowBcopy(unsigned char *, unsigned char *, int);
extern _X_EXPORT int xf86OpenSerial(pointer options);
@@ -214,15 +207,6 @@ extern _X_EXPORT int xf86ProcessArgument(int, char **, int);
extern _X_EXPORT void xf86UseMsg(void);
extern _X_EXPORT PMClose xf86OSPMOpen(void);
-#ifdef NEED_OS_RAC_PROTOS
-/* RAC-related privs */
-/* internal to os-support layer */
-extern _X_EXPORT resPtr xf86StdAccResFromOS(resPtr ret);
-
-/* available to the common layer */
-extern _X_EXPORT resPtr xf86AccResFromOS(resPtr ret);
-#endif /* NEED_OS_RAC_PROTOS */
-
extern _X_EXPORT void xf86MakeNewMapping(int, int, unsigned long, unsigned long, pointer);
extern _X_EXPORT void xf86InitVidMem(void);
diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am
index c0622090c..b8fab2835 100644
--- a/hw/xfree86/parser/Makefile.am
+++ b/hw/xfree86/parser/Makefile.am
@@ -1,13 +1,14 @@
if INSTALL_LIBXF86CONFIG
-lib_LTLIBRARIES = libxf86config.la
+noinst_LTLIBRARIES = libxf86config_internal.la
+lib_LIBRARIES = libxf86config.a
LIBHEADERS = \
xf86Optrec.h \
xf86Parser.h
else
-noinst_LTLIBRARIES = libxf86config.la
+noinst_LTLIBRARIES = libxf86config_internal.la
endif
-libxf86config_la_SOURCES = \
+INTERNAL_SOURCES= \
Device.c \
Files.c \
Flags.c \
@@ -25,6 +26,13 @@ libxf86config_la_SOURCES = \
DRI.c \
Extensions.c
+libxf86config_internal_la_SOURCES = \
+ $(INTERNAL_SOURCES)
+
+libxf86config_a_SOURCES = \
+ $(INTERNAL_SOURCES)
+libxf86config_a_CFLAGS = $(AM_CFLAGS)
+
AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
EXTRA_DIST = \
diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c
index b474ff318..6b71f4677 100644
--- a/hw/xfree86/ramdac/xf86Cursor.c
+++ b/hw/xfree86/ramdac/xf86Cursor.c
@@ -303,8 +303,7 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
if (pCurs == NullCursor) { /* means we're supposed to remove the cursor */
if (ScreenPriv->SWCursor ||
- !(pDev == inputInfo.pointer || !IsMaster(pDev) &&
- GetMaster(pDev->u.master, MASTER_POINTER) == inputInfo.pointer))
+ !(GetMaster(pDev, MASTER_POINTER) == inputInfo.pointer))
(*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor, x, y);
else if (ScreenPriv->isUp) {
xf86SetCursor(pScreen, NullCursor, x, y);
diff --git a/hw/xfree86/ramdac/xf86CursorPriv.h b/hw/xfree86/ramdac/xf86CursorPriv.h
index f82be2edc..32be9c2f3 100644
--- a/hw/xfree86/ramdac/xf86CursorPriv.h
+++ b/hw/xfree86/ramdac/xf86CursorPriv.h
@@ -45,6 +45,6 @@ Bool xf86InitHardwareCursor(ScreenPtr pScreen, xf86CursorInfoPtr infoPtr);
CARD32 xf86ReverseBitOrder(CARD32 data);
-extern DevPrivateKey xf86CursorScreenKey;
+extern _X_EXPORT DevPrivateKey xf86CursorScreenKey;
#endif /* _XF86CURSORPRIV_H */
diff --git a/hw/xfree86/ramdac/xf86RamDacCmap.c b/hw/xfree86/ramdac/xf86RamDacCmap.c
index 600fe3f07..c6dc83157 100644
--- a/hw/xfree86/ramdac/xf86RamDacCmap.c
+++ b/hw/xfree86/ramdac/xf86RamDacCmap.c
@@ -39,9 +39,6 @@
#include "colormapst.h"
#include "xf86RamDacPriv.h"
-#include "xf86PciInfo.h"
-#include "xf86Pci.h"
-
void
RamDacLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors,
VisualPtr pVisual)
diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c
index 4986b5b29..26f5911d5 100644
--- a/hw/xfree86/vbe/vbe.c
+++ b/hw/xfree86/vbe/vbe.c
@@ -18,8 +18,7 @@
#include "xf86.h"
#include "vbe.h"
#include <X11/Xarch.h>
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
#define VERSION(x) VBE_VERSION_MAJOR(x),VBE_VERSION_MINOR(x)
diff --git a/hw/xfree86/vgahw/vgaCmap.c b/hw/xfree86/vgahw/vgaCmap.c
index 095e480a3..5bd38b468 100644
--- a/hw/xfree86/vgahw/vgaCmap.c
+++ b/hw/xfree86/vgahw/vgaCmap.c
@@ -36,8 +36,7 @@
#include "xf86.h"
#include "vgaHW.h"
-#define _XF86DGA_SERVER_
-#include <X11/extensions/xf86dgastr.h>
+#include <X11/extensions/xf86dgaproto.h>
#include "dgaproc.h"
diff --git a/hw/xfree86/vgahw/vgaHW.c b/hw/xfree86/vgahw/vgaHW.c
index 004376b75..025dde2da 100644
--- a/hw/xfree86/vgahw/vgaHW.c
+++ b/hw/xfree86/vgahw/vgaHW.c
@@ -793,7 +793,7 @@ vgaHWRestoreFonts(ScrnInfoPtr scrninfp, vgaRegPtr restore)
if (hwp->FontInfo1) {
hwp->writeSeq(hwp, 0x02, 0x04); /* write to plane 2 */
hwp->writeGr(hwp, 0x04, 0x02); /* read plane 2 */
- slowbcopy_tobus(hwp->FontInfo1, hwp->Base, FONT_AMOUNT);
+ xf86SlowBcopy(hwp->FontInfo1, hwp->Base, FONT_AMOUNT);
}
#endif
@@ -801,7 +801,7 @@ vgaHWRestoreFonts(ScrnInfoPtr scrninfp, vgaRegPtr restore)
if (hwp->FontInfo2) {
hwp->writeSeq(hwp, 0x02, 0x08); /* write to plane 3 */
hwp->writeGr(hwp, 0x04, 0x03); /* read plane 3 */
- slowbcopy_tobus(hwp->FontInfo2, hwp->Base, FONT_AMOUNT);
+ xf86SlowBcopy(hwp->FontInfo2, hwp->Base, FONT_AMOUNT);
}
#endif
@@ -809,10 +809,10 @@ vgaHWRestoreFonts(ScrnInfoPtr scrninfp, vgaRegPtr restore)
if (hwp->TextInfo) {
hwp->writeSeq(hwp, 0x02, 0x01); /* write to plane 0 */
hwp->writeGr(hwp, 0x04, 0x00); /* read plane 0 */
- slowbcopy_tobus(hwp->TextInfo, hwp->Base, TEXT_AMOUNT);
+ xf86SlowBcopy(hwp->TextInfo, hwp->Base, TEXT_AMOUNT);
hwp->writeSeq(hwp, 0x02, 0x02); /* write to plane 1 */
hwp->writeGr(hwp, 0x04, 0x01); /* read plane 1 */
- slowbcopy_tobus((unsigned char *)hwp->TextInfo + TEXT_AMOUNT,
+ xf86SlowBcopy((unsigned char *)hwp->TextInfo + TEXT_AMOUNT,
hwp->Base, TEXT_AMOUNT);
}
#endif
@@ -971,24 +971,24 @@ vgaHWSaveFonts(ScrnInfoPtr scrninfp, vgaRegPtr save)
if (hwp->FontInfo1 || (hwp->FontInfo1 = xalloc(FONT_AMOUNT))) {
hwp->writeSeq(hwp, 0x02, 0x04); /* write to plane 2 */
hwp->writeGr(hwp, 0x04, 0x02); /* read plane 2 */
- slowbcopy_frombus(hwp->Base, hwp->FontInfo1, FONT_AMOUNT);
+ xf86SlowBcopy(hwp->Base, hwp->FontInfo1, FONT_AMOUNT);
}
#endif /* SAVE_FONT1 */
#if SAVE_FONT2
if (hwp->FontInfo2 || (hwp->FontInfo2 = xalloc(FONT_AMOUNT))) {
hwp->writeSeq(hwp, 0x02, 0x08); /* write to plane 3 */
hwp->writeGr(hwp, 0x04, 0x03); /* read plane 3 */
- slowbcopy_frombus(hwp->Base, hwp->FontInfo2, FONT_AMOUNT);
+ xf86SlowBcopy(hwp->Base, hwp->FontInfo2, FONT_AMOUNT);
}
#endif /* SAVE_FONT2 */
#if SAVE_TEXT
if (hwp->TextInfo || (hwp->TextInfo = xalloc(2 * TEXT_AMOUNT))) {
hwp->writeSeq(hwp, 0x02, 0x01); /* write to plane 0 */
hwp->writeGr(hwp, 0x04, 0x00); /* read plane 0 */
- slowbcopy_frombus(hwp->Base, hwp->TextInfo, TEXT_AMOUNT);
+ xf86SlowBcopy(hwp->Base, hwp->TextInfo, TEXT_AMOUNT);
hwp->writeSeq(hwp, 0x02, 0x02); /* write to plane 1 */
hwp->writeGr(hwp, 0x04, 0x01); /* read plane 1 */
- slowbcopy_frombus(hwp->Base,
+ xf86SlowBcopy(hwp->Base,
(unsigned char *)hwp->TextInfo + TEXT_AMOUNT, TEXT_AMOUNT);
}
#endif /* SAVE_TEXT */
diff --git a/hw/xfree86/vgahw/vgaHW.h b/hw/xfree86/vgahw/vgaHW.h
index 0761ddbe0..7e63492d8 100644
--- a/hw/xfree86/vgahw/vgaHW.h
+++ b/hw/xfree86/vgahw/vgaHW.h
@@ -25,8 +25,7 @@
#include "xf86DDC.h"
#include "globals.h"
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
extern _X_EXPORT int vgaHWGetIndex(void);
diff --git a/hw/xfree86/x86emu/sys.c b/hw/xfree86/x86emu/sys.c
index e15fb0931..34d29db56 100644
--- a/hw/xfree86/x86emu/sys.c
+++ b/hw/xfree86/x86emu/sys.c
@@ -45,6 +45,7 @@
#include "x86emu/regs.h"
#include "x86emu/debug.h"
#include "x86emu/prim_ops.h"
+#include "../common/compiler.h"
#ifndef NO_SYS_HEADERS
#include <string.h>
#endif
@@ -53,164 +54,6 @@
X86EMU_sysEnv _X86EMU_env; /* Global emulator machine state */
X86EMU_intrFuncs _X86EMU_intrTab[256];
-/*----------------------------- Implementation ----------------------------*/
-#if defined(__alpha__) || defined(__alpha)
-/* to cope with broken egcs-1.1.2 :-(((( */
-
-#define ALPHA_UALOADS
-/*
- * inline functions to do unaligned accesses
- * from linux/include/asm-alpha/unaligned.h
- */
-
-/*
- * EGCS 1.1 knows about arbitrary unaligned loads. Define some
- * packed structures to talk about such things with.
- */
-
-#if defined(__GNUC__)
-struct __una_u64 { unsigned long x __attribute__((packed)); };
-struct __una_u32 { unsigned int x __attribute__((packed)); };
-struct __una_u16 { unsigned short x __attribute__((packed)); };
-#endif
-
-static __inline__ unsigned long ldq_u(unsigned long * r11)
-{
-#if defined(__GNUC__)
- const struct __una_u64 *ptr = (const struct __una_u64 *) r11;
- return ptr->x;
-#else
- unsigned long r1,r2;
- __asm__("ldq_u %0,%3\n\t"
- "ldq_u %1,%4\n\t"
- "extql %0,%2,%0\n\t"
- "extqh %1,%2,%1"
- :"=&r" (r1), "=&r" (r2)
- :"r" (r11),
- "m" (*r11),
- "m" (*(const unsigned long *)(7+(char *) r11)));
- return r1 | r2;
-#endif
-}
-
-static __inline__ unsigned long ldl_u(unsigned int * r11)
-{
-#if defined(__GNUC__)
- const struct __una_u32 *ptr = (const struct __una_u32 *) r11;
- return ptr->x;
-#else
- unsigned long r1,r2;
- __asm__("ldq_u %0,%3\n\t"
- "ldq_u %1,%4\n\t"
- "extll %0,%2,%0\n\t"
- "extlh %1,%2,%1"
- :"=&r" (r1), "=&r" (r2)
- :"r" (r11),
- "m" (*r11),
- "m" (*(const unsigned long *)(3+(char *) r11)));
- return r1 | r2;
-#endif
-}
-
-static __inline__ unsigned long ldw_u(unsigned short * r11)
-{
-#if defined(__GNUC__)
- const struct __una_u16 *ptr = (const struct __una_u16 *) r11;
- return ptr->x;
-#else
- unsigned long r1,r2;
- __asm__("ldq_u %0,%3\n\t"
- "ldq_u %1,%4\n\t"
- "extwl %0,%2,%0\n\t"
- "extwh %1,%2,%1"
- :"=&r" (r1), "=&r" (r2)
- :"r" (r11),
- "m" (*r11),
- "m" (*(const unsigned long *)(1+(char *) r11)));
- return r1 | r2;
-#endif
-}
-
-/*
- * Elemental unaligned stores
- */
-
-static __inline__ void stq_u(unsigned long r5, unsigned long * r11)
-{
-#if defined(__GNUC__)
- struct __una_u64 *ptr = (struct __una_u64 *) r11;
- ptr->x = r5;
-#else
- unsigned long r1,r2,r3,r4;
-
- __asm__("ldq_u %3,%1\n\t"
- "ldq_u %2,%0\n\t"
- "insqh %6,%7,%5\n\t"
- "insql %6,%7,%4\n\t"
- "mskqh %3,%7,%3\n\t"
- "mskql %2,%7,%2\n\t"
- "bis %3,%5,%3\n\t"
- "bis %2,%4,%2\n\t"
- "stq_u %3,%1\n\t"
- "stq_u %2,%0"
- :"=m" (*r11),
- "=m" (*(unsigned long *)(7+(char *) r11)),
- "=&r" (r1), "=&r" (r2), "=&r" (r3), "=&r" (r4)
- :"r" (r5), "r" (r11));
-#endif
-}
-
-static __inline__ void stl_u(unsigned long r5, unsigned int * r11)
-{
-#if defined(__GNUC__)
- struct __una_u32 *ptr = (struct __una_u32 *) r11;
- ptr->x = r5;
-#else
- unsigned long r1,r2,r3,r4;
-
- __asm__("ldq_u %3,%1\n\t"
- "ldq_u %2,%0\n\t"
- "inslh %6,%7,%5\n\t"
- "insll %6,%7,%4\n\t"
- "msklh %3,%7,%3\n\t"
- "mskll %2,%7,%2\n\t"
- "bis %3,%5,%3\n\t"
- "bis %2,%4,%2\n\t"
- "stq_u %3,%1\n\t"
- "stq_u %2,%0"
- :"=m" (*r11),
- "=m" (*(unsigned long *)(3+(char *) r11)),
- "=&r" (r1), "=&r" (r2), "=&r" (r3), "=&r" (r4)
- :"r" (r5), "r" (r11));
-#endif
-}
-
-static __inline__ void stw_u(unsigned long r5, unsigned short * r11)
-{
-#if defined(__GNUC__)
- struct __una_u16 *ptr = (struct __una_u16 *) r11;
- ptr->x = r5;
-#else
- unsigned long r1,r2,r3,r4;
-
- __asm__("ldq_u %3,%1\n\t"
- "ldq_u %2,%0\n\t"
- "inswh %6,%7,%5\n\t"
- "inswl %6,%7,%4\n\t"
- "mskwh %3,%7,%3\n\t"
- "mskwl %2,%7,%2\n\t"
- "bis %3,%5,%3\n\t"
- "bis %2,%4,%2\n\t"
- "stq_u %3,%1\n\t"
- "stq_u %2,%0"
- :"=m" (*r11),
- "=m" (*(unsigned long *)(1+(char *) r11)),
- "=&r" (r1), "=&r" (r2), "=&r" (r3), "=&r" (r4)
- :"r" (r5), "r" (r11));
-#endif
-}
-#endif
-
/****************************************************************************
PARAMETERS:
addr - Emulator memory address to read
@@ -262,13 +105,7 @@ u16 X86API rdw(
}
else
#endif
-#if defined(ALPHA_UALOADS)
val = ldw_u((u16*)(M.mem_base + addr));
-#elif defined(IA64_UALOADS)
- val = uldw((u16*)(M.mem_base + addr));
-#else
- val = *(u16*)(M.mem_base + addr);
-#endif
DB( if (DEBUG_MEM_TRACE())
printk("%#08x 2 -> %#x\n", addr, val);)
return val;
@@ -301,13 +138,7 @@ u32 X86API rdl(
}
else
#endif
-#if defined(ALPHA_UALOADS)
val = ldl_u((u32*)(M.mem_base + addr));
-#elif defined(IA64_UALOADS)
- val = uldl((u32*)(M.mem_base + addr));
-#else
- val = *(u32*)(M.mem_base + addr);
-#endif
DB( if (DEBUG_MEM_TRACE())
printk("%#08x 4 -> %#x\n", addr, val);)
return val;
@@ -359,13 +190,7 @@ DB( if (DEBUG_MEM_TRACE())
}
else
#endif
-#if defined(ALPHA_UALOADS)
stw_u(val,(u16*)(M.mem_base + addr));
-#elif defined(IA64_UALOADS)
- ustw(val,(u16*)(M.mem_base + addr));
-#else
- *(u16*)(M.mem_base + addr) = val;
-#endif
}
/****************************************************************************
@@ -395,13 +220,7 @@ DB( if (DEBUG_MEM_TRACE())
}
else
#endif
-#if defined(ALPHA_UALOADS)
stl_u(val,(u32*)(M.mem_base + addr));
-#elif defined(IA64_UALOADS)
- ustl(val,(u32*)(M.mem_base + addr));
-#else
- *(u32*)(M.mem_base + addr) = val;
-#endif
}
/****************************************************************************
diff --git a/hw/xfree86/xaa/xaaFillRect.c b/hw/xfree86/xaa/xaaFillRect.c
index 7c319bba8..0b83ef3ee 100644
--- a/hw/xfree86/xaa/xaaFillRect.c
+++ b/hw/xfree86/xaa/xaaFillRect.c
@@ -812,7 +812,7 @@ WriteColumn(
src = pSrc + (yoff * srcwidth);
- dwords = ((w * Bpp) + 3) >> 2;
+ dwords = bytes_to_int32(w * Bpp);
if((infoRec->ImageWriteFlags & CPU_TRANSFER_PAD_QWORD) &&
((dwords * h) & 0x01)) {
diff --git a/hw/xfree86/xaa/xaaImage.c b/hw/xfree86/xaa/xaaImage.c
index 85461c8ad..4933beea3 100644
--- a/hw/xfree86/xaa/xaaImage.c
+++ b/hw/xfree86/xaa/xaaImage.c
@@ -92,7 +92,7 @@ XAAWritePixmap32To24(
int trans
){
XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_SCRNINFOPTR(pScrn);
- int count, dwords = ((w * 3) + 3) >> 2;
+ int count, dwords = bytes_to_int32(w * 3);
CARD32 *src, *dst;
Bool PlusOne = FALSE;
@@ -227,7 +227,7 @@ XAAWritePixmap (
BAD_ALIGNMENT:
- dwords = ((w * Bpp) + 3) >> 2;
+ dwords = bytes_to_int32(w * Bpp);
if((infoRec->ImageWriteFlags & CPU_TRANSFER_PAD_QWORD) &&
((dwords * h) & 0x01)) {
@@ -351,7 +351,7 @@ XAAWritePixmapScanline (
BAD_ALIGNMENT:
- dwords = ((w * Bpp) + 3) >> 2;
+ dwords = bytes_to_int32(w * Bpp);
(*infoRec->SetupForScanlineImageWrite)(
pScrn, rop, planemask, trans, bpp, depth);
diff --git a/hw/xfree86/xaa/xaaPCache.c b/hw/xfree86/xaa/xaaPCache.c
index dbbeac668..7e3011bd5 100644
--- a/hw/xfree86/xaa/xaaPCache.c
+++ b/hw/xfree86/xaa/xaaPCache.c
@@ -1556,7 +1556,7 @@ XAACacheMonoStipple(ScrnInfoPtr pScrn, PixmapPtr pPix)
} else funcNo = 2;
pad = BitmapBytePad(pCache->w * bpp);
- dwords = pad >> 2;
+ dwords = bytes_to_int32(pad);
dstPtr = data = (unsigned char*)xalloc(pad * pCache->h);
srcPtr = (unsigned char*)pPix->devPrivate.ptr;
diff --git a/hw/xfree86/xaa/xaaPict.c b/hw/xfree86/xaa/xaaPict.c
index 784c649a4..e059d3d65 100644
--- a/hw/xfree86/xaa/xaaPict.c
+++ b/hw/xfree86/xaa/xaaPict.c
@@ -75,12 +75,18 @@ XAAGetPixelFromRGBA (
gshift = bbits;
rshift = gshift + gbits;
ashift = rshift + rbits;
- } else { /* PICT_TYPE_ABGR */
+ } else if(PICT_FORMAT_TYPE(format) == PICT_TYPE_ABGR) {
rshift = 0;
gshift = rbits;
bshift = gshift + gbits;
ashift = bshift + bbits;
- }
+ } else if(PICT_FORMAT_TYPE(format) == PICT_TYPE_BGRA) {
+ bshift = PICT_FORMAT_BPP(format) - bbits;
+ gshift = bshift - gbits;
+ rshift = gshift - rbits;
+ ashift = 0;
+ } else
+ return FALSE;
*pixel |= ( blue >> (16 - bbits)) << bshift;
*pixel |= ( red >> (16 - rbits)) << rshift;
@@ -116,12 +122,18 @@ XAAGetRGBAFromPixel(
gshift = bbits;
rshift = gshift + gbits;
ashift = rshift + rbits;
- } else { /* PICT_TYPE_ABGR */
+ } else if(PICT_FORMAT_TYPE(format) == PICT_TYPE_ABGR) {
rshift = 0;
gshift = rbits;
bshift = gshift + gbits;
ashift = bshift + bbits;
- }
+ } else if(PICT_FORMAT_TYPE(format) == PICT_TYPE_BGRA) {
+ bshift = PICT_FORMAT_BPP(format) - bbits;
+ gshift = bshift - gbits;
+ rshift = gshift - rbits;
+ ashift = 0;
+ } else
+ return FALSE;
*red = ((pixel >> rshift ) & ((1 << rbits) - 1)) << (16 - rbits);
while(rbits < 16) {
diff --git a/hw/xnest/Events.c b/hw/xnest/Events.c
index c2c09aaa6..277718ba3 100644
--- a/hw/xnest/Events.c
+++ b/hw/xnest/Events.c
@@ -109,7 +109,7 @@ xnestQueueKeyEvent(int type, unsigned int keycode)
lastEventTime = GetTimeInMillis();
n = GetKeyboardEvents(xnestEvents, xnestKeyboardDevice, type, keycode);
for (i = 0; i < n; i++)
- mieqEnqueue(xnestKeyboardDevice, (xnestEvents + i)->event);
+ mieqEnqueue(xnestKeyboardDevice, (InternalEvent*)(xnestEvents + i)->event);
}
void
@@ -138,7 +138,7 @@ xnestCollectEvents(void)
n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonPress,
X.xbutton.button, POINTER_RELATIVE, 0, 0, NULL);
for (i = 0; i < n; i++)
- mieqEnqueue(xnestPointerDevice, (xnestEvents + i)->event);
+ mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
break;
case ButtonRelease:
@@ -147,7 +147,7 @@ xnestCollectEvents(void)
n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonRelease,
X.xbutton.button, POINTER_RELATIVE, 0, 0, NULL);
for (i = 0; i < n; i++)
- mieqEnqueue(xnestPointerDevice, (xnestEvents + i)->event);
+ mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
break;
case MotionNotify:
@@ -157,7 +157,7 @@ xnestCollectEvents(void)
n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
0, POINTER_ABSOLUTE, 0, 2, valuators);
for (i = 0; i < n; i++)
- mieqEnqueue(xnestPointerDevice, (xnestEvents + i)->event);
+ mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
break;
case FocusIn:
@@ -190,7 +190,7 @@ xnestCollectEvents(void)
n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
0, POINTER_ABSOLUTE, 0, 2, valuators);
for (i = 0; i < n; i++)
- mieqEnqueue(xnestPointerDevice, (xnestEvents + i)->event);
+ mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
xnestDirectInstallColormaps(pScreen);
}
}
diff --git a/hw/xnest/Init.c b/hw/xnest/Init.c
index 49a52d776..0765f73d0 100644
--- a/hw/xnest/Init.c
+++ b/hw/xnest/Init.c
@@ -89,13 +89,18 @@ InitOutput(ScreenInfo *screenInfo, int argc, char *argv[])
void
InitInput(int argc, char *argv[])
{
- xnestPointerDevice = AddInputDevice(serverClient, xnestPointerProc, TRUE);
- xnestKeyboardDevice = AddInputDevice(serverClient, xnestKeyboardProc, TRUE);
+ int rc;
+ rc = AllocDevicePair(serverClient, "Xnest",
+ &xnestPointerDevice,
+ &xnestKeyboardDevice,
+ xnestPointerProc,
+ xnestKeyboardProc,
+ FALSE);
- GetEventList(&xnestEvents);
+ if (rc != Success)
+ FatalError("Failed to init Xnest default devices.\n");
- RegisterPointerDevice(xnestPointerDevice);
- RegisterKeyboardDevice(xnestKeyboardDevice);
+ GetEventList(&xnestEvents);
mieqInit();
diff --git a/hw/xnest/Keyboard.c b/hw/xnest/Keyboard.c
index f94e26079..1835c7071 100644
--- a/hw/xnest/Keyboard.c
+++ b/hw/xnest/Keyboard.c
@@ -191,7 +191,7 @@ XkbError:
(char *)values.auto_repeats,
sizeof(values.auto_repeats));
- InitKeyboardDeviceStruct(&pDev->public, &keySyms,
+ InitKeyboardDeviceStruct(pDev, NULL,
xnestBell, xnestChangeKeyboardControl);
xfree(keymap);
return Success;
@@ -206,29 +206,19 @@ LegalModifier(unsigned int key, DeviceIntPtr pDev)
void
xnestUpdateModifierState(unsigned int state)
{
-#if 0
DeviceIntPtr pDev = xnestKeyboardDevice;
KeyClassPtr keyc = pDev->key;
int i;
CARD8 mask;
+ int xkb_state;
if (!pDev)
return;
-/* This is pretty broken.
- *
- * What should happen is that focus out should do as a VT switch does in
- * traditional servers: fake releases for all keys (and buttons too, come
- * to think of it) currently down. Then, on focus in, get the state from
- * the host, and fake keypresses for everything currently down.
- *
- * So I'm leaving this broken for a little while. Sorry, folks.
- *
- * -daniels
- */
+ xkb_state = XkbStateFieldFromRec(&pDev->key->xkbInfo->state);
state = state & 0xff;
- if (keyc->state == state)
+ if (xkb_state == state)
return;
for (i = 0, mask = 1; i < 8; i++, mask <<= 1) {
@@ -236,7 +226,7 @@ xnestUpdateModifierState(unsigned int state)
/* Modifier is down, but shouldn't be
*/
- if ((keyc->state & mask) && !(state & mask)) {
+ if ((xkb_state & mask) && !(state & mask)) {
int count = keyc->modifierKeyCount[i];
for (key = 0; key < MAP_LENGTH; key++)
@@ -257,12 +247,11 @@ xnestUpdateModifierState(unsigned int state)
/* Modifier shoud be down, but isn't
*/
- if (!(keyc->state & mask) && (state & mask))
+ if (!(xkb_state & mask) && (state & mask))
for (key = 0; key < MAP_LENGTH; key++)
if (keyc->xkbInfo->desc->map->modmap[key] & mask) {
xnestQueueKeyEvent(KeyPress, key);
break;
}
}
-#endif
}
diff --git a/hw/xnest/Pointer.c b/hw/xnest/Pointer.c
index c5d361c63..4de467391 100644
--- a/hw/xnest/Pointer.c
+++ b/hw/xnest/Pointer.c
@@ -34,6 +34,7 @@ is" without express or implied warranty.
#include "Args.h"
#include "xserver-properties.h"
+#include "exevents.h" /* For XIGetKnownProperty */
DeviceIntPtr xnestPointerDevice = NULL;
diff --git a/hw/xquartz/GL/capabilities.c b/hw/xquartz/GL/capabilities.c
index bc3966f4b..99b9eae61 100644
--- a/hw/xquartz/GL/capabilities.c
+++ b/hw/xquartz/GL/capabilities.c
@@ -425,7 +425,7 @@ static CGLError handleRendererDescriptions(CGLRendererInfoObj info, GLint r,
handleAccumulationModes(c, flags);
- return 0;
+ return kCGLNoError;
}
static void initCapabilities(struct glCapabilities *cap) {
@@ -491,56 +491,36 @@ void freeGlCapabilities(struct glCapabilities *cap) {
cap->configurations = NULL;
}
-enum { MAX_DISPLAYS = 3 };
-
/*Return true if an error occured. */
bool getGlCapabilities(struct glCapabilities *cap) {
- CGDirectDisplayID dspys[MAX_DISPLAYS];
- CGDisplayErr err;
- CGOpenGLDisplayMask displayMask;
- CGDisplayCount i, displayCount = 0;
+ CGLRendererInfoObj info;
+ CGLError err;
+ GLint numRenderers = 0, r;
initCapabilities(cap);
-
- err = CGGetActiveDisplayList(MAX_DISPLAYS, dspys, &displayCount);
- if(err) {
- fprintf(stderr, "CGGetActiveDisplayList error: %s\n", CGLErrorString(err));
- return true;
- }
-
- for(i = 0; i < displayCount; ++i) {
- displayMask = CGDisplayIDToOpenGLDisplayMask(dspys[i]);
-
- CGLRendererInfoObj info;
- GLint numRenderers = 0, r, renderCount = 0;
-
- err = CGLQueryRendererInfo(displayMask, &info, &numRenderers);
- if(err) {
+ err = CGLQueryRendererInfo((GLuint)-1, &info, &numRenderers);
+ if(err) {
fprintf(stderr, "CGLQueryRendererInfo error: %s\n", CGLErrorString(err));
- fprintf(stderr, "trying to continue...\n");
- continue;
+ return err;
}
-
- CGLDescribeRenderer(info, 0, kCGLRPRendererCount, &renderCount);
- for(r = 0; r < renderCount; ++r) {
- CGLError derr;
+ for(r = 0; r < numRenderers; r++) {
struct glCapabilitiesConfig tmpconf, *conf;
initConfig(&tmpconf);
- derr = handleRendererDescriptions(info, r, &tmpconf);
- if(derr) {
- fprintf(stderr, "error: %s\n", CGLErrorString(derr));
- fprintf(stderr, "trying to continue...\n");
- continue;
+ err = handleRendererDescriptions(info, r, &tmpconf);
+ if(err) {
+ fprintf(stderr, "handleRendererDescriptions returned error: %s\n", CGLErrorString(err));
+ fprintf(stderr, "trying to continue...\n");
+ continue;
}
conf = malloc(sizeof(*conf));
if(NULL == conf) {
- perror("malloc");
- abort();
+ perror("malloc");
+ abort();
}
/* Copy the struct. */
@@ -551,9 +531,8 @@ bool getGlCapabilities(struct glCapabilities *cap) {
cap->configurations = conf;
}
- CGLDestroyRendererInfo(info);
- }
-
+ CGLDestroyRendererInfo(info);
+
/* No error occured. We are done. */
- return false;
+ return kCGLNoError;
}
diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c
index 10a5b2c23..176282532 100644
--- a/hw/xquartz/GL/indirect.c
+++ b/hw/xquartz/GL/indirect.c
@@ -44,6 +44,87 @@
#include <OpenGL/OpenGL.h>
#include <OpenGL/CGLContext.h>
+/* These next few GL_EXT pre-processing blocks are to explicitly define
+ * these symbols to 0 if they are not set by OpenGL.framework. This
+ * prevents the X11 glext.h from setting them to 1.
+ */
+
+#ifndef GL_EXT_fragment_shader
+#define GL_EXT_fragment_shader 0
+#endif
+
+#ifndef GL_EXT_blend_equation_separate
+#define GL_EXT_blend_equation_separate 0
+#endif
+
+#ifndef GL_EXT_blend_func_separate
+#define GL_EXT_blend_func_separate 0
+#endif
+
+#ifndef GL_EXT_depth_bounds_test
+#define GL_EXT_depth_bounds_test 0
+#endif
+
+#ifndef GL_EXT_compiled_vertex_array
+#define GL_EXT_compiled_vertex_array 0
+#endif
+
+#ifndef GL_EXT_cull_vertex
+#define GL_EXT_cull_vertex 0
+#endif
+
+#ifndef GL_EXT_fog_coord
+#define GL_EXT_fog_coord 0
+#endif
+
+#ifndef GL_EXT_framebuffer_blit
+#define GL_EXT_framebuffer_blit 0
+#endif
+
+#ifndef GL_EXT_framebuffer_object
+#define GL_EXT_framebuffer_object 0
+#endif
+
+#ifndef GL_EXT_gpu_program_parameters
+#define GL_EXT_gpu_program_parameters 0
+#endif
+
+#ifndef GL_EXT_multi_draw_arrays
+#define GL_EXT_multi_draw_arrays 0
+#endif
+
+#ifndef GL_EXT_point_parameters
+#define GL_EXT_point_parameters 0
+#endif
+
+#ifndef GL_EXT_polygon_offset
+#define GL_EXT_polygon_offset 0
+#endif
+
+#ifndef GL_EXT_secondary_color
+#define GL_EXT_secondary_color 0
+#endif
+
+#ifndef GL_EXT_stencil_two_side
+#define GL_EXT_stencil_two_side 0
+#endif
+
+#ifndef GL_EXT_timer_query
+#define GL_EXT_timer_query 0
+#endif
+
+#ifndef GL_EXT_vertex_array
+#define GL_EXT_vertex_array 0
+#endif
+
+/* Tiger PPC doesn't have the associated symbols, but glext.h says it does. Liars!
+ * http://trac.macports.org/ticket/20638
+ */
+#if defined(__ppc__) && MAC_OS_X_VERSION_MIN_REQUIRED == 1040
+#undef GL_EXT_gpu_program_parameters
+#define GL_EXT_gpu_program_parameters 0
+#endif
+
#include <GL/glxproto.h>
#include <windowstr.h>
#include <resource.h>
@@ -61,7 +142,8 @@
#include "x-hash.h"
#include "x-list.h"
-#include "capabilities.h"
+//#include "capabilities.h"
+#include "visualConfigs.h"
typedef unsigned long long GLuint64EXT;
typedef long long GLint64EXT;
@@ -101,13 +183,6 @@ __GLXprovider __glXDRISWRastProvider = {
NULL
};
-__GLXprovider *
-GlxGetDRISWRastProvider (void)
-{
- GLAQUA_DEBUG_MSG("GlxGetDRISWRastProvider\n");
- return &__glXDRISWRastProvider;
-}
-
typedef struct __GLXAquaScreen __GLXAquaScreen;
typedef struct __GLXAquaContext __GLXAquaContext;
typedef struct __GLXAquaDrawable __GLXAquaDrawable;
@@ -396,7 +471,6 @@ static int __glXAquaContextForceCurrent(__GLXcontext *baseContext)
}
/* Drawing surface notification callbacks */
-
static GLboolean __glXAquaDrawableSwapBuffers(__GLXdrawable *base) {
CGLError err;
__GLXAquaDrawable *drawable;
@@ -493,206 +567,6 @@ static void __glXAquaScreenDestroy(__GLXscreen *screen) {
xfree(screen);
}
-static __GLXconfig *CreateConfigs(int *numConfigsPtr, int screenNumber) {
- __GLXconfig *c, *result;
- struct glCapabilities cap;
- struct glCapabilitiesConfig *conf = NULL;
- int numConfigs = 0;
- int i;
-
- if(getGlCapabilities(&cap))
- FatalError("error from getGlCapabilities() in %s\n", __func__);
-
- assert(NULL != cap.configurations);
-
- for(conf = cap.configurations; conf; conf = conf->next) {
- if(conf->total_color_buffers <= 0)
- continue;
-
- numConfigs += (conf->stereo ? 2 : 1)
- * (conf->aux_buffers ? 2 : 1)
- * conf->buffers
- * ((conf->total_stencil_bit_depths > 0) ?
- conf->total_stencil_bit_depths : 1)
- * conf->total_color_buffers
- * ((conf->total_accum_buffers > 0) ? conf->total_accum_buffers : 1)
- * conf->total_depth_buffer_depths
- * (conf->multisample_buffers + 1);
- }
-
- *numConfigsPtr = numConfigs;
-
- c = xalloc(sizeof(*c) * numConfigs);
-
- if(NULL == c)
- return NULL;
-
-
-
- result = c;
-
- memset(result, 0, sizeof(*c) * numConfigs);
-
- i = 0;
-
- for(conf = cap.configurations; conf; conf = conf->next) {
- int stereo, aux, buffers, stencil, color, accum, depth, msample;
-
- for(stereo = 0; stereo < (conf->stereo ? 2 : 1); ++stereo) {
- for(aux = 0; aux < (conf->aux_buffers ? 2 : 1); ++aux) {
- for(buffers = 0; buffers < conf->buffers; ++buffers) {
- for(stencil = 0; stencil < ((conf->total_stencil_bit_depths > 0) ?
- conf->total_stencil_bit_depths : 1); ++stencil) {
- for(color = 0; color < conf->total_color_buffers; ++color) {
- for(accum = 0; accum < ((conf->total_accum_buffers > 0) ?
- conf->total_accum_buffers : 1); ++accum) {
- for(depth = 0; depth < conf->total_depth_buffer_depths; ++depth) {
- for(msample = 0; msample < (conf->multisample_buffers + 1); ++msample) {
- if((i + 1) < numConfigs) {
- c->next = c + 1;
- } else {
- c->next = NULL;
- }
-
- c->doubleBufferMode = buffers ? GL_TRUE : GL_FALSE;
- c->stereoMode = stereo ? GL_TRUE : GL_FALSE;
-
- c->redBits = conf->color_buffers[color].r;
- c->greenBits = conf->color_buffers[color].g;
- c->blueBits = conf->color_buffers[color].b;
- c->alphaBits = 0;
-
- if(GLCAPS_COLOR_BUF_INVALID_VALUE != conf->color_buffers[color].a) {
- c->alphaBits = conf->color_buffers[color].a;
- }
-
- c->redMask = -1;
- c->greenMask = -1;
- c->blueMask = -1;
- c->alphaMask = -1;
-
- c->rgbBits = c->redBits + c->greenBits + c->blueBits + c->alphaBits;
- c->indexBits = 0;
-
- c->accumRedBits = 0;
- c->accumGreenBits = 0;
- c->accumBlueBits = 0;
- c->accumAlphaBits = 0;
-
- if(conf->total_accum_buffers > 0) {
- c->accumRedBits = conf->accum_buffers[accum].r;
- c->accumGreenBits = conf->accum_buffers[accum].g;
- c->accumBlueBits = conf->accum_buffers[accum].b;
- if(GLCAPS_COLOR_BUF_INVALID_VALUE != conf->accum_buffers[accum].a) {
- c->accumAlphaBits = conf->accum_buffers[accum].a;
- }
- }
-
- c->depthBits = conf->depth_buffers[depth];
-
- c->stencilBits = 0;
-
- if(conf->total_stencil_bit_depths > 0) {
- c->stencilBits = conf->stencil_bit_depths[stencil];
- }
-
-
- c->numAuxBuffers = aux ? conf->aux_buffers : 0;
-
- c->level = 0;
- /*TODO what should this be? */
- c->pixmapMode = 0;
-
- c->visualID = -1;
- c->visualType = GLX_TRUE_COLOR;
-
- if(conf->accelerated) {
- c->visualRating = GLX_NONE;
- } else {
- c->visualRating = GLX_SLOW_VISUAL_EXT;
- }
-
- c->transparentPixel = GLX_NONE;
- c->transparentRed = GLX_NONE;
- c->transparentGreen = GLX_NONE;
- c->transparentAlpha = GLX_NONE;
- c->transparentIndex = GLX_NONE;
-
- c->sampleBuffers = 0;
- c->samples = 0;
-
- if(msample > 0) {
- c->sampleBuffers = conf->multisample_buffers;
- c->samples = conf->multisample_samples;
- }
-
- /*
- * The Apple libGL supports GLXPixmaps and
- * GLXPbuffers in direct mode.
- */
- /* SGIX_fbconfig / GLX 1.3 */
- c->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT
- | GLX_PBUFFER_BIT;
- c->renderType = GLX_RGBA_BIT;
- c->xRenderable = GL_TRUE;
- c->fbconfigID = -1;
-
- /* SGIX_pbuffer / GLX 1.3 */
-
- /*
- * The CGL layer provides a way of retrieving
- * the maximum pbuffer width/height, but only
- * if we create a context and call glGetIntegerv.
- *
- * The following values are from a test program
- * that does so.
- */
- c->maxPbufferWidth = 8192;
- c->maxPbufferHeight = 8192;
- c->maxPbufferPixels = /*Do we need this?*/ 0;
- /*
- * There is no introspection for this sort of thing
- * with CGL. What should we do realistically?
- */
- c->optimalPbufferWidth = 0;
- c->optimalPbufferHeight = 0;
-
- c->visualSelectGroup = 0;
-
- c->swapMethod = GLX_SWAP_UNDEFINED_OML;
-
- c->screen = screenNumber;
-
- /* EXT_texture_from_pixmap */
- c->bindToTextureRgb = 0;
- c->bindToTextureRgba = 0;
- c->bindToMipmapTexture = 0;
- c->bindToTextureTargets = 0;
- c->yInverted = 0;
-
- if(c->next)
- c = c->next;
-
- ++i;
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- if(i != numConfigs)
- FatalError("The number of __GLXconfig generated does not match the initial calculation!\n");
-
-
- freeGlCapabilities(&cap);
-
- return result;
-}
-
/* This is called by __glXInitScreens(). */
static __GLXscreen * __glXAquaScreenProbe(ScreenPtr pScreen) {
__GLXAquaScreen *screen;
@@ -715,13 +589,7 @@ static __GLXscreen * __glXAquaScreenProbe(ScreenPtr pScreen) {
screen->base.swapBarrierFuncs = NULL;
screen->base.pScreen = pScreen;
- screen->base.fbconfigs = CreateConfigs(&screen->base.numFBConfigs,
- pScreen->myNum);
-
- /* This is set by __glXScreenInit: */
- screen->base.visuals = NULL;
- /* This is to be initialized prior to the call to __glXScreenInit: */
- screen->base.numVisuals = 0;
+ screen->base.fbconfigs = __glXAquaCreateVisualConfigs(&screen->base.numFBConfigs, pScreen->myNum);
__glXScreenInit(&screen->base, pScreen);
@@ -737,11 +605,12 @@ static __GLXscreen * __glXAquaScreenProbe(ScreenPtr pScreen) {
return &screen->base;
}
+#if 0 // unused
static void __glXAquaDrawableCopySubBuffer (__GLXdrawable *drawable,
int x, int y, int w, int h) {
/*TODO finish me*/
}
-
+#endif
static void __glXAquaDrawableDestroy(__GLXdrawable *base) {
/* gstaplin: base is the head of the structure, so it's at the same
@@ -1178,9 +1047,9 @@ static void setup_dispatch_table(void) {
* <rdar://problem/6953344> gl.h contains incorrect prototypes for glTexImage[123]D
*/
- SET_TexImage1D(disp, glTexImage1D);
- SET_TexImage2D(disp, glTexImage2D);
- SET_TexImage3D(disp, glTexImage3D);
+ SET_TexImage1D(disp, (void *)glTexImage1D);
+ SET_TexImage2D(disp, (void *)glTexImage2D);
+ SET_TexImage3D(disp, (void *)glTexImage3D);
SET_TexParameterf(disp, glTexParameterf);
SET_TexParameterfv(disp, glTexParameterfv);
SET_TexParameteri(disp, glTexParameteri);
@@ -1565,7 +1434,7 @@ static void setup_dispatch_table(void) {
*
* void ( * MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount);
*/
- SET_MultiDrawArraysEXT(disp, glMultiDrawArraysEXT);
+ SET_MultiDrawArraysEXT(disp, (void *)glMultiDrawArraysEXT);
SET_MultiDrawElementsEXT(disp, glMultiDrawElementsEXT);
#endif
diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
index 81f88fb3c..fee665d1d 100644
--- a/hw/xquartz/GL/visualConfigs.c
+++ b/hw/xquartz/GL/visualConfigs.c
@@ -55,55 +55,54 @@
#include "capabilities.h"
#include "visualConfigs.h"
+#include "darwinfb.h"
/* Based originally on code from indirect.c which was based on code from i830_dri.c. */
-void setVisualConfigs(void) {
+__GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) {
int numConfigs = 0;
- __GLXvisualConfig *visualConfigs = NULL;
- void **visualPrivates = NULL;
+ __GLXconfig *visualConfigs, *c;
struct glCapabilities caps;
struct glCapabilitiesConfig *conf = NULL;
int stereo, depth, aux, buffers, stencil, accum, color, msample;
- int i = 0;
if(getGlCapabilities(&caps)) {
- ErrorF("error from getGlCapabilities()!\n");
- return;
+ ErrorF("error from getGlCapabilities()!\n");
+ return NULL;
}
/*
- conf->stereo is 0 or 1, but we need at least 1 iteration of the loop,
- so we treat a true conf->stereo as 2.
-
- The depth size is 0 or 24. Thus we do 2 iterations for that.
-
- conf->aux_buffers (when available/non-zero) result in 2 iterations instead of 1.
-
- conf->buffers indicates whether we have single or double buffering.
+ conf->stereo is 0 or 1, but we need at least 1 iteration of the loop,
+ so we treat a true conf->stereo as 2.
+
+ The depth size is 0 or 24. Thus we do 2 iterations for that.
+
+ conf->aux_buffers (when available/non-zero) result in 2 iterations instead of 1.
+
+ conf->buffers indicates whether we have single or double buffering.
+
+ conf->total_stencil_bit_depths
+
+ conf->total_color_buffers indicates the RGB/RGBA color depths.
+
+ conf->total_accum_buffers iterations for accum (with at least 1 if equal to 0)
+
+ conf->total_depth_buffer_depths
+
+ conf->multisample_buffers iterations (with at least 1 if equal to 0). We add 1
+ for the 0 multisampling config.
- conf->total_stencil_bit_depths
-
- conf->total_color_buffers indicates the RGB/RGBA color depths.
-
- conf->total_accum_buffers iterations for accum (with at least 1 if equal to 0)
-
- conf->total_depth_buffer_depths
-
- conf->multisample_buffers iterations (with at least 1 if equal to 0). We add 1
- for the 0 multisampling config.
-
*/
-
+
assert(NULL != caps.configurations);
conf = caps.configurations;
-
+
numConfigs = 0;
-
+
for(conf = caps.configurations; conf; conf = conf->next) {
- if(conf->total_color_buffers <= 0)
- continue;
-
- numConfigs += (conf->stereo ? 2 : 1)
+ if(conf->total_color_buffers <= 0)
+ continue;
+
+ numConfigs += (conf->stereo ? 2 : 1)
* (conf->aux_buffers ? 2 : 1)
* conf->buffers
* ((conf->total_stencil_bit_depths > 0) ? conf->total_stencil_bit_depths : 1)
@@ -112,144 +111,175 @@ void setVisualConfigs(void) {
* conf->total_depth_buffer_depths
* (conf->multisample_buffers + 1);
}
-
+
+ if(numConfigsPtr)
+ *numConfigsPtr = numConfigs;
+
visualConfigs = xcalloc(sizeof(*visualConfigs), numConfigs);
-
- if(NULL == visualConfigs) {
- ErrorF("xcalloc failure when allocating visualConfigs\n");
- freeGlCapabilities(&caps);
- return;
- }
- visualPrivates = xcalloc(sizeof(void *), numConfigs);
-
- if(NULL == visualPrivates) {
- ErrorF("xcalloc failure when allocating visualPrivates");
- freeGlCapabilities(&caps);
- xfree(visualConfigs);
- return;
+ if(NULL == visualConfigs) {
+ ErrorF("xcalloc failure when allocating visualConfigs\n");
+ freeGlCapabilities(&caps);
+ return NULL;
}
- i = 0; /* current buffer */
+ c = visualConfigs; /* current buffer */
for(conf = caps.configurations; conf; conf = conf->next) {
- for(stereo = 0; stereo < (conf->stereo ? 2 : 1); ++stereo) {
- for(aux = 0; aux < (conf->aux_buffers ? 2 : 1); ++aux) {
- for(buffers = 0; buffers < conf->buffers; ++buffers) {
- for(stencil = 0; stencil < ((conf->total_stencil_bit_depths > 0) ?
- conf->total_stencil_bit_depths : 1); ++stencil) {
- for(color = 0; color < conf->total_color_buffers; ++color) {
- for(accum = 0; accum < ((conf->total_accum_buffers > 0) ?
- conf->total_accum_buffers : 1); ++accum) {
- for(depth = 0; depth < conf->total_depth_buffer_depths; ++depth) {
- for(msample = 0; msample < (conf->multisample_buffers + 1); ++msample) {
- visualConfigs[i].vid = (VisualID)(-1);
- visualConfigs[i].class = TrueColor;
-
- visualConfigs[i].rgba = true;
- visualConfigs[i].redSize = conf->color_buffers[color].r;
- visualConfigs[i].greenSize = conf->color_buffers[color].g;
- visualConfigs[i].blueSize = conf->color_buffers[color].b;
+ for(stereo = 0; stereo < (conf->stereo ? 2 : 1); ++stereo) {
+ for(aux = 0; aux < (conf->aux_buffers ? 2 : 1); ++aux) {
+ for(buffers = 0; buffers < conf->buffers; ++buffers) {
+ for(stencil = 0; stencil < ((conf->total_stencil_bit_depths > 0) ?
+ conf->total_stencil_bit_depths : 1); ++stencil) {
+ for(color = 0; color < conf->total_color_buffers; ++color) {
+ for(accum = 0; accum < ((conf->total_accum_buffers > 0) ?
+ conf->total_accum_buffers : 1); ++accum) {
+ for(depth = 0; depth < conf->total_depth_buffer_depths; ++depth) {
+ for(msample = 0; msample < (conf->multisample_buffers + 1); ++msample) {
+
+ // Global
+ c->visualID = -1;
+ c->visualType = GLX_TRUE_COLOR;
+ c->next = c + 1;
+
+ c->screen = screenNumber;
+
+ c->level = 0;
+ c->indexBits = 0;
+ c->pixmapMode = 0; // TODO: What should this be?
+
+ if(conf->accelerated) {
+ c->visualRating = GLX_NONE;
+ } else {
+ c->visualRating = GLX_SLOW_VISUAL_EXT;
+ }
+
+ c->transparentPixel = GLX_NONE;
+ c->transparentRed = GLX_NONE;
+ c->transparentGreen = GLX_NONE;
+ c->transparentBlue = GLX_NONE;
+ c->transparentAlpha = GLX_NONE;
+ c->transparentIndex = GLX_NONE;
+
+ c->visualSelectGroup = 0;
+
+ c->swapMethod = GLX_SWAP_UNDEFINED_OML;
+
+ // Stereo
+ c->stereoMode = stereo ? TRUE : FALSE;
+
+ // Aux buffers
+ c->numAuxBuffers = aux ? conf->aux_buffers : 0;
+
+ // Double Buffered
+ c->doubleBufferMode = buffers ? TRUE : FALSE;
- if(GLCAPS_COLOR_BUF_INVALID_VALUE == conf->color_buffers[color].a) {
- /* This visual has no alpha. */
- visualConfigs[i].alphaSize = 0;
- } else {
- visualConfigs[i].alphaSize = conf->color_buffers[color].a;
- }
-
- /*
- * If the .a/alpha value is unset, then don't add it to the
- * bufferSize specification. The INVALID_VALUE indicates that it
- * was unset.
- *
- * This prevents odd bufferSizes, such as 14.
- */
- if(GLCAPS_COLOR_BUF_INVALID_VALUE == conf->color_buffers[color].a) {
- visualConfigs[i].bufferSize = conf->color_buffers[color].r +
- conf->color_buffers[color].g + conf->color_buffers[color].b;
- } else {
- visualConfigs[i].bufferSize = conf->color_buffers[color].r +
- conf->color_buffers[color].g + conf->color_buffers[color].b +
- conf->color_buffers[color].a;
- }
+ // Stencil Buffer
+ if(conf->total_stencil_bit_depths > 0) {
+ c->stencilBits = conf->stencil_bit_depths[stencil];
+ } else {
+ c->stencilBits = 0;
+ }
+
+ // Color
+ if(GLCAPS_COLOR_BUF_INVALID_VALUE != conf->color_buffers[color].a) {
+ c->alphaBits = conf->color_buffers[color].a;
+ } else {
+ c->alphaBits = 0;
+ }
+ c->redBits = conf->color_buffers[color].r;
+ c->greenBits = conf->color_buffers[color].g;
+ c->blueBits = conf->color_buffers[color].b;
+
+ c->rgbBits = c->alphaBits + c->redBits + c->greenBits + c->blueBits;
- /*
- * I'm uncertain about these masks.
- * I don't think we actually care what the values are in our
- * libGL, so it doesn't seem to make a difference.
- */
- visualConfigs[i].redMask = -1;
- visualConfigs[i].greenMask = -1;
- visualConfigs[i].blueMask = -1;
- visualConfigs[i].alphaMask = -1;
-
- if(conf->total_accum_buffers > 0) {
- visualConfigs[i].accumRedSize = conf->accum_buffers[accum].r;
- visualConfigs[i].accumGreenSize = conf->accum_buffers[accum].g;
- visualConfigs[i].accumBlueSize = conf->accum_buffers[accum].b;
- if(GLCAPS_COLOR_BUF_INVALID_VALUE != conf->accum_buffers[accum].a) {
- visualConfigs[i].accumAlphaSize = conf->accum_buffers[accum].a;
- } else {
- visualConfigs[i].accumAlphaSize = 0;
- }
- } else {
- visualConfigs[i].accumRedSize = 0;
- visualConfigs[i].accumGreenSize = 0;
- visualConfigs[i].accumBlueSize = 0;
- visualConfigs[i].accumAlphaSize = 0;
- }
-
- visualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE;
- visualConfigs[i].stereo = stereo ? TRUE : FALSE;
+ c->alphaMask = AM_ARGB(c->alphaBits, c->redBits, c->greenBits, c->blueBits);
+ c->redMask = RM_ARGB(c->alphaBits, c->redBits, c->greenBits, c->blueBits);
+ c->greenMask = GM_ARGB(c->alphaBits, c->redBits, c->greenBits, c->blueBits);
+ c->blueMask = BM_ARGB(c->alphaBits, c->redBits, c->greenBits, c->blueBits);
+
+ // Accumulation Buffers
+ if(conf->total_accum_buffers > 0) {
+ c->accumRedBits = conf->accum_buffers[accum].r;
+ c->accumGreenBits = conf->accum_buffers[accum].g;
+ c->accumBlueBits = conf->accum_buffers[accum].b;
+ if(GLCAPS_COLOR_BUF_INVALID_VALUE != conf->accum_buffers[accum].a) {
+ c->accumAlphaBits = conf->accum_buffers[accum].a;
+ } else {
+ c->accumAlphaBits = 0;
+ }
+ } else {
+ c->accumRedBits = 0;
+ c->accumGreenBits = 0;
+ c->accumBlueBits = 0;
+ c->accumAlphaBits = 0;
+ }
- visualConfigs[i].depthSize = conf->depth_buffers[depth];
-
- if(conf->total_stencil_bit_depths > 0) {
- visualConfigs[i].stencilSize = conf->stencil_bit_depths[stencil];
- } else {
- visualConfigs[i].stencilSize = 0;
- }
- visualConfigs[i].auxBuffers = aux ? conf->aux_buffers : 0;
- visualConfigs[i].level = 0;
-
- if(conf->accelerated) {
- visualConfigs[i].visualRating = GLX_NONE;
- } else {
- visualConfigs[i].visualRating = GLX_SLOW_VISUAL_EXT;
- }
-
- visualConfigs[i].transparentPixel = GLX_NONE;
- visualConfigs[i].transparentRed = GLX_NONE;
- visualConfigs[i].transparentGreen = GLX_NONE;
- visualConfigs[i].transparentBlue = GLX_NONE;
- visualConfigs[i].transparentAlpha = GLX_NONE;
- visualConfigs[i].transparentIndex = GLX_NONE;
-
- if(msample > 0) {
- visualConfigs[i].multiSampleSize = conf->multisample_samples;
- visualConfigs[i].nMultiSampleBuffers = conf->multisample_buffers;
- } else {
- visualConfigs[i].multiSampleSize = 0;
- visualConfigs[i].nMultiSampleBuffers = 0;
- }
+ // Depth
+ c->depthBits = conf->depth_buffers[depth];
+
+ // MultiSample
+ if(msample > 0) {
+ c->samples = conf->multisample_samples;
+ c->sampleBuffers = conf->multisample_buffers;
+ } else {
+ c->samples = 0;
+ c->sampleBuffers = 0;
+ }
- ++i;
- }
- }
- }
- }
- }
- }
- }
- }
+ /*
+ * The Apple libGL supports GLXPixmaps and
+ * GLXPbuffers in direct mode.
+ */
+ /* SGIX_fbconfig / GLX 1.3 */
+ c->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT;
+ c->renderType = GLX_RGBA_BIT;
+ c->xRenderable = GL_TRUE;
+ c->fbconfigID = -1;
+
+ /* SGIX_pbuffer / GLX 1.3 */
+
+ /*
+ * The CGL layer provides a way of retrieving
+ * the maximum pbuffer width/height, but only
+ * if we create a context and call glGetIntegerv.
+ *
+ * The following values are from a test program
+ * that does so.
+ */
+ c->maxPbufferWidth = 8192;
+ c->maxPbufferHeight = 8192;
+ c->maxPbufferPixels = /*Do we need this?*/ 0;
+ /*
+ * There is no introspection for this sort of thing
+ * with CGL. What should we do realistically?
+ */
+ c->optimalPbufferWidth = 0;
+ c->optimalPbufferHeight = 0;
+
+ /* EXT_texture_from_pixmap */
+ c->bindToTextureRgb = 0;
+ c->bindToTextureRgba = 0;
+ c->bindToMipmapTexture = 0;
+ c->bindToTextureTargets = 0;
+ c->yInverted = 0;
+
+ c = c->next;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- if (i != numConfigs) {
- ErrorF("numConfigs calculation error in setVisualConfigs! numConfigs is %d i is %d\n", numConfigs, i);
- abort();
- }
+ (c-1)->next = NULL;
+ if (c - visualConfigs != numConfigs) {
+ FatalError("numConfigs calculation error in setVisualConfigs! numConfigs is %d i is %d\n", numConfigs, c - visualConfigs);
+ }
+
freeGlCapabilities(&caps);
-
- GlxSetVisualConfigs(numConfigs, visualConfigs, visualPrivates);
+ return visualConfigs;
}
diff --git a/hw/xquartz/GL/visualConfigs.h b/hw/xquartz/GL/visualConfigs.h
index b9e6ae756..2e1a1b3fd 100644
--- a/hw/xquartz/GL/visualConfigs.h
+++ b/hw/xquartz/GL/visualConfigs.h
@@ -23,6 +23,6 @@
#ifndef VISUAL_CONFIGS_H
#define VISUAL_CONFIGS_H
-void setVisualConfigs(void);
+__GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber);
#endif
diff --git a/hw/xquartz/Makefile.am b/hw/xquartz/Makefile.am
index e5e2e9e37..ae8aa7f53 100644
--- a/hw/xquartz/Makefile.am
+++ b/hw/xquartz/Makefile.am
@@ -41,8 +41,8 @@ EXTRA_DIST = \
X11Application.h \
X11Controller.h \
applewmExt.h \
- darwinClut8.h \
darwin.h \
+ darwinfb.h \
darwinEvents.h \
keysym2ucs.h \
pseudoramiX.h \
diff --git a/hw/xquartz/X11Application.h b/hw/xquartz/X11Application.h
index 80aee5932..5e828a440 100644
--- a/hw/xquartz/X11Application.h
+++ b/hw/xquartz/X11Application.h
@@ -47,6 +47,7 @@
- (const char *) prefs_get_string:(NSString *)key default:(const char *)def;
- (float) prefs_get_float:(NSString *)key default:(float)def;
- (int) prefs_get_boolean:(NSString *)key default:(int)def;
+- (NSURL *) prefs_copy_url:(NSString *)key default:(NSURL *)def;
- (NSArray *) prefs_get_array:(NSString *)key;
- (void) prefs_set_integer:(NSString *)key value:(int)value;
- (void) prefs_set_float:(NSString *)key value:(float)value;
@@ -55,6 +56,7 @@
- (void) prefs_set_string:(NSString *)key value:(NSString *)value;
- (void) prefs_synchronize;
+- (X11Controller *) controller;
- (OSX_BOOL) x_active;
@end
@@ -95,6 +97,7 @@ extern int quartzHasRoot, quartzEnableRootless, quartzFullscreenMenu;
#define PREFS_TEST_EXTENSIONS "enable_test_extensions"
#define PREFS_XP_OPTIONS "xp_options"
#define PREFS_LOGIN_SHELL "login_shell"
+#define PREFS_UPDATE_FEED "update_feed"
#define PREFS_CLICK_THROUGH "wm_click_through"
#define PREFS_FFM "wm_ffm"
#define PREFS_FOCUS_ON_NEW_WINDOW "wm_focus_on_new_window"
diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m
index b31634de0..9fb192648 100644
--- a/hw/xquartz/X11Application.m
+++ b/hw/xquartz/X11Application.m
@@ -41,8 +41,7 @@
#include "darwinEvents.h"
#include "quartzKeyboard.h"
#include "quartz.h"
-#define _APPLEWM_SERVER_
-#include "X11/extensions/applewm.h"
+#include <X11/extensions/applewmconst.h>
#include "micmap.h"
#include "exglobals.h"
@@ -585,6 +584,23 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
return ret != NULL ? ret : def;
}
+- (NSURL *) prefs_copy_url:(NSString *)key default:(NSURL *)def {
+ CFPropertyListRef value;
+ NSURL *ret = NULL;
+
+ value = [self prefs_get:key];
+
+ if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) {
+ NSString *s = (NSString *) value;
+
+ ret = [NSURL URLWithString:s];
+ }
+
+ if (value != NULL) CFRelease (value);
+
+ return ret != NULL ? ret : def;
+}
+
- (float) prefs_get_float:(NSString *)key default:(float)def {
CFPropertyListRef value;
float ret = def;
@@ -746,6 +762,14 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
noTestExtensions = ![self prefs_get_boolean:@PREFS_TEST_EXTENSIONS
default:FALSE];
+
+#if XQUARTZ_SPARKLE
+ NSURL *url = [self prefs_copy_url:@PREFS_UPDATE_FEED default:nil];
+ if(url) {
+ [[SUUpdater sharedUpdater] setFeedURL:url];
+ CFRelease(url);
+ }
+#endif
}
/* This will end up at the end of the responder chain. */
@@ -754,6 +778,10 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
AppleWMCopyToPasteboard);
}
+- (X11Controller *) controller {
+ return _controller;
+}
+
- (OSX_BOOL) x_active {
return _x_active;
}
@@ -935,7 +963,13 @@ void X11ApplicationMain (int argc, char **argv, char **envp) {
if(!xpbproxy_init())
fprintf(stderr, "Error initializing xpbproxy\n");
-
+
+#if XQUARTZ_SPARKLE
+ [[X11App controller] setup_sparkle];
+ [[SUUpdater sharedUpdater] resetUpdateCycle];
+// [[SUUpdater sharedUpdater] checkForUpdates:X11App];
+#endif
+
[NSApp run];
/* not reached */
}
@@ -955,40 +989,50 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe
#endif
- (void) sendX11NSEvent:(NSEvent *)e {
- NSRect screen;
- NSPoint location, tilt;
- NSWindow *window;
+ NSPoint location = NSZeroPoint, tilt = NSZeroPoint;
int ev_button, ev_type;
- float pressure;
+ float pressure = 0.0;
DeviceIntPtr pDev;
int modifierFlags;
-
- static NSPoint lastpt;
-
- /* convert location to be relative to top-left of primary display */
- window = [e window];
-
- if (window != nil) {
- NSRect frame = [window frame];
- location = [e locationInWindow];
- location.x += frame.origin.x;
- location.y += frame.origin.y;
- lastpt = location;
- } else {
- location.x = lastpt.x + [e deltaX];
- location.y = lastpt.y - [e deltaY];
- lastpt = [NSEvent mouseLocation];
+ BOOL isMouseOrTabletEvent, isTabletEvent;
+
+ isMouseOrTabletEvent = [e type] == NSLeftMouseDown || [e type] == NSOtherMouseDown || [e type] == NSRightMouseDown ||
+ [e type] == NSLeftMouseUp || [e type] == NSOtherMouseUp || [e type] == NSRightMouseUp ||
+ [e type] == NSLeftMouseDragged || [e type] == NSOtherMouseDragged || [e type] == NSRightMouseDragged ||
+ [e type] == NSMouseMoved || [e type] == NSTabletPoint;
+
+ isTabletEvent = ([e type] == NSTabletPoint) ||
+ (isMouseOrTabletEvent && ([e subtype] == NSTabletPointEventSubtype || [e subtype] == NSTabletProximityEventSubtype));
+
+ if(isMouseOrTabletEvent) {
+ static NSPoint lastpt;
+ NSWindow *window = [e window];
+ NSRect screen = [[[NSScreen screens] objectAtIndex:0] frame];;
+
+ if (window != nil) {
+ NSRect frame = [window frame];
+ location = [e locationInWindow];
+ location.x += frame.origin.x;
+ location.y += frame.origin.y;
+ lastpt = location;
+ } else if(isTabletEvent) {
+ // NSEvents for tablets are not consistent wrt deltaXY between events, so we cannot rely on that
+ // Thus tablets will be subject to the warp-pointer bug worked around by the delta, but tablets
+ // are not normally used in cases where that bug would present itself, so this is a fair tradeoff
+ // <rdar://problem/7111003> deltaX and deltaY are incorrect for NSMouseMoved, NSTabletPointEventSubtype
+ // http://xquartz.macosforge.org/trac/ticket/288
+ location = [e locationInWindow];
+ lastpt = location;
+ } else {
+ location.x = lastpt.x + [e deltaX];
+ location.y = lastpt.y - [e deltaY];
+ lastpt = [e locationInWindow];
+ }
+
+ /* Convert coordinate system */
+ location.y = (screen.origin.y + screen.size.height) - location.y;
}
- /* Convert coordinate system */
- screen = [[[NSScreen screens] objectAtIndex:0] frame];
- location.y = (screen.origin.y + screen.size.height) - location.y;
-
- /* Setup our valuators. These will range from 0 to 1 */
- pressure = 0;
- tilt.x = 0.0;
- tilt.y = 0.0;
-
modifierFlags = [e modifierFlags];
#ifdef NX_DEVICELCMDKEYMASK
diff --git a/hw/xquartz/X11Controller.h b/hw/xquartz/X11Controller.h
index bb9adb1ce..a86b20f17 100644
--- a/hw/xquartz/X11Controller.h
+++ b/hw/xquartz/X11Controller.h
@@ -30,11 +30,31 @@
#ifndef X11CONTROLLER_H
#define X11CONTROLLER_H 1
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
#if __OBJC__
#include "sanitizedCocoa.h"
#include "xpr/x-list.h"
+#ifdef XQUARTZ_SPARKLE
+#define BOOL OSX_BOOL
+#include <Sparkle/SUUpdater.h>
+#undef BOOL
+#endif
+
+#ifndef NSINTEGER_DEFINED
+#if __LP64__ || NS_BUILD_32_LIKE_64
+typedef long NSInteger;
+typedef unsigned long NSUInteger;
+#else
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#endif
+#endif
+
@interface X11Controller : NSObject
{
IBOutlet NSPanel *prefs_panel;
@@ -59,11 +79,19 @@
IBOutlet NSTextField *sync_text2;
IBOutlet NSPopUpButton *depth;
- IBOutlet NSMenuItem *x11_about_item;
IBOutlet NSMenuItem *window_separator;
+ // window_separator is DEPRECATED due to this radar:
+ // <rdar://problem/7088335> NSApplication releases the separator in the Windows menu even though it's an IBOutlet
+ // It is kept around for localization compatability and is subject to removal "eventually"
+ // If it is !NULL (meaning it is in the nib), it is removed from the menu and released
+
+ IBOutlet NSMenuItem *x11_about_item;
IBOutlet NSMenuItem *dock_window_separator;
IBOutlet NSMenuItem *apps_separator;
IBOutlet NSMenuItem *toggle_fullscreen_item;
+#ifdef XQUARTZ_SPARKLE
+ NSMenuItem *check_for_updates_item; // Programatically enabled
+#endif
IBOutlet NSMenuItem *copy_menu_item;
IBOutlet NSMenu *dock_apps_menu;
IBOutlet NSTableView *apps_table;
@@ -72,6 +100,9 @@
NSMutableArray *table_apps;
IBOutlet NSMenu *dock_menu;
+
+ // This is where in the Windows menu we'll start (this will be the index of the separator)
+ NSInteger windows_menu_start;
int checked_window_item;
x_list *pending_apps;
@@ -83,6 +114,10 @@
- (void) set_window_menu:(NSArray *)list;
- (void) set_window_menu_check:(NSNumber *)n;
- (void) set_apps_menu:(NSArray *)list;
+#ifdef XQUARTZ_SPARKLE
+- (void) setup_sparkle;
+- (void) updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update;
+#endif
- (void) set_can_quit:(OSX_BOOL)state;
- (void) server_ready;
diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m
index adf861ca9..f58747e15 100644
--- a/hw/xquartz/X11Controller.m
+++ b/hw/xquartz/X11Controller.m
@@ -43,8 +43,7 @@
#include "darwin.h"
#include "darwinEvents.h"
#include "quartz.h"
-#define _APPLEWM_SERVER_
-#include "X11/extensions/applewm.h"
+#include <X11/extensions/applewmconst.h>
#include "applewmExt.h"
#include <stdio.h>
@@ -103,7 +102,14 @@ BOOL xquartz_resetenv_display = NO;
selector: @selector(apps_table_done:)
name: NSWindowWillCloseNotification
object: [apps_table window]];
+
+ // Setup data about our Windows menu
+ if(window_separator) {
+ [[window_separator menu] removeItem:window_separator];
+ window_separator = nil;
+ }
+ windows_menu_start = [[X11App windowsMenu] numberOfItems];
}
- (void) item_selected:sender
@@ -117,17 +123,15 @@ BOOL xquartz_resetenv_display = NO;
- (void) remove_window_menu
{
NSMenu *menu;
- int first, count, i;
-
+ int count, i;
+
/* Work backwards so we don't mess up the indices */
- menu = [window_separator menu];
- first = [menu indexOfItem:window_separator] + 1;
+ menu = [X11App windowsMenu];
count = [menu numberOfItems];
- for (i = count - 1; i >= first; i--)
+ for (i = count - 1; i >= windows_menu_start; i--)
[menu removeItemAtIndex:i];
- menu = [dock_window_separator menu];
- count = [menu indexOfItem:dock_window_separator];
+ count = [dock_menu indexOfItem:dock_window_separator];
for (i = 0; i < count; i++)
[dock_menu removeItemAtIndex:0];
}
@@ -138,9 +142,15 @@ BOOL xquartz_resetenv_display = NO;
NSMenuItem *item;
int first, count, i;
- menu = [window_separator menu];
- first = [menu indexOfItem:window_separator] + 1;
+ menu = [X11App windowsMenu];
+ first = windows_menu_start + 1;
count = [list count];
+
+ // Push a Separator
+ if(count) {
+ [menu addItem:[NSMenuItem separatorItem]];
+ }
+
for (i = 0; i < count; i++)
{
NSString *name, *shortcut;
@@ -153,11 +163,7 @@ BOOL xquartz_resetenv_display = NO;
item = (NSMenuItem *) [menu addItemWithTitle:name action:@selector
(item_selected:) keyEquivalent:shortcut];
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
[item setKeyEquivalentModifierMask:(NSUInteger) windowItemModMask];
-#else
- [item setKeyEquivalentModifierMask:windowItemModMask];
-#endif
[item setTarget:self];
[item setTag:i];
[item setEnabled:YES];
@@ -166,11 +172,7 @@ BOOL xquartz_resetenv_display = NO;
action:@selector
(item_selected:) keyEquivalent:shortcut
atIndex:i];
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
[item setKeyEquivalentModifierMask:(NSUInteger) windowItemModMask];
-#else
- [item setKeyEquivalentModifierMask:windowItemModMask];
-#endif
[item setTarget:self];
[item setTag:i];
[item setEnabled:YES];
@@ -285,8 +287,8 @@ BOOL xquartz_resetenv_display = NO;
int first, count;
int n = [nn intValue];
- menu = [window_separator menu];
- first = [menu indexOfItem:window_separator] + 1;
+ menu = [X11App windowsMenu];
+ first = windows_menu_start + 1;
count = [menu numberOfItems] - first;
if (checked_window_item >= 0 && checked_window_item < count)
@@ -312,6 +314,31 @@ BOOL xquartz_resetenv_display = NO;
[self install_apps_menu:list];
}
+#ifdef XQUARTZ_SPARKLE
+- (void) setup_sparkle {
+ if(check_for_updates_item)
+ return; // already did it...
+
+ NSMenu *menu = [x11_about_item menu];
+
+ check_for_updates_item = [menu insertItemWithTitle:NSLocalizedString(@"Check for X11 Updates...", @"Check for X11 Updates...")
+ action:@selector (checkForUpdates:)
+ keyEquivalent:@""
+ atIndex:1];
+ [check_for_updates_item setTarget:[SUUpdater sharedUpdater]];
+ [check_for_updates_item setEnabled:YES];
+
+ // Set X11Controller as the delegate for the updater.
+ [[SUUpdater sharedUpdater] setDelegate:self];
+}
+
+// Sent immediately before installing the specified update.
+- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update {
+ //[self set_can_quit:YES];
+}
+
+#endif
+
- (void) launch_client:(NSString *)filename
{
int child1, child2 = 0;
@@ -704,9 +731,7 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
if (item == toggle_fullscreen_item)
return !quartzEnableRootless;
- else if (item == copy_menu_item) // For some reason, this isn't working...
- return NO;
- else if (menu == [window_separator menu] || menu == dock_menu
+ else if (menu == [X11App windowsMenu] || menu == dock_menu
|| (menu == [x11_about_item menu] && [item tag] == 42))
return (AppleWMSelectedEvents () & AppleWMControllerNotifyMask) != 0;
else
@@ -747,13 +772,16 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
- (void) applicationWillTerminate:(NSNotification *)aNotification
{
+ unsigned remain;
[X11App prefs_synchronize];
/* shutdown the X server, it will exit () for us. */
DarwinSendDDXEvent(kXquartzQuit, 0);
/* In case it doesn't, exit anyway after a while. */
- while (sleep (10) != 0) ;
+ remain = 10000000;
+ while((remain = usleep(remain)) > 0);
+
exit (1);
}
diff --git a/hw/xquartz/applewm.c b/hw/xquartz/applewm.c
index ebfd256f8..330bac4a4 100644
--- a/hw/xquartz/applewm.c
+++ b/hw/xquartz/applewm.c
@@ -47,7 +47,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <X11/Xatom.h>
#include "darwin.h"
#define _APPLEWM_SERVER_
-#include "X11/extensions/applewmstr.h"
+#include <X11/extensions/applewmproto.h>
#include "applewmExt.h"
#include "X11Application.h"
@@ -137,7 +137,7 @@ AppleWMSetScreenOrigin(
WindowPtr pWin
)
{
- long data[2];
+ int32_t data[2];
data[0] = (dixScreenOrigins[pWin->drawable.pScreen->myNum].x
+ darwinMainScreenX);
@@ -512,6 +512,36 @@ ProcAppleWMSendPSN(register ClientPtr client)
}
static int
+ProcAppleWMAttachTransient(register ClientPtr client)
+{
+ WindowPtr pWinChild, pWinParent;
+ REQUEST(xAppleWMAttachTransientReq);
+ int err;
+
+ REQUEST_SIZE_MATCH(xAppleWMAttachTransientReq);
+
+ if(!appleWMProcs->AttachTransient)
+ return BadRequest;
+
+ if (Success != dixLookupWindow(&pWinChild, stuff->child, client, DixReadAccess))
+ return BadValue;
+
+ if(stuff->parent) {
+ if(Success != dixLookupWindow(&pWinParent, stuff->parent, client, DixReadAccess))
+ return BadValue;
+ } else {
+ pWinParent = NULL;
+ }
+
+ err = appleWMProcs->AttachTransient(pWinChild, pWinParent);
+ if (err != Success) {
+ return err;
+ }
+
+ return (client->noClientException);
+}
+
+static int
ProcAppleWMSetCanQuit(
register ClientPtr client
)
@@ -673,6 +703,8 @@ ProcAppleWMDispatch (
return ProcAppleWMFrameDraw(client);
case X_AppleWMSendPSN:
return ProcAppleWMSendPSN(client);
+ case X_AppleWMAttachTransient:
+ return ProcAppleWMAttachTransient(client);
default:
return BadRequest;
}
diff --git a/hw/xquartz/applewmExt.h b/hw/xquartz/applewmExt.h
index 3fc376639..5ef8b5496 100644
--- a/hw/xquartz/applewmExt.h
+++ b/hw/xquartz/applewmExt.h
@@ -46,6 +46,7 @@ typedef int (*FrameDrawProc)(WindowPtr pWin, int class, unsigned int attr,
unsigned int title_len,
const unsigned char *title_bytes);
typedef int (*SendPSNProc)(uint32_t hi, uint32_t lo);
+typedef int (*AttachTransientProc)(WindowPtr pWinChild, WindowPtr pWinParent);
/*
* AppleWM implementation function list
@@ -58,6 +59,7 @@ typedef struct _AppleWMProcs {
FrameHitTestProc FrameHitTest;
FrameDrawProc FrameDraw;
SendPSNProc SendPSN;
+ AttachTransientProc AttachTransient;
} AppleWMProcsRec, *AppleWMProcsPtr;
void AppleWMExtensionInit(
diff --git a/hw/xquartz/bundle/Info.plist.cpp b/hw/xquartz/bundle/Info.plist.cpp
index 90628161d..d385e078b 100644
--- a/hw/xquartz/bundle/Info.plist.cpp
+++ b/hw/xquartz/bundle/Info.plist.cpp
@@ -7,11 +7,11 @@
<key>CFBundleExecutable</key>
<string>X11</string>
<key>CFBundleGetInfoString</key>
- <string>APPLE_APPLICATION_NAME</string>
+ <string>LAUNCHD_ID_PREFIX.X11</string>
<key>CFBundleIconFile</key>
<string>X11.icns</string>
<key>CFBundleIdentifier</key>
- <string>APPLE_APPLICATION_ID</string>
+ <string>LAUNCHD_ID_PREFIX.X11</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
@@ -26,6 +26,14 @@
<string>x11a</string>
<key>CSResourcesFileMapped</key>
<true/>
+#ifdef XQUARTZ_SPARKLE
+ <key>SUEnableAutomaticChecks</key>
+ <true/>
+ <key>SUPublicDSAKeyFile</key>
+ <string>sparkle.pem</string>
+ <key>SUFeedURL</key>
+ <string>http://xquartz.macosforge.org/downloads/sparkle/release.xml</string>
+#endif
<key>NSHumanReadableCopyright</key>
<string>© 2003-2009 Apple Inc.
© 2003 XFree86 Project, Inc.
diff --git a/hw/xquartz/bundle/Makefile.am b/hw/xquartz/bundle/Makefile.am
index 963327bb9..f8b96d8c4 100644
--- a/hw/xquartz/bundle/Makefile.am
+++ b/hw/xquartz/bundle/Makefile.am
@@ -1,9 +1,13 @@
include cpprules.in
CPP_FILES_FLAGS = \
- -DAPPLE_APPLICATION_ID="$(APPLE_APPLICATION_ID)" \
+ -DLAUNCHD_ID_PREFIX="$(LAUNCHD_ID_PREFIX)" \
-DAPPLE_APPLICATION_NAME="$(APPLE_APPLICATION_NAME)"
+if XQUARTZ_SPARKLE
+CPP_FILES_FLAGS += -DXQUARTZ_SPARKLE
+endif
+
install-data-hook:
$(srcdir)/mk_bundke.sh $(srcdir) $(builddir) $(DESTDIR)$(APPLE_APPLICATIONS_DIR)/$(APPLE_APPLICATION_NAME).app install
diff --git a/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist b/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist
index 151315080..edae5819d 100644
--- a/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>nl</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib
index ab78847d0..7d1eb9cc9 100644
--- a/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib
@@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10A314</string>
- <string key="IBDocument.InterfaceBuilderVersion">718</string>
- <string key="IBDocument.AppKitVersion">1013</string>
- <string key="IBDocument.HIToolboxVersion">415.00</string>
+ <string key="IBDocument.SystemVersion">10A354</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
+ <string key="IBDocument.AppKitVersion">1019</string>
+ <string key="IBDocument.HIToolboxVersion">421.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">718</string>
+ <string key="NS.object.0">729</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -438,7 +438,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="834019392">
+ <object class="NSCustomResource" key="NSNormalImage" id="544301944">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -472,7 +472,7 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="925765112">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
@@ -521,7 +521,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -560,7 +560,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -599,7 +599,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -762,7 +762,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -784,7 +784,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -839,7 +839,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -877,7 +877,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -899,7 +899,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -916,12 +916,12 @@ ZW4uCg</string>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Werk plakbord onmiddellijk bij als nieuwe tekst wordt geselecteerd</string>
+ <string key="NSContents">Werk plakbord onmiddellijk bij wanneer nieuwe tekst wordt geselecteerd</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -943,7 +943,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1013,7 +1013,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1051,7 +1051,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1089,7 +1089,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1140,7 +1140,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1162,7 +1162,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="834019392"/>
+ <reference key="NSNormalImage" ref="544301944"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1278,7 +1278,11 @@ ZW4uCg</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1301,7 +1305,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1439,7 +1443,7 @@ ZW4uCg</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="925765112"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1486,7 +1490,7 @@ ZW4uCg</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1496,7 +1500,7 @@ ZW4uCg</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1539,7 +1543,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -3371,6 +3375,7 @@ ZW4uCg</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
<string>244.IBPluginDependency</string>
+ <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3455,19 +3460,27 @@ ZW4uCg</string>
<string>300441.IBPluginDependency</string>
<string>300447.IBPluginDependency</string>
<string>300447.ImportedFromIB2</string>
+ <string>300447.object.labelIdentifier</string>
<string>300450.IBPluginDependency</string>
+ <string>300450.object.labelIdentifier</string>
<string>300451.IBPluginDependency</string>
<string>300451.ImportedFromIB2</string>
+ <string>300451.object.labelIdentifier</string>
<string>300452.IBPluginDependency</string>
+ <string>300452.object.labelIdentifier</string>
<string>300453.IBPluginDependency</string>
<string>300453.ImportedFromIB2</string>
+ <string>300453.object.labelIdentifier</string>
<string>300454.IBPluginDependency</string>
+ <string>300454.object.labelIdentifier</string>
<string>300455.IBPluginDependency</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
<string>300457.IBPluginDependency</string>
<string>300457.ImportedFromIB2</string>
+ <string>300457.object.labelIdentifier</string>
<string>300458.IBPluginDependency</string>
+ <string>300458.object.labelIdentifier</string>
<string>300459.IBPluginDependency</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
@@ -3518,7 +3531,6 @@ ZW4uCg</string>
<string>377.ImportedFromIB2</string>
<string>379.IBPluginDependency</string>
<string>379.ImportedFromIB2</string>
- <string>380.IBEditorWindowLastContentRect</string>
<string>380.IBPluginDependency</string>
<string>380.ImportedFromIB2</string>
<string>381.IBPluginDependency</string>
@@ -3535,7 +3547,6 @@ ZW4uCg</string>
<string>386.ImportedFromIB2</string>
<string>419.IBPluginDependency</string>
<string>419.ImportedFromIB2</string>
- <string>420.IBEditorWindowLastContentRect</string>
<string>420.IBPluginDependency</string>
<string>420.ImportedFromIB2</string>
<string>421.IBPluginDependency</string>
@@ -3640,7 +3651,7 @@ ZW4uCg</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{310, 937}, {127, 23}}</string>
+ <string>{{168, 821}, {113, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{202, 626}, {154, 153}}</string>
@@ -3655,13 +3666,14 @@ ZW4uCg</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{370, 807}, {313, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{325, 672}, {564, 308}}</string>
+ <string>{{437, 698}, {564, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{325, 672}, {564, 308}}</string>
+ <boolean value="YES"/>
+ <string>{{437, 698}, {564, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3672,7 +3684,7 @@ ZW4uCg</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{203, 927}, {131, 33}}</string>
+ <string>{{58, 803}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{100, 746}, {155, 33}}</string>
@@ -3691,7 +3703,7 @@ ZW4uCg</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{145, 960}, {356, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
@@ -3745,19 +3757,27 @@ ZW4uCg</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3808,7 +3828,6 @@ ZW4uCg</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{523, 839}, {183, 83}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3825,7 +3844,6 @@ ZW4uCg</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{440, 937}, {128, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3864,7 +3882,7 @@ ZW4uCg</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{157, 757}, {319, 203}}</string>
+ <string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
diff --git a/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib
index 5e6d2f076..9209e81fa 100644
--- a/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/English.lproj/Localizable.strings b/hw/xquartz/bundle/Resources/English.lproj/Localizable.strings
index 001227afe..03415026e 100644
--- a/hw/xquartz/bundle/Resources/English.lproj/Localizable.strings
+++ b/hw/xquartz/bundle/Resources/English.lproj/Localizable.strings
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib
index 38b00183c..94d01047c 100644
--- a/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib
@@ -2,9 +2,9 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9J61</string>
+ <string key="IBDocument.SystemVersion">9L29</string>
<string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.46</string>
+ <string key="IBDocument.AppKitVersion">949.54</string>
<string key="IBDocument.HIToolboxVersion">353.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -341,17 +341,6 @@
<reference key="NSOnImage" ref="531645050"/>
<reference key="NSMixedImage" ref="351811234"/>
</object>
- <object class="NSMenuItem" id="444952046">
- <reference key="NSMenu" ref="96874957"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="531645050"/>
- <reference key="NSMixedImage" ref="351811234"/>
- </object>
</object>
<string key="NSName">_NSWindowsMenu</string>
</object>
@@ -1955,14 +1944,6 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">window_separator</string>
- <reference key="source" ref="485884620"/>
- <reference key="destination" ref="444952046"/>
- </object>
- <int key="connectionID">300331</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
<string key="label">menu</string>
<reference key="source" ref="815810918"/>
<reference key="destination" ref="524015605"/>
@@ -2209,7 +2190,6 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string>
<reference ref="1036389925"/>
<reference ref="369641893"/>
<reference ref="155085383"/>
- <reference ref="444952046"/>
<reference ref="984461797"/>
<reference ref="280172320"/>
</object>
@@ -3014,11 +2994,6 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string>
<reference key="parent" ref="492358940"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300330</int>
- <reference key="object" ref="444952046"/>
- <reference key="parent" ref="96874957"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">300337</int>
<reference key="object" ref="10973343"/>
<object class="NSMutableArray" key="children">
@@ -3401,8 +3376,6 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string>
<string>298.ImportedFromIB2</string>
<string>300295.IBPluginDependency</string>
<string>300295.IBShouldRemoveOnLegacySave</string>
- <string>300330.IBPluginDependency</string>
- <string>300330.ImportedFromIB2</string>
<string>300337.IBPluginDependency</string>
<string>300337.ImportedFromIB2</string>
<string>300338.IBPluginDependency</string>
@@ -3638,7 +3611,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string>
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
- <string>{{349, 858}, {315, 153}}</string>
+ <string>{{349, 868}, {315, 143}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>{{271, 666}, {301, 153}}</string>
@@ -3699,8 +3672,6 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
diff --git a/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib
index 516508961..fee8f1ce9 100644
--- a/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/French.lproj/locversion.plist b/hw/xquartz/bundle/Resources/French.lproj/locversion.plist
index 6adec6831..566c84236 100644
--- a/hw/xquartz/bundle/Resources/French.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/French.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>fr</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/French.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/French.lproj/main.nib/designable.nib
index 635ed78b5..76299a761 100644
--- a/hw/xquartz/bundle/Resources/French.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/French.lproj/main.nib/designable.nib
@@ -12,7 +12,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="29"/>
+ <integer value="348"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -400,10 +400,10 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -441,7 +441,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="405640321">
+ <object class="NSCustomResource" key="NSNormalImage" id="592754637">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -475,9 +475,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="603033258">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -524,7 +524,7 @@ A</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -563,7 +563,7 @@ A</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -602,7 +602,7 @@ A</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -765,7 +765,7 @@ A</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -787,7 +787,7 @@ A</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -831,7 +831,7 @@ A</string>
<object class="NSButton" id="878106058">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{18, 222}, {409, 23}}</string>
+ <string key="NSFrame">{{25, 222}, {409, 23}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="718083688">
@@ -842,7 +842,7 @@ A</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -853,7 +853,7 @@ A</string>
<object class="NSTextField" id="386152084">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 174}, {378, 42}}</string>
+ <string key="NSFrame">{{43, 174}, {378, 42}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="572508492">
@@ -869,18 +869,18 @@ A</string>
<object class="NSButton" id="477050998">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 92}, {424, 18}}</string>
+ <string key="NSFrame">{{41, 92}, {424, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Mettre à jour CLIPBOARD lorsque le presse-papiers est modifié.</string>
+ <string key="NSContents">Mettre à jour CLIPBOARD lorsque le presse-papiers est modifié</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -891,18 +891,18 @@ A</string>
<object class="NSButton" id="765780304">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 70}, {489, 18}}</string>
+ <string key="NSFrame">{{41, 70}, {489, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Mettre à jour PRIMARY (clic central) lorsque le presse-papiers est modifié.</string>
+ <string key="NSContents">Mettre à jour PRIMARY (clic central) lorsque le presse-papiers est modifié</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -913,18 +913,18 @@ A</string>
<object class="NSButton" id="1002778833">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 48}, {437, 18}}</string>
+ <string key="NSFrame">{{41, 48}, {437, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Mettre à jour le presse-papiers dès la sélection de nouveau texte.</string>
+ <string key="NSContents">Mettre à jour le presse-papiers dès la sélection de nouveau texte</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -935,18 +935,18 @@ A</string>
<object class="NSButton" id="487809555">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 150}, {424, 18}}</string>
+ <string key="NSFrame">{{41, 150}, {424, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Mettre à jour le presse-papiers lorsque CLIPBOARD est modifié.</string>
+ <string key="NSContents">Mettre à jour le presse-papiers lorsque CLIPBOARD est modifié</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -957,7 +957,7 @@ A</string>
<object class="NSTextField" id="620944856">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{48, 116}, {385, 28}}</string>
+ <string key="NSFrame">{{55, 116}, {385, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="461823902">
@@ -973,7 +973,7 @@ A</string>
<object class="NSTextField" id="522511724">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{48, 16}, {385, 28}}</string>
+ <string key="NSFrame">{{55, 16}, {385, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="994587858">
@@ -1016,7 +1016,7 @@ A</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1055,7 +1055,7 @@ A</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1094,7 +1094,7 @@ A</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1146,7 +1146,7 @@ A</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1168,7 +1168,7 @@ A</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="405640321"/>
+ <reference key="NSNormalImage" ref="592754637"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1247,10 +1247,11 @@ A</string>
</object>
</object>
<string key="NSFrameSize">{582, 308}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1263,7 +1264,7 @@ A</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1284,7 +1285,11 @@ A</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1307,7 +1312,7 @@ A</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1358,7 +1363,7 @@ A</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
@@ -1447,7 +1452,7 @@ A</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="603033258"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1495,7 +1500,7 @@ A</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1505,7 +1510,7 @@ A</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.97084552049636841</double>
+ <double key="NSPercent">0.97368421052631582</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1548,7 +1553,7 @@ A</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1562,7 +1567,7 @@ A</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -3465,19 +3470,27 @@ A</string>
<string>300441.IBPluginDependency</string>
<string>300447.IBPluginDependency</string>
<string>300447.ImportedFromIB2</string>
+ <string>300447.object.labelIdentifier</string>
<string>300450.IBPluginDependency</string>
+ <string>300450.object.labelIdentifier</string>
<string>300451.IBPluginDependency</string>
<string>300451.ImportedFromIB2</string>
+ <string>300451.object.labelIdentifier</string>
<string>300452.IBPluginDependency</string>
+ <string>300452.object.labelIdentifier</string>
<string>300453.IBPluginDependency</string>
<string>300453.ImportedFromIB2</string>
+ <string>300453.object.labelIdentifier</string>
<string>300454.IBPluginDependency</string>
+ <string>300454.object.labelIdentifier</string>
<string>300455.IBPluginDependency</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
<string>300457.IBPluginDependency</string>
<string>300457.ImportedFromIB2</string>
+ <string>300457.object.labelIdentifier</string>
<string>300458.IBPluginDependency</string>
+ <string>300458.object.labelIdentifier</string>
<string>300459.IBPluginDependency</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
@@ -3663,14 +3676,14 @@ A</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{371, 858}, {365, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {582, 308}}</string>
+ <string>{{437, 698}, {582, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="NO"/>
- <string>{{437, 548}, {582, 308}}</string>
+ <boolean value="YES"/>
+ <string>{{437, 698}, {582, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3687,11 +3700,11 @@ A</string>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{68, 585}, {548, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <boolean value="NO"/>
- <string>{{68, 585}, {548, 271}}</string>
+ <integer value="1"/>
+ <string>{{68, 585}, {454, 271}}</string>
<integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
<integer value="0"/>
@@ -3700,7 +3713,7 @@ A</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{145, 1011}, {356, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
@@ -3754,19 +3767,27 @@ A</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3871,7 +3892,7 @@ A</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{157, 808}, {290, 203}}</string>
+ <string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
diff --git a/hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nib
index 9bf0d4d06..9c65224a7 100644
--- a/hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/German.lproj/locversion.plist b/hw/xquartz/bundle/Resources/German.lproj/locversion.plist
index 5272fed2a..fe47b3743 100644
--- a/hw/xquartz/bundle/Resources/German.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/German.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>de</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib
index 9eaf8fab6..47a28c186 100644
--- a/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib
@@ -12,6 +12,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="348"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -397,10 +398,10 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -438,7 +439,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="123669974">
+ <object class="NSCustomResource" key="NSNormalImage" id="1045407417">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -472,9 +473,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="705970636">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -521,7 +522,7 @@ dmllcmVuLgo</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -560,7 +561,7 @@ dmllcmVuLgo</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -599,7 +600,7 @@ dmllcmVuLgo</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -762,7 +763,7 @@ dmllcmVuLgo</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -784,7 +785,7 @@ dmllcmVuLgo</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -839,7 +840,7 @@ dmllcmVuLgo</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -866,18 +867,18 @@ dmllcmVuLgo</string>
<object class="NSButton" id="477050998">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 105}, {436, 18}}</string>
+ <string key="NSFrame">{{34, 100}, {436, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">„CLIPBOARD“ aktualisieren, wenn die Zwischenablage sich ändert.</string>
+ <string key="NSContents">CLIPBOARD aktualisieren, wenn Pasteboard geändert wird</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -888,19 +889,18 @@ dmllcmVuLgo</string>
<object class="NSButton" id="765780304">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 59}, {393, 44}}</string>
+ <string key="NSFrame">{{34, 72}, {463, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">4oCeUFJJTUFSWeKAnCBha3R1YWxpc2llcmVuIChrbGlja2VuIG1pdCBtaXR0bGVyZXIgTWF1c3Rhc3Rl
-KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
+ <string key="NSContents">PRIMARY (Middle-Click) aktualisieren, wenn Pasteboard geändert wird</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -911,18 +911,18 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<object class="NSButton" id="1002778833">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 39}, {498, 18}}</string>
+ <string key="NSFrame">{{34, 43}, {498, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Die Zwischenablage sofort aktualisieren, wenn neuer Text ausgewählt wird.</string>
+ <string key="NSContents">Pasteboard sofort aktualisieren, wenn Text ausgewählt wird</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -939,12 +939,12 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Die Zwischenablage aktualisieren, wenn „CLIPBOARD“ sich ändert.</string>
+ <string key="NSContents">Pasteboard aktualisieren, wenn CLIPBOARD geändert wird</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -971,7 +971,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<object class="NSTextField" id="522511724">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{48, 5}, {497, 28}}</string>
+ <string key="NSFrame">{{48, 9}, {497, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="994587858">
@@ -1014,7 +1014,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1025,7 +1025,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<object class="NSTextField" id="290578835">
<reference key="NSNextResponder" ref="184765684"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{23, 172}, {341, 28}}</string>
+ <string key="NSFrame">{{23, 172}, {456, 28}}</string>
<reference key="NSSuperview" ref="184765684"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="399127858">
@@ -1052,7 +1052,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1090,7 +1090,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1101,7 +1101,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<object class="NSTextField" id="57161931">
<reference key="NSNextResponder" ref="184765684"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{23, 53}, {363, 42}}</string>
+ <string key="NSFrame">{{23, 53}, {456, 42}}</string>
<reference key="NSSuperview" ref="184765684"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="989804990">
@@ -1141,7 +1141,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1163,7 +1163,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="123669974"/>
+ <reference key="NSNormalImage" ref="1045407417"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1174,7 +1174,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<object class="NSTextField" id="168436707">
<reference key="NSNextResponder" ref="300811574"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 142}, {384, 56}}</string>
+ <string key="NSFrame">{{36, 142}, {463, 56}}</string>
<reference key="NSSuperview" ref="300811574"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="53243865">
@@ -1191,7 +1191,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<object class="NSTextField" id="363817195">
<reference key="NSNextResponder" ref="300811574"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 51}, {380, 56}}</string>
+ <string key="NSFrame">{{36, 51}, {463, 56}}</string>
<reference key="NSSuperview" ref="300811574"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="390084685">
@@ -1242,10 +1242,11 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
</object>
</object>
<string key="NSFrameSize">{613, 302}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1258,7 +1259,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1279,7 +1280,11 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1302,7 +1307,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1353,7 +1358,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
@@ -1440,7 +1445,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="705970636"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1487,7 +1492,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1497,7 +1502,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1540,7 +1545,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1554,7 +1559,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -3053,11 +3058,11 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="657659108"/>
+ <reference ref="290578835"/>
<reference ref="992839333"/>
<reference ref="138261120"/>
<reference ref="128352289"/>
<reference ref="57161931"/>
- <reference ref="290578835"/>
</object>
<reference key="parent" ref="10973343"/>
</object>
@@ -3372,7 +3377,6 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
<string>244.IBPluginDependency</string>
- <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3457,19 +3461,27 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<string>300441.IBPluginDependency</string>
<string>300447.IBPluginDependency</string>
<string>300447.ImportedFromIB2</string>
+ <string>300447.object.labelIdentifier</string>
<string>300450.IBPluginDependency</string>
+ <string>300450.object.labelIdentifier</string>
<string>300451.IBPluginDependency</string>
<string>300451.ImportedFromIB2</string>
+ <string>300451.object.labelIdentifier</string>
<string>300452.IBPluginDependency</string>
+ <string>300452.object.labelIdentifier</string>
<string>300453.IBPluginDependency</string>
<string>300453.ImportedFromIB2</string>
+ <string>300453.object.labelIdentifier</string>
<string>300454.IBPluginDependency</string>
+ <string>300454.object.labelIdentifier</string>
<string>300455.IBPluginDependency</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
<string>300457.IBPluginDependency</string>
<string>300457.ImportedFromIB2</string>
+ <string>300457.object.labelIdentifier</string>
<string>300458.IBPluginDependency</string>
+ <string>300458.object.labelIdentifier</string>
<string>300459.IBPluginDependency</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
@@ -3640,7 +3652,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{300, 813}, {136, 23}}</string>
+ <string>{{168, 821}, {113, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{202, 626}, {154, 153}}</string>
@@ -3655,14 +3667,13 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{390, 683}, {240, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{325, 198}, {613, 302}}</string>
+ <string>{{437, 704}, {613, 302}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="NO"/>
- <string>{{325, 198}, {613, 302}}</string>
+ <string>{{437, 704}, {613, 302}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3673,17 +3684,17 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{203, 803}, {150, 33}}</string>
+ <string>{{58, 803}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{68, 585}, {512, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<integer value="1"/>
- <string>{{68, 585}, {512, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
<integer value="0"/>
@@ -3692,7 +3703,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{145, 836}, {375, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
@@ -3746,19 +3757,27 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3863,7 +3882,7 @@ KSwgCndlbm4gZGllIFp3aXNjaGVuYWJsYWdlIHNpY2ggw6RuZGVydC4</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{157, 633}, {309, 203}}</string>
+ <string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
diff --git a/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib
index 2e0b337ec..1cc64172e 100644
--- a/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist b/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist
index 26ba572cd..6e84bb019 100644
--- a/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>it</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/designable.nib
index dc9548f41..e2932b92f 100644
--- a/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/designable.nib
@@ -1,13 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9C31</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.26</string>
- <string key="IBDocument.HIToolboxVersion">352.00</string>
+ <string key="IBDocument.SystemVersion">10A354</string>
+ <string key="IBDocument.InterfaceBuilderVersion">728</string>
+ <string key="IBDocument.AppKitVersion">1019</string>
+ <string key="IBDocument.HIToolboxVersion">421.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">728</string>
+ </object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="348"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -15,7 +20,7 @@
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
+ <object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
@@ -302,8 +307,8 @@
<object class="NSMenuItem" id="1036389925">
<reference key="NSMenu" ref="96874957"/>
<string key="NSTitle">Naviga tra le finestre</string>
- <string key="NSKeyEquiv">`</string>
- <int key="NSKeyEquivModMask">1048840</int>
+ <string key="NSKeyEquiv">&lt;</string>
+ <int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="531645050"/>
<reference key="NSMixedImage" ref="351811234"/>
@@ -311,8 +316,8 @@
<object class="NSMenuItem" id="369641893">
<reference key="NSMenu" ref="96874957"/>
<string key="NSTitle">Inverti navigazione tra le finestre</string>
- <string key="NSKeyEquiv">~</string>
- <int key="NSKeyEquivModMask">1179914</int>
+ <string key="NSKeyEquiv">&gt;</string>
+ <int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="531645050"/>
<reference key="NSMixedImage" ref="351811234"/>
@@ -393,10 +398,10 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -428,13 +433,13 @@
<string key="NSContents">Emula mouse a tre pulsanti</string>
<object class="NSFont" key="NSSupport" id="463863101">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
+ <double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="463913967">
+ <object class="NSCustomResource" key="NSNormalImage" id="1045379289">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -459,7 +464,7 @@
<string key="NSContents">Se abilitati, gli equivalenti da tastiera della barra dei menu potrebbero interferire con le applicazioni X11 che utilizzano il modificatore Meta.</string>
<object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.100000e+01</double>
+ <double key="NSSize">11</double>
<int key="NSfFlags">3100</int>
</object>
<string key="NSPlaceholderString"/>
@@ -468,9 +473,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="239012588">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -517,7 +522,7 @@ Q29tYW5kby4KA</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -534,8 +539,7 @@ Q29tYW5kby4KA</string>
<object class="NSTextFieldCell" key="NSCell" id="666057093">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">Q29uc2VudGUgbGUgbW9kaWZpY2hlIGRlbCBtZW51IHRhc3RpZXJhIHBlciByaXNjcml2ZXJlIGwnYXR0
-dWFsZSBtYXBwYSBkZWkgdGFzdGkgWDExLg</string>
+ <string key="NSContents">Consente le modifiche del menu tastiera per riscrivere l'attuale mappa dei tasti X11.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="31160162"/>
@@ -557,7 +561,7 @@ dWFsZSBtYXBwYSBkZWkgdGFzdGkgWDExLg</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -596,7 +600,7 @@ dWFsZSBtYXBwYSBkZWkgdGFzdGkgWDExLg</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -613,8 +617,7 @@ dWFsZSBtYXBwYSBkZWkgdGFzdGkgWDExLg</string>
<object class="NSTextFieldCell" key="NSCell" id="624655599">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">SSBiaXAgZGkgWDExIHV0aWxpenplcmFubm8gbCdhdnZpc28gc2lzdGVtYSwgY29tZSBkZWZpbml0byBu
-ZWwgcGFubmVsbG8gUHJlZmVyZW56ZSBkaSBTaXN0ZW1hIGRlZ2xpIEVmZmV0dGkgc29ub3JpLg</string>
+ <string key="NSContents">I bip di X11 utilizzeranno l'avviso sistema, come definito nel pannello Preferenze di Sistema degli Effetti sonori.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="1039016593"/>
@@ -637,7 +640,7 @@ ZWwgcGFubmVsbG8gUHJlZmVyZW56ZSBkaSBTaXN0ZW1hIGRlZ2xpIEVmZmV0dGkgc29ub3JpLg</stri
<int key="NSButtonFlags2">1</int>
<object class="NSFont" key="NSAlternateImage">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
+ <double key="NSSize">13</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSAlternateContents"/>
@@ -704,6 +707,7 @@ ZWwgcGFubmVsbG8gUHJlZmVyZW56ZSBkaSBTaXN0ZW1hIGRlZ2xpIEVmZmV0dGkgc29ub3JpLg</stri
<reference key="NSTarget" ref="633115429"/>
</object>
</object>
+ <reference key="NSMenuFont" ref="463863101"/>
</object>
<int key="NSPreferredEdge">3</int>
<bool key="NSUsesItemFromMenu">YES</bool>
@@ -754,12 +758,12 @@ ZWwgcGFubmVsbG8gUHJlZmVyZW56ZSBkaSBTaXN0ZW1hIGRlZ2xpIEVmZmV0dGkgc29ub3JpLg</stri
<object class="NSButtonCell" key="NSCell" id="631531164">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">TW9kYWxpdMOgIGEgdHV0dG8gc2NoZXJtbw</string>
+ <string key="NSContents">Modalità a tutto schermo</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -776,13 +780,12 @@ ZWwgcGFubmVsbG8gUHJlZmVyZW56ZSBkaSBTaXN0ZW1hIGRlZ2xpIEVmZmV0dGkgc29ub3JpLg</stri
<object class="NSButtonCell" key="NSCell" id="917248662">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">TW9zdHJhIGF1dG9tYXRpY2FtZW50ZSBsYSBiYXJyYSBkZWkgbWVudSBpbiBtb2RhbGl0w6AgYSB0dXR0
-byBzY2hlcm1vA</string>
+ <string key="NSContents">Mostra automaticamente la barra dei menu in modalità a tutto schermo</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -799,9 +802,7 @@ byBzY2hlcm1vA</string>
<object class="NSTextFieldCell" key="NSCell" id="761107402">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">QWJpbGl0YSBsYSBmaW5lc3RyYSByb290IGRpIFgxMS4gVXRpbGl6emEgbGEgY29tYmluYXppb25lIGRp
-IHRhc3RpIENvbWFuZG8tT3B6aW9uZS1BIHBlciBhdHRpdmFyZSBlIGRpc2F0dGl2YXJlIGxhIG1vZGFs
-aXTDoCBhIHR1dHRvIHNjaGVybW8uA</string>
+ <string key="NSContents">Abilita la finestra root di X11. Utilizza la combinazione di tasti Comando-Opzione-A per attivare e disattivare la modalità a tutto schermo.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="298603383"/>
@@ -839,7 +840,7 @@ aXTDoCBhIHR1dHRvIHNjaGVybW8uA</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -850,15 +851,13 @@ aXTDoCBhIHR1dHRvIHNjaGVybW8uA</string>
<object class="NSTextField" id="386152084">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 188}, {436, 28}}</string>
+ <string key="NSFrame">{{36, 188}, {474, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="572508492">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">QWJpbGl0YSBsJ2VsZW1lbnRvIOKAnGNvcGlh4oCdIGRlbCBtZW51IGUgY29uc2VudGkgbGEgc2luY3Jv
-bml6emF6aW9uZSBkZWdsaSBhcHB1bnRpIGRpIE9TWCBlIGkgYnVmZmVyIENMSVBCT0FSRCBlIFBSSU1B
-UlkgZGkgWDExLg</string>
+ <string key="NSContents">Abilita l'elemento “copia†del menu e consenti la sincronizzazione degli appunti di OSX e i buffer CLIPBOARD e PRIMARY di X11.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="386152084"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -874,12 +873,12 @@ UlkgZGkgWDExLg</string>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Aggiorna CLIPBOARD quando gli appunti vengono modificati.</string>
+ <string key="NSContents">Aggiorna CLIPBOARD quando gli appunti cambiano</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -896,12 +895,12 @@ UlkgZGkgWDExLg</string>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Aggiorna PRIMARY (clic con il pulsante centrale) quando gli appunti vengono modificati.</string>
+ <string key="NSContents">Aggiorna PRIMARY (clic con il pulsante centrale) quando gli appunti cambiano</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -912,18 +911,18 @@ UlkgZGkgWDExLg</string>
<object class="NSButton" id="1002778833">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 51}, {467, 18}}</string>
+ <string key="NSFrame">{{34, 51}, {470, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Aggiorna subito gli appunti quando viene selezionato del nuovo testo.</string>
+ <string key="NSContents">Aggiorna immediatamente gli appunti quando si seleziona nuovo testo</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -940,12 +939,12 @@ UlkgZGkgWDExLg</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Aggiorna gli appunti quando CLIPBOARD viene modificato.</string>
+ <string key="NSContents">Aggiorna gli appunti quando CLIPBOARD cambia</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -956,7 +955,7 @@ UlkgZGkgWDExLg</string>
<object class="NSTextField" id="620944856">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{48, 125}, {424, 28}}</string>
+ <string key="NSFrame">{{48, 125}, {457, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="461823902">
@@ -1015,7 +1014,7 @@ UlkgZGkgWDExLg</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1032,9 +1031,7 @@ UlkgZGkgWDExLg</string>
<object class="NSTextFieldCell" key="NSCell" id="399127858">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">UXVhbmRvIGlsIHJpcXVhZHJvIMOoIGF0dGl2YXRvLCBmYWNlbmRvIGNsaWMgc3UgdW5hIGZpbmVzdHJh
-IGluYXR0aXZhLCBpbCBjbGljIGRlbCBtb3VzZSBwYXNzZXLDoCBhIHRhbGUgZmluZXN0cmEgZSBsYSBh
-dHRpdmVyw6AuA</string>
+ <string key="NSContents">Quando il riquadro è attivato, facendo clic su una finestra inattiva, il clic del mouse passerà a tale finestra e la attiverà.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="290578835"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1055,7 +1052,7 @@ dHRpdmVyw6AuA</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1072,8 +1069,7 @@ dHRpdmVyw6AuA</string>
<object class="NSTextFieldCell" key="NSCell" id="183409141">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">TGEgbWVzc2EgYSBmdW9jbyBkZWxsYSBmaW5lc3RyYSBkaSBYMTEgYXZ2aWVuZSBtZWRpYW50ZSBpbCBj
-dXJzb3JlLiBRdWVzdG8gcHXDsiBhdmVyZSBlZmZldHRpIGNvbnRyb3Byb2R1Y2VudGkuA</string>
+ <string key="NSContents">La messa a fuoco della finestra di X11 avviene mediante il cursore. Questo può avere effetti controproducenti.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="138261120"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1094,7 +1090,7 @@ dXJzb3JlLiBRdWVzdG8gcHXDsiBhdmVyZSBlZmZldHRpIGNvbnRyb3Byb2R1Y2VudGkuA</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1111,9 +1107,7 @@ dXJzb3JlLiBRdWVzdG8gcHXDsiBhdmVyZSBlZmZldHRpIGNvbnRyb3Byb2R1Y2VudGkuA</string>
<object class="NSTextFieldCell" key="NSCell" id="989804990">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">UXVhbmRvIGlsIHJpcXVhZHJvIMOoIGF0dGl2YXRvLCBsYSBjcmVhemlvbmUgZGkgdW5hIG51b3ZhIGZp
-bmVzdHJhIGRpIFgxMSBmYXLDoCBzcG9zdGFyZSBYMTEuYXBwIGluIHByaW1vIHBpYW5vIChpbnZlY2Ug
-ZGkgRmluZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
+ <string key="NSContents">Quando il riquadro è attivato, la creazione di una nuova finestra di X11 farà spostare X11.app in primo piano (invece di Finder.app, Terminal.app, etc.)</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="57161931"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1147,7 +1141,7 @@ ZGkgRmluZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1169,7 +1163,7 @@ ZGkgRmluZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="463913967"/>
+ <reference key="NSNormalImage" ref="1045379289"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1186,10 +1180,7 @@ ZGkgRmluZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
<object class="NSTextFieldCell" key="NSCell" id="53243865">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">QWxsJ2F2dmlvIGRpIFgxMSB2ZXJyYW5ubyBjcmVhdGUgbGUgY2hpYXZpIFhhdXRob3JpdHkgcGVyIGls
-IGNvbnRyb2xsbyBkJ2FjY2Vzc28uIFNlIGwnaW5kaXJpenpvIElQIGRlbCBzaXN0ZW1hIGNhbWJpYSwg
-dGFsaSBjaGlhdmkgbm9uIHNvbm8gcGnDuSB2YWxpZGUuIFF1ZXN0YSBzaXR1YXppb25lIHBvdHJlYmJl
-IGJsb2NjYXJlIGwnYXZ2aW8gZGVsbGUgYXBwbGljYXppb25pIFgxMS4</string>
+ <string key="NSContents">All'avvio di X11 verranno create le chiavi Xauthority per il controllo d'accesso. Se l'indirizzo IP del sistema cambia, tali chiavi non sono più valide. Questa situazione potrebbe bloccare l'avvio delle applicazioni X11.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="168436707"/>
@@ -1206,10 +1197,7 @@ IGJsb2NjYXJlIGwnYXZ2aW8gZGVsbGUgYXBwbGljYXppb25pIFgxMS4</string>
<object class="NSTextFieldCell" key="NSCell" id="390084685">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">U2UgcG9zc2liaWxlLCBwZXIgZ2FyYW50aXJlIGxhIHNpY3VyZXp6YSBkZWwgc2lzdGVtYSBkZXZlIGVz
-c2VyZSBpbm9sdHJlIGFiaWxpdGF0YSBsYSBmdW56aW9uZSBBdXRlbnRpY2EgY29ubmVzc2lvbmkuIFF1
-YW5kbyBxdWVzdGEgZnVuemlvbmUgbm9uIMOoIGF0dGl2YSwgbm9uIHNvbm8gY29uc2VudGl0ZSBsZSBj
-b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
+ <string key="NSContents">Se possibile, per garantire la sicurezza del sistema deve essere inoltre abilitata la funzione Autentica connessioni. Quando questa funzione non è attiva, non sono consentite le connessioni dalle applicazioni remote.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="363817195"/>
@@ -1254,10 +1242,11 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
</object>
</object>
<string key="NSFrameSize">{664, 308}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1270,7 +1259,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1291,7 +1280,11 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1314,7 +1307,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1355,12 +1348,12 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableColumn" id="938444323">
- <double key="NSWidth">1.327310e+02</double>
- <double key="NSMinWidth">6.273100e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">132.73100280761719</double>
+ <double key="NSMinWidth">62.730998992919922</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
<string key="NSContents">Nome</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
@@ -1394,12 +1387,12 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<string key="NSHeaderToolTip"/>
</object>
<object class="NSTableColumn" id="84282687">
- <double key="NSWidth">1.100000e+02</double>
- <double key="NSMinWidth">4.000000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">110</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
<string key="NSContents">Comando</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="113872566"/>
@@ -1422,12 +1415,12 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<string key="NSHeaderToolTip"/>
</object>
<object class="NSTableColumn" id="242608782">
- <double key="NSWidth">8.100000e+01</double>
- <double key="NSMinWidth">1.000000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">81</double>
+ <double key="NSMinWidth">10</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
<string key="NSContents">Abbreviazione</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor">
@@ -1444,7 +1437,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<string key="NSContents">Cella di testo</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.200000e+01</double>
+ <double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSPlaceholderString"/>
@@ -1454,7 +1447,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="239012588"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1465,8 +1458,8 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<string key="NSHeaderToolTip"/>
</object>
</object>
- <double key="NSIntercellSpacingWidth">3.000000e+00</double>
- <double key="NSIntercellSpacingHeight">2.000000e+00</double>
+ <double key="NSIntercellSpacingWidth">3</double>
+ <double key="NSIntercellSpacingHeight">2</double>
<reference key="NSBackgroundColor" ref="822946413"/>
<object class="NSColor" key="NSGridColor">
<int key="NSColorSpace">6</int>
@@ -1477,12 +1470,15 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<bytes key="NSWhite">MC41AA</bytes>
</object>
</object>
- <double key="NSRowHeight">1.700000e+01</double>
+ <double key="NSRowHeight">17</double>
<int key="NSTvFlags">1379958784</int>
+ <reference key="NSDelegate"/>
+ <reference key="NSDataSource"/>
<int key="NSColumnAutoresizingStyle">1</int>
<int key="NSDraggingSourceMaskForLocal">-1</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool>
+ <int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
<string key="NSFrame">{{1, 17}, {333, 198}}</string>
@@ -1499,7 +1495,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">9.949238e-01</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1509,7 +1505,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">6.885246e-01</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1552,7 +1548,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1566,7 +1562,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -1610,7 +1606,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
</object>
<object class="NSMenuItem" id="1032342329">
<reference key="NSMenu" ref="48278059"/>
- <string type="base64-UTF8" key="NSTitle">UGVyc29uYWxpenph4oCmA</string>
+ <string key="NSTitle">Personalizza…</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -2185,28 +2181,26 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
- <object class="NSArray" key="object" id="330408435">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="object" ref="0"/>
<reference key="children" ref="904585544"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="815810918"/>
- <reference key="parent" ref="330408435"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="941939442"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="951368722"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
@@ -2220,7 +2214,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<reference ref="868031522"/>
<reference ref="551174276"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">MainMenu</string>
</object>
<object class="IBObjectRecord">
@@ -2465,7 +2459,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<object class="IBObjectRecord">
<int key="objectID">196</int>
<reference key="object" ref="485884620"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">X11Controller</string>
</object>
<object class="IBObjectRecord">
@@ -2475,7 +2469,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="941366957"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">PrefsPanel</string>
</object>
<object class="IBObjectRecord">
@@ -2739,7 +2733,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="85544634"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">EditPrograms</string>
</object>
<object class="IBObjectRecord">
@@ -2762,7 +2756,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<reference ref="318286212"/>
<reference ref="511651072"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">DockMenu</string>
</object>
<object class="IBObjectRecord">
@@ -3314,10 +3308,8 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
+ <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>-3.ImportedFromIB2</string>
<string>100292.IBPluginDependency</string>
@@ -3373,7 +3365,6 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<string>169.editorWindowContentRectSynchronizationRect</string>
<string>19.IBPluginDependency</string>
<string>19.ImportedFromIB2</string>
- <string>196.IBPluginDependency</string>
<string>196.ImportedFromIB2</string>
<string>200295.IBPluginDependency</string>
<string>200295.IBShouldRemoveOnLegacySave</string>
@@ -3388,6 +3379,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<string>24.ImportedFromIB2</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
+ <string>244.IBPluginDependency</string>
<string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
@@ -3407,6 +3399,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<string>272.IBPluginDependency</string>
<string>272.ImportedFromIB2</string>
<string>285.IBEditorWindowLastContentRect</string>
+ <string>285.IBPluginDependency</string>
<string>285.IBViewEditorWindowController.showingBoundsRectangles</string>
<string>285.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>285.IBWindowTemplateEditedContentRect</string>
@@ -3472,19 +3465,27 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<string>300441.IBPluginDependency</string>
<string>300447.IBPluginDependency</string>
<string>300447.ImportedFromIB2</string>
+ <string>300447.object.labelIdentifier</string>
<string>300450.IBPluginDependency</string>
+ <string>300450.object.labelIdentifier</string>
<string>300451.IBPluginDependency</string>
<string>300451.ImportedFromIB2</string>
+ <string>300451.object.labelIdentifier</string>
<string>300452.IBPluginDependency</string>
+ <string>300452.object.labelIdentifier</string>
<string>300453.IBPluginDependency</string>
<string>300453.ImportedFromIB2</string>
+ <string>300453.object.labelIdentifier</string>
<string>300454.IBPluginDependency</string>
+ <string>300454.object.labelIdentifier</string>
<string>300455.IBPluginDependency</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
<string>300457.IBPluginDependency</string>
<string>300457.ImportedFromIB2</string>
+ <string>300457.object.labelIdentifier</string>
<string>300458.IBPluginDependency</string>
+ <string>300458.object.labelIdentifier</string>
<string>300459.IBPluginDependency</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
@@ -3607,13 +3608,12 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1" id="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3633,273 +3633,279 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{168, 821}, {113, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{202, 626}, {154, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {664, 308}}</string>
- <boolean value="NO" id="6"/>
- <string>{{437, 548}, {664, 308}}</string>
- <reference ref="9"/>
+ <string>{{437, 698}, {664, 308}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>{{437, 698}, {664, 308}}</string>
+ <integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
- <integer value="0" id="8"/>
- <reference ref="9"/>
+ <integer value="0"/>
+ <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{58, 803}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{67, 585}, {546, 271}}</string>
- <reference ref="9"/>
- <reference ref="6"/>
- <string>{{67, 585}, {546, 271}}</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>{{68, 585}, {454, 271}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <integer value="1"/>
+ <string>{{68, 585}, {454, 271}}</string>
+ <integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
- <reference ref="8"/>
- <reference ref="9"/>
+ <integer value="0"/>
+ <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -3907,9 +3913,7 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -3947,6 +3951,15 @@ b25uZXNzaW9uaSBkYWxsZSBhcHBsaWNhemlvbmkgcmVtb3RlLg</string>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
diff --git a/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nib
index 7cbaca934..3c95f407b 100644
--- a/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist b/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist
index b78c7c5fe..a4db22357 100644
--- a/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>ja</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/designable.nib
index 72521f92c..ad08afd53 100644
--- a/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/designable.nib
@@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9C31</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.26</string>
- <string key="IBDocument.HIToolboxVersion">352.00</string>
+ <string key="IBDocument.SystemVersion">10A354</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
+ <string key="IBDocument.AppKitVersion">1019</string>
+ <string key="IBDocument.HIToolboxVersion">421.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">729</string>
+ </object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -15,7 +19,7 @@
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
+ <object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
@@ -60,7 +64,7 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="139290918">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">WDExIOOBq+OBpOOBhOOBpg</string>
+ <string key="NSTitle">X11 ã«ã¤ã„ã¦</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="531645050"/>
@@ -68,7 +72,7 @@
</object>
<object class="NSMenuItem" id="386173216">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">55Kw5aKD6Kit5a6aLi4uA</string>
+ <string key="NSTitle">環境設定...</string>
<string key="NSKeyEquiv">,</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -88,7 +92,7 @@
</object>
<object class="NSMenuItem" id="32285361">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">44K144O844OT44K5A</string>
+ <string key="NSTitle">サービス</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -96,7 +100,7 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="821388474">
- <string type="base64-UTF8" key="NSTitle">44K144O844OT44K5A</string>
+ <string key="NSTitle">サービス</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -116,7 +120,7 @@
</object>
<object class="NSMenuItem" id="6876565">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">44OV44Or44K544Kv44Oq44O844Oz44KS5YiH44KK5pu/44GI44KLA</string>
+ <string key="NSTitle">フルスクリーンを切り替ãˆã‚‹</string>
<string key="NSKeyEquiv">a</string>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -136,7 +140,7 @@
</object>
<object class="NSMenuItem" id="301008465">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">WDExIOOCkumaoOOBmQ</string>
+ <string key="NSTitle">X11 ã‚’éš ã™</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -146,7 +150,7 @@
</object>
<object class="NSMenuItem" id="206802571">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">44G744GL44KS6Zqg44GZA</string>
+ <string key="NSTitle">ã»ã‹ã‚’éš ã™</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -155,7 +159,7 @@
</object>
<object class="NSMenuItem" id="1023546148">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">44GZ44G544Gm44KS6KGo56S6A</string>
+ <string key="NSTitle">ã™ã¹ã¦ã‚’表示</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -176,7 +180,7 @@
</object>
<object class="NSMenuItem" id="274138642">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">WDExIOOCkue1guS6hg</string>
+ <string key="NSTitle">X11 を終了</string>
<string key="NSKeyEquiv">q</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -189,7 +193,7 @@
</object>
<object class="NSMenuItem" id="868031522">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">44Ki44OX44Oq44Kx44O844K344On44OzA</string>
+ <string key="NSTitle">アプリケーション</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -197,7 +201,7 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="981161348">
- <string type="base64-UTF8" key="NSTitle">44Ki44OX44Oq44Kx44O844K344On44OzA</string>
+ <string key="NSTitle">アプリケーション</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="390088328">
@@ -213,7 +217,7 @@
</object>
<object class="NSMenuItem" id="1065386165">
<reference key="NSMenu" ref="981161348"/>
- <string type="base64-UTF8" key="NSTitle">44Kr44K544K/44Oe44Kk44K6Li4uA</string>
+ <string key="NSTitle">カスタマイズ...</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -225,7 +229,7 @@
</object>
<object class="NSMenuItem" id="200491363">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">57eo6ZuGA</string>
+ <string key="NSTitle">編集</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -233,12 +237,12 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="526778998">
- <string type="base64-UTF8" key="NSTitle">57eo6ZuGA</string>
+ <string key="NSTitle">編集</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="185296989">
<reference key="NSMenu" ref="526778998"/>
- <string type="base64-UTF8" key="NSTitle">44Kz44OU44O8A</string>
+ <string key="NSTitle">コピー</string>
<string key="NSKeyEquiv">c</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -250,7 +254,7 @@
</object>
<object class="NSMenuItem" id="931553638">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">44Km44Kk44Oz44OJ44KmA</string>
+ <string key="NSTitle">ウインドウ</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -258,12 +262,12 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="96874957">
- <string type="base64-UTF8" key="NSTitle">44Km44Kk44Oz44OJ44KmA</string>
+ <string key="NSTitle">ウインドウ</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="984461797">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">6ZaJ44GY44KLA</string>
+ <string key="NSTitle">é–‰ã˜ã‚‹</string>
<string key="NSKeyEquiv">w</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -272,7 +276,7 @@
</object>
<object class="NSMenuItem" id="677652931">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">44GX44G+44GGA</string>
+ <string key="NSTitle">ã—ã¾ã†</string>
<string key="NSKeyEquiv">m</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -281,7 +285,7 @@
</object>
<object class="NSMenuItem" id="1066447520">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">5ouh5aSn77yP57iu5bCPA</string>
+ <string key="NSTitle">拡大ï¼ç¸®å°</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -301,8 +305,8 @@
</object>
<object class="NSMenuItem" id="1036389925">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">44Km44Kk44Oz44OJ44Km44KS5beh5ZueA</string>
- <string type="base64-UTF8" key="NSKeyEquiv">75yEA</string>
+ <string key="NSTitle">ウインドウを巡回</string>
+ <string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="531645050"/>
@@ -310,8 +314,8 @@
</object>
<object class="NSMenuItem" id="369641893">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">44Km44Kk44Oz44OJ44Km44KS6YCG5pa55ZCR44Gr5beh5ZueA</string>
- <string type="base64-UTF8" key="NSKeyEquiv">75yEA</string>
+ <string key="NSTitle">ウインドウを逆方å‘ã«å·¡å›ž</string>
+ <string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">1179648</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="531645050"/>
@@ -330,7 +334,7 @@
</object>
<object class="NSMenuItem" id="276216762">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">44GZ44G544Gm44KS5omL5YmN44Gr56e75YuVA</string>
+ <string key="NSTitle">ã™ã¹ã¦ã‚’手å‰ã«ç§»å‹•</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -354,7 +358,7 @@
</object>
<object class="NSMenuItem" id="551174276">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">44OY44Or44OXA</string>
+ <string key="NSTitle">ヘルプ</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -362,12 +366,12 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="511848303">
- <string type="base64-UTF8" key="NSTitle">44OY44Or44OXA</string>
+ <string key="NSTitle">ヘルプ</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="504984881">
<reference key="NSMenu" ref="511848303"/>
- <string type="base64-UTF8" key="NSTitle">WDExIOODmOODq+ODlw</string>
+ <string key="NSTitle">X11 ヘルプ</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -388,12 +392,12 @@
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{319, 328}, {584, 308}}</string>
<int key="NSWTFlags">1350041600</int>
- <string type="base64-UTF8" key="NSWindowTitle">WDExIOOBrueSsOWig+ioreWumg</string>
+ <string key="NSWindowTitle">X11 ã®ç’°å¢ƒè¨­å®š</string>
<string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
<nil key="NSNextResponder"/>
@@ -425,16 +429,16 @@
<object class="NSButtonCell" key="NSCell" id="990762273">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">MyAg44Oc44K/44Oz44Oe44Km44K544KS44Ko44Of44Ol44Os44O844OIA</string>
+ <string key="NSContents">3 ボタンマウスをエミュレート</string>
<object class="NSFont" key="NSSupport" id="463863101">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
+ <double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="379928455">
+ <object class="NSCustomResource" key="NSNormalImage" id="964646176">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -456,12 +460,10 @@
<object class="NSTextFieldCell" key="NSCell" id="391919450">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5pyJ5Yq544Gr44GZ44KL44Go44CB44Oh44OL44Ol44O844OQ44O844Gu5Luj5pu/44Kt44O844Gr44KI
-44Gj44GmIFgxMSDjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7Pjga7jg6Hjgr/kv67po77jgq3jg7zjgpLk
-vb/nlKjjgafjgY3jgarjgY/jgarjgovloLTlkIjjgYzjgYLjgorjgb7jgZnjgII</string>
+ <string key="NSContents">有効ã«ã™ã‚‹ã¨ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã®ä»£æ›¿ã‚­ãƒ¼ã«ã‚ˆã£ã¦ X11 アプリケーションã®ãƒ¡ã‚¿ä¿®é£¾ã‚­ãƒ¼ã‚’使用ã§ããªããªã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚</string>
<object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.100000e+01</double>
+ <double key="NSSize">11</double>
<int key="NSfFlags">3100</int>
</object>
<string key="NSPlaceholderString"/>
@@ -470,9 +472,9 @@ vb/nlKjjgafjgY3jgarjgY/jgarjgovloLTlkIjjgYzjgYLjgorjgb7jgZnjgII</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="639812278">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -515,12 +517,12 @@ nOOBq+OBquOCiuOBvuOBmeOAggo</string>
<object class="NSButtonCell" key="NSCell" id="940564599">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">WDExIOOBruS7o+abv+OCreODvOOCkuacieWKueOBq+OBmeOCiw</string>
+ <string key="NSContents">X11 ã®ä»£æ›¿ã‚­ãƒ¼ã‚’有効ã«ã™ã‚‹</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -537,8 +539,7 @@ nOOBq+OBquOCiuOBvuOBmeOAggo</string>
<object class="NSTextFieldCell" key="NSCell" id="666057093">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5YWl5Yqb44Oh44OL44Ol44O844KS5aSJ5pu044GX44Gm54++5Zyo44GuIFgxMSDjgq3jg7zjg57jg4Pj
-g5fjgpLkuIrmm7jjgY3jgZnjgovjgZPjgajjgpLoqLHlj6/jgZfjgb7jgZnjgII</string>
+ <string key="NSContents">入力メニューを変更ã—ã¦ç¾åœ¨ã® X11 キーマップを上書ãã™ã‚‹ã“ã¨ã‚’許å¯ã—ã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="31160162"/>
@@ -555,12 +556,12 @@ g5fjgpLkuIrmm7jjgY3jgZnjgovjgZPjgajjgpLoqLHlj6/jgZfjgb7jgZnjgII</string>
<object class="NSButtonCell" key="NSCell" id="967619578">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44K344K544OG44Og44Gu44Kt44O844Oc44O844OJ44Os44Kk44Ki44Km44OI44Gr5b6T44GGA</string>
+ <string key="NSContents">システムã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã«å¾“ã†</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -572,7 +573,7 @@ g5fjgpLkuIrmm7jjgY3jgZnjgovjgZPjgajjgpLoqLHlj6/jgZfjgb7jgZnjgII</string>
<string key="NSFrame">{{10, 33}, {538, 246}}</string>
<reference key="NSSuperview" ref="448510093"/>
</object>
- <string type="base64-UTF8" key="NSLabel">5YWl5YqbA</string>
+ <string key="NSLabel">入力</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -594,12 +595,12 @@ g5fjgpLkuIrmm7jjgY3jgZnjgovjgZPjgajjgpLoqLHlj6/jgZfjgb7jgZnjgII</string>
<object class="NSButtonCell" key="NSCell" id="1016069354">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44K344K544OG44Og44Gu6K2m5ZGK44Ko44OV44Kn44Kv44OI44KS5L2/55SoA</string>
+ <string key="NSContents">システムã®è­¦å‘Šã‚¨ãƒ•ã‚§ã‚¯ãƒˆã‚’使用</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -610,15 +611,13 @@ g5fjgpLkuIrmm7jjgY3jgZnjgovjgZPjgajjgpLoqLHlj6/jgZfjgb7jgZnjgII</string>
<object class="NSTextField" id="1039016593">
<reference key="NSNextResponder" ref="515308735"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 17}, {468, 28}}</string>
+ <string key="NSFrame">{{36, 17}, {460, 28}}</string>
<reference key="NSSuperview" ref="515308735"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="624655599">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOOBruODk+ODvOODl+mfs+OBruOBn+OCgeOBq+OAgeKAnOOCteOCpuODs+ODieOCqOODleOCp+OC
-r+ODiOKAneOCt+OCueODhuODoOeSsOWig+ioreWumuODkeODjeODq+OBq+Wumue+qeOBleOCjOOBpuOB
-hOOCi+OCt+OCueODhuODoOaomea6luOBruitpuWRiumfs+OCkuS9v+eUqOOBl+OBvuOBmeOAgg</string>
+ <string key="NSContents">X11 ã®ãƒ“ープ音ã®ãŸã‚ã«ã€â€œã‚µã‚¦ãƒ³ãƒ‰ã‚¨ãƒ•ã‚§ã‚¯ãƒˆâ€ã‚·ã‚¹ãƒ†ãƒ ç’°å¢ƒè¨­å®šãƒ‘ãƒãƒ«ã«å®šç¾©ã•ã‚Œã¦ã„るシステム標準ã®è­¦å‘ŠéŸ³ã‚’使用ã—ã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="1039016593"/>
@@ -641,7 +640,7 @@ hOOCi+OCt+OCueODhuODoOaomea6luOBruitpuWRiumfs+OCkuS9v+eUqOOBl+OBvuOBmeOAgg</stri
<int key="NSButtonFlags2">1</int>
<object class="NSFont" key="NSAlternateImage">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
+ <double key="NSSize">13</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSAlternateContents"/>
@@ -652,7 +651,7 @@ hOOCi+OCt+OCueODhuODoOaomea6luOBruitpuWRiumfs+OCkuS9v+eUqOOBl+OBvuOBmeOAgg</stri
<int key="NSPeriodicInterval">75</int>
<object class="NSMenuItem" key="NSMenuItem" id="616492372">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">44OH44Kj44K544OX44Os44Kk44GL44KJA</string>
+ <string key="NSTitle">ディスプレイã‹ã‚‰</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -673,7 +672,7 @@ hOOCi+OCt+OCueODhuODoOaomea6luOBruitpuWRiumfs+OCkuS9v+eUqOOBl+OBvuOBmeOAgg</stri
<reference ref="616492372"/>
<object class="NSMenuItem" id="759499526">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">MjU2IOiJsg</string>
+ <string key="NSTitle">256 色</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -685,7 +684,7 @@ hOOCi+OCt+OCueODhuODoOaomea6luOBruitpuWRiumfs+OCkuS9v+eUqOOBl+OBvuOBmeOAgg</stri
</object>
<object class="NSMenuItem" id="543935434">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">57SEIDMyMDAwIOiJsg</string>
+ <string key="NSTitle">約 32000 色</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -697,7 +696,7 @@ hOOCi+OCt+OCueODhuODoOaomea6luOBruitpuWRiumfs+OCkuS9v+eUqOOBl+OBvuOBmeOAgg</stri
</object>
<object class="NSMenuItem" id="836673018">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">57SEIDE2NzAg5LiH6ImyA</string>
+ <string key="NSTitle">約 1670 万色</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -708,6 +707,7 @@ hOOCi+OCt+OCueODhuODoOaomea6luOBruitpuWRiumfs+OCkuS9v+eUqOOBl+OBvuOBmeOAgg</stri
<reference key="NSTarget" ref="633115429"/>
</object>
</object>
+ <reference key="NSMenuFont" ref="463863101"/>
</object>
<int key="NSPreferredEdge">3</int>
<bool key="NSUsesItemFromMenu">YES</bool>
@@ -741,8 +741,7 @@ hOOCi+OCt+OCueODhuODoOaomea6luOBruitpuWRiumfs+OCkuS9v+eUqOOBl+OBvuOBmeOAgg</stri
<object class="NSTextFieldCell" key="NSCell" id="311969422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">44GT44Gu44Kq44OX44K344On44Oz44Gv44CB5qyh5ZueIFgxMSDjgpLotbfli5XjgZfjgZ/jgajjgY3j
-gavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
+ <string key="NSContents">ã“ã®ã‚ªãƒ—ションã¯ã€æ¬¡å›ž X11 ã‚’èµ·å‹•ã—ãŸã¨ãã«æœ‰åŠ¹ã«ãªã‚Šã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="86150604"/>
@@ -759,12 +758,12 @@ gavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSButtonCell" key="NSCell" id="631531164">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44OV44Or44K544Kv44Oq44O844Oz44Oi44O844OJA</string>
+ <string key="NSContents">フルスクリーンモード</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -781,13 +780,12 @@ gavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSButtonCell" key="NSCell" id="917248662">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44OV44Or44K544Kv44Oq44O844Oz44Oi44O844OJ44Gn44Oh44OL44Ol44O844OQ44O844KS6Ieq5YuV
-55qE44Gr6KGo56S6A</string>
+ <string key="NSContents">フルスクリーンモードã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒãƒ¼ã‚’自動的ã«è¡¨ç¤º</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -804,10 +802,7 @@ gavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSTextFieldCell" key="NSCell" id="761107402">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOOBruODq+ODvOODiOOCpuOCpOODs+ODieOCpuOCkuacieWKueOBq+OBl+OBvuOBmeOAguODleOD
-q+OCueOCr+ODquODvOODs+ODouODvOODieOBq+WIh+OCiuabv+OBiOOBn+OCiuOAgeODleODq+OCueOC
-r+ODquODvOODs+ODouODvOODieOCkue1guS6huOBmeOCi+OBqOOBjeOBr+OAgeOCs+ODnuODs+ODiSAr
-IE9wdGlvbiArIEEg44Kt44O844KS5oq844GX44G+44GZ44CCA</string>
+ <string key="NSContents">X11 ã®ãƒ«ãƒ¼ãƒˆã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‚’有効ã«ã—ã¾ã™ã€‚フルスクリーンモードã«åˆ‡ã‚Šæ›¿ãˆãŸã‚Šã€ãƒ•ãƒ«ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ãƒ¢ãƒ¼ãƒ‰ã‚’終了ã™ã‚‹ã¨ãã¯ã€ã‚³ãƒžãƒ³ãƒ‰ + Option + A キーを押ã—ã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="298603383"/>
@@ -818,7 +813,7 @@ IE9wdGlvbiArIEEg44Kt44O844KS5oq844GX44G+44GZ44CCA</string>
</object>
<string key="NSFrame">{{10, 33}, {538, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">5Ye65YqbA</string>
+ <string key="NSLabel">出力</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -840,12 +835,12 @@ IE9wdGlvbiArIEEg44Kt44O844KS5oq844GX44G+44GZ44CCA</string>
<object class="NSButtonCell" key="NSCell" id="718083688">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5ZCM5pyf44KS5pyJ5Yq544Gr44GZ44KLA</string>
+ <string key="NSContents">åŒæœŸã‚’有効ã«ã™ã‚‹</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -862,10 +857,7 @@ IE9wdGlvbiArIEEg44Kt44O844KS5oq844GX44G+44GZ44CCA</string>
<object class="NSTextFieldCell" key="NSCell" id="572508492">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">4oCc44Kz44OU44O84oCd44Oh44OL44Ol44O86aCF55uu44KS5pyJ5Yq544Gr44GX44Gm44CBT1NYIOOB
-ruODmuODvOOCueODiOODnOODvOODieOBqCBYMTEg44GuIENMSVBCT0FSRCDjg5Djg4Pjg5XjgqHjgYrj
-gojjgbMgUFJJTUFSWSDjg5Djg4Pjg5XjgqHjgpLlkIzmnJ/jgafjgY3jgovjgojjgYbjgavjgZfjgb7j
-gZnjgII</string>
+ <string key="NSContents">“コピーâ€ãƒ¡ãƒ‹ãƒ¥ãƒ¼é …目を有効ã«ã—ã¦ã€OSX ã®ãƒšãƒ¼ã‚¹ãƒˆãƒœãƒ¼ãƒ‰ã¨ X11 ã® CLIPBOARD ãƒãƒƒãƒ•ã‚¡ãŠã‚ˆã³ PRIMARY ãƒãƒƒãƒ•ã‚¡ã‚’åŒæœŸã§ãるよã†ã«ã—ã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="386152084"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -881,13 +873,12 @@ gZnjgII</string>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44Oa44O844K544OI44Oc44O844OJ44GM5aSJ5pu044GV44KM44Gf44Go44GN44GrIENMSVBCT0FSRCDj
-gpLjgqLjg4Pjg5fjg4fjg7zjg4jjgII</string>
+ <string key="NSContents">ペーストボードãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã« CLIPBOARD をアップデート</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -904,13 +895,12 @@ gpLjgqLjg4Pjg5fjg4fjg7zjg4jjgII</string>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44Oa44O844K544OI44Oc44O844OJ44GM5aSJ5pu044GV44KM44Gf44Go44GN44GrIFBSSU1BUlkg77yI
-5Lit44Kv44Oq44OD44Kv77yJ44KS44Ki44OD44OX44OH44O844OI44CCA</string>
+ <string key="NSContents">ペーストボードãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã« PRIMARY (中クリック)をアップデート</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -927,13 +917,12 @@ gpLjgqLjg4Pjg5fjg4fjg7zjg4jjgII</string>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5paw44GX44GE44OG44Kt44K544OI44GM6YG45oqe44GV44KM44Gf44KJ44CB44GZ44GQ44Gr44Oa44O8
-44K544OI44Oc44O844OJ44KS44Ki44OD44OX44OH44O844OI44CCA</string>
+ <string key="NSContents">æ–°ã—ã„テキストãŒé¸æŠžã•ã‚ŒãŸã‚‰ã€ã™ãã«ãƒšãƒ¼ã‚¹ãƒˆãƒœãƒ¼ãƒ‰ã‚’アップデート</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -950,13 +939,12 @@ gpLjgqLjg4Pjg5fjg4fjg7zjg4jjgII</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">Q0xJUEJPQVJEIOOBjOWkieabtOOBleOCjOOBn+OBqOOBjeOBq+ODmuODvOOCueODiOODnOODvOODieOC
-kuOCouODg+ODl+ODh+ODvOODiOOAgg</string>
+ <string key="NSContents">CLIPBOARD ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«ãƒšãƒ¼ã‚¹ãƒˆãƒœãƒ¼ãƒ‰ã‚’アップデート</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -973,9 +961,7 @@ kuOCouODg+ODl+ODh+ODvOODiOOAgg</string>
<object class="NSTextFieldCell" key="NSCell" id="461823902">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">eGNsaXBib2FyZOOAgWtsaXBwZXLjgIHjgZ3jga7ku5bjga4gWDExIOOCr+ODquODg+ODl+ODnOODvOOD
-ieODnuODjeODvOOCuOODo+OCkuS9v+eUqOOBl+OBn+OBhOWgtOWQiOOBr+OAgeOBk+OBruOCquODl+OC
-t+ODp+ODs+OCkueEoeWKueOBq+OBl+OBpuOBj+OBoOOBleOBhOOAgg</string>
+ <string key="NSContents">xclipboardã€klipperã€ãã®ä»–ã® X11 クリップボードマãƒãƒ¼ã‚¸ãƒ£ã‚’使用ã—ãŸã„å ´åˆã¯ã€ã“ã®ã‚ªãƒ—ションを無効ã«ã—ã¦ãã ã•ã„。</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="620944856"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -991,9 +977,7 @@ t+ODp+ODs+OCkueEoeWKueOBq+OBl+OBpuOBj+OBoOOBleOBhOOAgg</string>
<object class="NSTextFieldCell" key="NSCell" id="994587858">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOODl+ODreODiOOCs+ODq+OBruWItumZkOOBq+OCiOOCiuOAgeOBk+OBruOCquODl+OCt+ODp+OD
-s+OBr+OAgeS4gOmDqOOBruOCouODl+ODquOCseODvOOCt+ODp+ODs+OBp+apn+iDveOBl+OBquOBhOWg
-tOWQiOOBjOOBguOCiuOBvuOBmeOAgg</string>
+ <string key="NSContents">X11 プロトコルã®åˆ¶é™ã«ã‚ˆã‚Šã€ã“ã®ã‚ªãƒ—ションã¯ã€ä¸€éƒ¨ã®ã‚¢ãƒ—リケーションã§æ©Ÿèƒ½ã—ãªã„å ´åˆãŒã‚ã‚Šã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="522511724"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1003,7 +987,7 @@ tOWQiOOBjOOBguOCiuOBvuOBmeOAgg</string>
</object>
<string key="NSFrame">{{10, 33}, {538, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">44Oa44O844K544OI44Oc44O844OJA</string>
+ <string key="NSLabel">ペーストボード</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1025,13 +1009,12 @@ tOWQiOOBjOOBguOCiuOBvuOBmeOAgg</string>
<object class="NSButtonCell" key="NSCell" id="259618205">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">6YG45oqe44GV44KM44Gm44GE44Gq44GE44Km44Kk44Oz44OJ44Km44KS55u05o6l44Kv44Oq44OD44Kv
-A</string>
+ <string key="NSContents">é¸æŠžã•ã‚Œã¦ã„ãªã„ウインドウを直接クリック</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1048,10 +1031,7 @@ A</string>
<object class="NSTextFieldCell" key="NSCell" id="399127858">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5pyJ5Yq544Gr44GX44Gf5aC05ZCI44CB6YG45oqe44GV44KM44Gm44GE44Gq44GE44Km44Kk44Oz44OJ
-44Km44KS44Kv44Oq44OD44Kv44GX44Gf44Go44GN44Gr44CB44Gd44Gu44Km44Kk44Oz44OJ44Km44KS
-5LiA55Wq5omL5YmN44Gr6KGo56S644GZ44KL44Gg44GR44Gn44Gq44GP44CB44Km44Kk44Oz44OJ44Km
-5YaF44Gu6aCF55uu44KS55u05o6l44Kv44Oq44OD44Kv44GX44G+44GZ44CCA</string>
+ <string key="NSContents">有効ã«ã—ãŸå ´åˆã€é¸æŠžã•ã‚Œã¦ã„ãªã„ウインドウをクリックã—ãŸã¨ãã«ã€ãã®ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‚’一番手å‰ã«è¡¨ç¤ºã™ã‚‹ã ã‘ã§ãªãã€ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦å†…ã®é …目を直接クリックã—ã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="290578835"/>
@@ -1068,12 +1048,12 @@ A</string>
<object class="NSButtonCell" key="NSCell" id="959555182">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44OV44Kp44O844Kr44K544KS44Oe44Km44K544Go5LiA57eS44Gr56e75YuVA</string>
+ <string key="NSContents">フォーカスをマウスã¨ä¸€ç·’ã«ç§»å‹•</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1090,9 +1070,7 @@ A</string>
<object class="NSTextFieldCell" key="NSCell" id="183409141">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOOCpuOCpOODs+ODieOCpuOBruODleOCqeODvOOCq+OCueOBjOOCq+ODvOOCveODq+OBqOS4gOe3
-kuOBq+enu+WLleOBl+OBvuOBmeOAgumAhuWKueaenOOBq+OBquOCi+WgtOWQiOOCguOBguOCiuOBvuOB
-meOAgg</string>
+ <string key="NSContents">X11 ウインドウã®ãƒ•ã‚©ãƒ¼ã‚«ã‚¹ãŒã‚«ãƒ¼ã‚½ãƒ«ã¨ä¸€ç·’ã«ç§»å‹•ã—ã¾ã™ã€‚逆効果ã«ãªã‚‹å ´åˆã‚‚ã‚ã‚Šã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="138261120"/>
@@ -1109,12 +1087,12 @@ meOAgg</string>
<object class="NSButtonCell" key="NSCell" id="556463187">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5paw6KaP44Km44Kk44Oz44OJ44Km44Gr44OV44Kp44O844Kr44K5A</string>
+ <string key="NSContents">æ–°è¦ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã«ãƒ•ã‚©ãƒ¼ã‚«ã‚¹</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1131,9 +1109,7 @@ meOAgg</string>
<object class="NSTextFieldCell" key="NSCell" id="989804990">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5pyJ5Yq544Gr44GX44Gf5aC05ZCI44CB5paw44GX44GEIFgxMSDjgqbjgqTjg7Pjg4njgqbjgpLkvZzm
-iJDjgZnjgovjgajjgIFGaW5kZXIuYXBwIOOChCDjgr/jg7zjg5/jg4rjg6suYXBwIOOBquOBqeOBruS7
-o+OCj+OCiuOBq+OAgVgxMS5hcHAg44GM5YmN6Z2i44Gr56e75YuV44GX44G+44GZ44CCA</string>
+ <string key="NSContents">有効ã«ã—ãŸå ´åˆã€æ–°ã—ã„ X11 ウインドウを作æˆã™ã‚‹ã¨ã€Finder.app ã‚„ ターミナル.app ãªã©ã®ä»£ã‚ã‚Šã«ã€X11.app ãŒå‰é¢ã«ç§»å‹•ã—ã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="57161931"/>
@@ -1144,7 +1120,7 @@ o+OCj+OCiuOBq+OAgVgxMS5hcHAg44GM5YmN6Z2i44Gr56e75YuV44GX44G+44GZ44CCA</string>
</object>
<string key="NSFrame">{{10, 33}, {538, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">44Km44Kk44Oz44OJ44KmA</string>
+ <string key="NSLabel">ウインドウ</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1163,12 +1139,12 @@ o+OCj+OCiuOBq+OAgVgxMS5hcHAg44GM5YmN6Z2i44Gr56e75YuV44GX44G+44GZ44CCA</string>
<object class="NSButtonCell" key="NSCell" id="189594322">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5o6l57aa44KS6KqN6Ki8A</string>
+ <string key="NSContents">接続をèªè¨¼</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1185,13 +1161,12 @@ o+OCj+OCiuOBq+OAgVgxMS5hcHAg44GM5YmN6Z2i44Gr56e75YuV44GX44G+44GZ44CCA</string>
<object class="NSButtonCell" key="NSCell" id="489340979">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44ON44OD44OI44Ov44O844Kv44O744Kv44Op44Kk44Ki44Oz44OI44GL44KJ44Gu5o6l57aa44KS6Kix
-5Y+vA</string>
+ <string key="NSContents">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ»ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‹ã‚‰ã®æŽ¥ç¶šã‚’許å¯</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="379928455"/>
+ <reference key="NSNormalImage" ref="964646176"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1208,11 +1183,7 @@ o+OCj+OCiuOBq+OAgVgxMS5hcHAg44GM5YmN6Z2i44Gr56e75YuV44GX44G+44GZ44CCA</string>
<object class="NSTextFieldCell" key="NSCell" id="53243865">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOOBrui1t+WLleaZguOBq+OAgVhhdXRob3JpdHkg44Ki44Kv44K744K55Yi25b6h44Kt44O844KS
-5L2c5oiQ44GX44G+44GZ44CC44K344K544OG44Og44GuIElQIOOCouODieODrOOCueOBjOWkieabtOOB
-leOCjOOCi+OBqOOAgeOBk+OCjOOCieOBruOCreODvOOBjOeEoeWKueOBq+OBquOCiuOAgVgxMSDjgqLj
-g5fjg6rjgrHjg7zjgrfjg6fjg7PjgYzotbfli5XjgZfjgarjgY/jgarjgovjgZPjgajjgYzjgYLjgorj
-gb7jgZnjgII</string>
+ <string key="NSContents">X11 ã®èµ·å‹•æ™‚ã«ã€Xauthority アクセス制御キーを作æˆã—ã¾ã™ã€‚システム㮠IP アドレスãŒå¤‰æ›´ã•ã‚Œã‚‹ã¨ã€ã“れらã®ã‚­ãƒ¼ãŒç„¡åŠ¹ã«ãªã‚Šã€X11 アプリケーションãŒèµ·å‹•ã—ãªããªã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="168436707"/>
@@ -1229,10 +1200,7 @@ gb7jgZnjgII</string>
<object class="NSTextFieldCell" key="NSCell" id="390084685">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5pyJ5Yq544Gr44GZ44KL5aC05ZCI44Gv44CB44K344K544OG44Og44Gu44K744Kt44Ol44Oq44OG44Kj
-44KS57at5oyB44GZ44KL44Gf44KB44Gr44CB4oCc5o6l57aa44KS6KqN6Ki84oCd44KC5pyJ5Yq544Gr
-44GX44Gm44GP44Gg44GV44GE44CC54Sh5Yq544Gr44GZ44KL44Go44CB44Oq44Oi44O844OI44Ki44OX
-44Oq44Kx44O844K344On44Oz44GL44KJ44Gu5o6l57aa44Gv5ouS5ZCm44GV44KM44G+44GZ44CCA</string>
+ <string key="NSContents">有効ã«ã™ã‚‹å ´åˆã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚’維æŒã™ã‚‹ãŸã‚ã«ã€â€œæŽ¥ç¶šã‚’èªè¨¼â€ã‚‚有効ã«ã—ã¦ãã ã•ã„。無効ã«ã™ã‚‹ã¨ã€ãƒªãƒ¢ãƒ¼ãƒˆã‚¢ãƒ—リケーションã‹ã‚‰ã®æŽ¥ç¶šã¯æ‹’å¦ã•ã‚Œã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="363817195"/>
@@ -1249,8 +1217,7 @@ gb7jgZnjgII</string>
<object class="NSTextFieldCell" key="NSCell" id="283628678">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">44GT44KM44KJ44Gu44Kq44OX44K344On44Oz44Gv44CB5qyh5ZueIFgxMSDjgpLotbfli5XjgZfjgZ/j
-gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
+ <string key="NSContents">ã“れらã®ã‚ªãƒ—ションã¯ã€æ¬¡å›ž X11 ã‚’èµ·å‹•ã—ãŸã¨ãã«æœ‰åŠ¹ã«ãªã‚Šã¾ã™ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="223835729"/>
@@ -1261,7 +1228,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
</object>
<string key="NSFrame">{{10, 33}, {538, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">44K744Kt44Ol44Oq44OG44KjA</string>
+ <string key="NSLabel">セキュリティ</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1281,7 +1248,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1289,12 +1256,12 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{360, 402}, {454, 271}}</string>
<int key="NSWTFlags">1350041600</int>
- <string type="base64-UTF8" key="NSWindowTitle">WDExIOOCouODl+ODquOCseODvOOCt+ODp+ODs+ODoeODi+ODpeODvA</string>
+ <string key="NSWindowTitle">X11 アプリケーションメニュー</string>
<string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1310,12 +1277,16 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSButtonCell" key="NSCell" id="143554520">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">137887744</int>
- <string type="base64-UTF8" key="NSContents">6KSH6KO9A</string>
+ <string key="NSContents">複製</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1333,12 +1304,12 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSButtonCell" key="NSCell" id="8201128">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">137887744</int>
- <string type="base64-UTF8" key="NSContents">5Y+W44KK6Zmk44GPA</string>
+ <string key="NSContents">å–り除ã</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1379,13 +1350,13 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableColumn" id="938444323">
- <double key="NSWidth">1.030000e+02</double>
- <double key="NSMinWidth">4.300000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">103</double>
+ <double key="NSMinWidth">43</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5ZCN5YmNA</string>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">åå‰</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
@@ -1401,7 +1372,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSTextFieldCell" key="NSDataCell" id="825378892">
<int key="NSCellFlags">338820672</int>
<int key="NSCellFlags2">1024</int>
- <string type="base64-UTF8" key="NSContents">44OG44Kt44K544OI44K744OrA</string>
+ <string key="NSContents">テキストセル</string>
<reference key="NSSupport" ref="463863101"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="905092943"/>
@@ -1418,13 +1389,13 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string key="NSHeaderToolTip"/>
</object>
<object class="NSTableColumn" id="84282687">
- <double key="NSWidth">1.000000e+02</double>
- <double key="NSMinWidth">4.000000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">100</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44Kz44Oe44Oz44OJA</string>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">コマンド</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="113872566"/>
<reference key="NSTextColor" ref="249576247"/>
@@ -1432,7 +1403,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSTextFieldCell" key="NSDataCell" id="432610585">
<int key="NSCellFlags">338820672</int>
<int key="NSCellFlags2">1024</int>
- <string type="base64-UTF8" key="NSContents">44OG44Kt44K544OI44K744OrA</string>
+ <string key="NSContents">テキストセル</string>
<reference key="NSSupport" ref="463863101"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="905092943"/>
@@ -1446,13 +1417,13 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string key="NSHeaderToolTip"/>
</object>
<object class="NSTableColumn" id="242608782">
- <double key="NSWidth">8.900000e+01</double>
- <double key="NSMinWidth">3.000000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">89</double>
+ <double key="NSMinWidth">30</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">44K344On44O844OI44Kr44OD44OIA</string>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">ショートカット</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int>
@@ -1465,10 +1436,10 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSTextFieldCell" key="NSDataCell" id="34714764">
<int key="NSCellFlags">338820672</int>
<int key="NSCellFlags2">1024</int>
- <string type="base64-UTF8" key="NSContents">44OG44Kt44K544OI44K744OrA</string>
+ <string key="NSContents">テキストセル</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.200000e+01</double>
+ <double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSPlaceholderString"/>
@@ -1478,7 +1449,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="639812278"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1489,8 +1460,8 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string key="NSHeaderToolTip"/>
</object>
</object>
- <double key="NSIntercellSpacingWidth">3.000000e+00</double>
- <double key="NSIntercellSpacingHeight">2.000000e+00</double>
+ <double key="NSIntercellSpacingWidth">3</double>
+ <double key="NSIntercellSpacingHeight">2</double>
<reference key="NSBackgroundColor" ref="822946413"/>
<object class="NSColor" key="NSGridColor">
<int key="NSColorSpace">6</int>
@@ -1501,12 +1472,15 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<bytes key="NSWhite">MC41AA</bytes>
</object>
</object>
- <double key="NSRowHeight">1.700000e+01</double>
+ <double key="NSRowHeight">17</double>
<int key="NSTvFlags">1379958784</int>
+ <reference key="NSDelegate"/>
+ <reference key="NSDataSource"/>
<int key="NSColumnAutoresizingStyle">1</int>
<int key="NSDraggingSourceMaskForLocal">-1</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool>
+ <int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
<string key="NSFrame">{{1, 17}, {301, 198}}</string>
@@ -1523,7 +1497,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">9.949238e-01</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1533,7 +1507,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">9.435737e-01</double>
+ <double key="NSPercent">0.94357366771159878</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1571,12 +1545,12 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSButtonCell" key="NSCell" id="1025474039">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">137887744</int>
- <string type="base64-UTF8" key="NSContents">6aCF55uu44KS6L+95YqgA</string>
+ <string key="NSContents">項目を追加</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1590,11 +1564,11 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
- <string type="base64-UTF8" key="NSTitle">44Oh44OL44Ol44O8A</string>
+ <string key="NSTitle">メニュー</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="318286212">
@@ -1610,7 +1584,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
</object>
<object class="NSMenuItem" id="511651072">
<reference key="NSMenu" ref="294137138"/>
- <string type="base64-UTF8" key="NSTitle">44Ki44OX44Oq44Kx44O844K344On44OzA</string>
+ <string key="NSTitle">アプリケーション</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -1618,7 +1592,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="48278059">
- <string type="base64-UTF8" key="NSTitle">44Ki44OX44Oq44Kx44O844K344On44OzA</string>
+ <string key="NSTitle">アプリケーション</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="563798000">
@@ -1634,7 +1608,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
</object>
<object class="NSMenuItem" id="1032342329">
<reference key="NSMenu" ref="48278059"/>
- <string type="base64-UTF8" key="NSTitle">44Kr44K544K/44Oe44Kk44K6Li4uA</string>
+ <string key="NSTitle">カスタマイズ...</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -2209,28 +2183,26 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
- <object class="NSArray" key="object" id="330408435">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="object" ref="0"/>
<reference key="children" ref="904585544"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="815810918"/>
- <reference key="parent" ref="330408435"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="941939442"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="951368722"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
@@ -2244,7 +2216,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<reference ref="868031522"/>
<reference ref="551174276"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">MainMenu</string>
</object>
<object class="IBObjectRecord">
@@ -2489,7 +2461,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="IBObjectRecord">
<int key="objectID">196</int>
<reference key="object" ref="485884620"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">X11Controller</string>
</object>
<object class="IBObjectRecord">
@@ -2499,7 +2471,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="941366957"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">PrefsPanel</string>
</object>
<object class="IBObjectRecord">
@@ -2621,8 +2593,8 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<reference ref="477203622"/>
<reference ref="57246850"/>
<reference ref="298603383"/>
- <reference ref="1039016593"/>
<reference ref="418227126"/>
+ <reference ref="1039016593"/>
</object>
<reference key="parent" ref="960678392"/>
</object>
@@ -2763,7 +2735,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="85544634"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">EditPrograms</string>
</object>
<object class="IBObjectRecord">
@@ -2786,7 +2758,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<reference ref="318286212"/>
<reference ref="511651072"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">DockMenu</string>
</object>
<object class="IBObjectRecord">
@@ -3338,10 +3310,8 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
+ <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>-3.ImportedFromIB2</string>
<string>100292.IBPluginDependency</string>
@@ -3366,7 +3336,6 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>100385.IBPluginDependency</string>
<string>100386.IBPluginDependency</string>
<string>100541.IBPluginDependency</string>
- <string>100541.IBPropertyAccessControl</string>
<string>100543.IBPluginDependency</string>
<string>129.IBPluginDependency</string>
<string>129.ImportedFromIB2</string>
@@ -3383,7 +3352,6 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>144.IBPluginDependency</string>
<string>144.ImportedFromIB2</string>
<string>145.IBPluginDependency</string>
- <string>145.IBPropertyAccessControl</string>
<string>145.ImportedFromIB2</string>
<string>149.IBPluginDependency</string>
<string>149.ImportedFromIB2</string>
@@ -3399,7 +3367,6 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>169.editorWindowContentRectSynchronizationRect</string>
<string>19.IBPluginDependency</string>
<string>19.ImportedFromIB2</string>
- <string>196.IBPluginDependency</string>
<string>196.ImportedFromIB2</string>
<string>200295.IBPluginDependency</string>
<string>200295.IBShouldRemoveOnLegacySave</string>
@@ -3414,7 +3381,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>24.ImportedFromIB2</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
- <string>244.IBPropertyAccessControl</string>
+ <string>244.IBPluginDependency</string>
<string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
@@ -3424,7 +3391,6 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>244.windowTemplate.maxSize</string>
<string>244.windowTemplate.minSize</string>
<string>245.IBPluginDependency</string>
- <string>245.IBPropertyAccessControl</string>
<string>245.ImportedFromIB2</string>
<string>269.IBPluginDependency</string>
<string>269.ImportedFromIB2</string>
@@ -3435,6 +3401,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>272.IBPluginDependency</string>
<string>272.ImportedFromIB2</string>
<string>285.IBEditorWindowLastContentRect</string>
+ <string>285.IBPluginDependency</string>
<string>285.IBViewEditorWindowController.showingBoundsRectangles</string>
<string>285.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>285.IBWindowTemplateEditedContentRect</string>
@@ -3459,10 +3426,8 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>296.IBPluginDependency</string>
<string>296.ImportedFromIB2</string>
<string>297.IBPluginDependency</string>
- <string>297.IBPropertyAccessControl</string>
<string>297.ImportedFromIB2</string>
<string>298.IBPluginDependency</string>
- <string>298.IBPropertyAccessControl</string>
<string>298.ImportedFromIB2</string>
<string>300295.IBPluginDependency</string>
<string>300295.IBShouldRemoveOnLegacySave</string>
@@ -3471,160 +3436,122 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>300337.IBPluginDependency</string>
<string>300337.ImportedFromIB2</string>
<string>300338.IBPluginDependency</string>
- <string>300338.IBPropertyAccessControl</string>
<string>300338.ImportedFromIB2</string>
<string>300358.IBPluginDependency</string>
- <string>300358.IBPropertyAccessControl</string>
<string>300358.ImportedFromIB2</string>
<string>300359.IBPluginDependency</string>
- <string>300359.IBPropertyAccessControl</string>
<string>300359.ImportedFromIB2</string>
<string>300360.IBPluginDependency</string>
<string>300361.IBPluginDependency</string>
<string>300362.IBPluginDependency</string>
- <string>300362.IBPropertyAccessControl</string>
<string>300362.ImportedFromIB2</string>
<string>300363.IBPluginDependency</string>
<string>300364.IBPluginDependency</string>
- <string>300364.IBPropertyAccessControl</string>
<string>300364.ImportedFromIB2</string>
<string>300365.IBPluginDependency</string>
<string>300368.IBPluginDependency</string>
- <string>300368.IBPropertyAccessControl</string>
<string>300368.ImportedFromIB2</string>
<string>300369.IBPluginDependency</string>
<string>300370.IBPluginDependency</string>
- <string>300370.IBPropertyAccessControl</string>
<string>300370.ImportedFromIB2</string>
<string>300371.IBPluginDependency</string>
<string>300421.IBPluginDependency</string>
- <string>300421.IBPropertyAccessControl</string>
<string>300421.ImportedFromIB2</string>
<string>300422.IBPluginDependency</string>
- <string>300422.IBPropertyAccessControl</string>
<string>300422.ImportedFromIB2</string>
<string>300423.IBPluginDependency</string>
- <string>300423.IBPropertyAccessControl</string>
<string>300423.ImportedFromIB2</string>
<string>300424.IBPluginDependency</string>
- <string>300424.IBPropertyAccessControl</string>
<string>300424.ImportedFromIB2</string>
<string>300440.IBPluginDependency</string>
- <string>300440.IBPropertyAccessControl</string>
<string>300441.IBPluginDependency</string>
- <string>300441.IBPropertyAccessControl</string>
<string>300447.IBPluginDependency</string>
- <string>300447.IBPropertyAccessControl</string>
<string>300447.ImportedFromIB2</string>
+ <string>300447.object.labelIdentifier</string>
<string>300450.IBPluginDependency</string>
- <string>300450.IBPropertyAccessControl</string>
+ <string>300450.object.labelIdentifier</string>
<string>300451.IBPluginDependency</string>
- <string>300451.IBPropertyAccessControl</string>
<string>300451.ImportedFromIB2</string>
+ <string>300451.object.labelIdentifier</string>
<string>300452.IBPluginDependency</string>
- <string>300452.IBPropertyAccessControl</string>
+ <string>300452.object.labelIdentifier</string>
<string>300453.IBPluginDependency</string>
- <string>300453.IBPropertyAccessControl</string>
<string>300453.ImportedFromIB2</string>
+ <string>300453.object.labelIdentifier</string>
<string>300454.IBPluginDependency</string>
- <string>300454.IBPropertyAccessControl</string>
+ <string>300454.object.labelIdentifier</string>
<string>300455.IBPluginDependency</string>
- <string>300455.IBPropertyAccessControl</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
- <string>300456.IBPropertyAccessControl</string>
<string>300457.IBPluginDependency</string>
- <string>300457.IBPropertyAccessControl</string>
<string>300457.ImportedFromIB2</string>
+ <string>300457.object.labelIdentifier</string>
<string>300458.IBPluginDependency</string>
- <string>300458.IBPropertyAccessControl</string>
+ <string>300458.object.labelIdentifier</string>
<string>300459.IBPluginDependency</string>
- <string>300459.IBPropertyAccessControl</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
- <string>300460.IBPropertyAccessControl</string>
<string>300472.IBPluginDependency</string>
- <string>300472.IBPropertyAccessControl</string>
<string>300472.ImportedFromIB2</string>
<string>300473.IBPluginDependency</string>
- <string>300473.IBPropertyAccessControl</string>
<string>305.IBPluginDependency</string>
<string>305.ImportedFromIB2</string>
<string>310.IBPluginDependency</string>
<string>310.ImportedFromIB2</string>
<string>348.IBPluginDependency</string>
- <string>348.IBPropertyAccessControl</string>
<string>348.ImportedFromIB2</string>
<string>349.IBPluginDependency</string>
<string>349.ImportedFromIB2</string>
<string>350.IBPluginDependency</string>
- <string>350.IBPropertyAccessControl</string>
<string>350.ImportedFromIB2</string>
<string>351.IBPluginDependency</string>
- <string>351.IBPropertyAccessControl</string>
<string>351.ImportedFromIB2</string>
<string>352.IBPluginDependency</string>
<string>352.ImportedFromIB2</string>
<string>353.IBPluginDependency</string>
<string>353.ImportedFromIB2</string>
<string>354.IBPluginDependency</string>
- <string>354.IBPropertyAccessControl</string>
<string>354.ImportedFromIB2</string>
<string>363.IBPluginDependency</string>
- <string>363.IBPropertyAccessControl</string>
<string>363.ImportedFromIB2</string>
<string>364.IBPluginDependency</string>
- <string>364.IBPropertyAccessControl</string>
<string>364.ImportedFromIB2</string>
<string>365.IBPluginDependency</string>
- <string>365.IBPropertyAccessControl</string>
<string>365.ImportedFromIB2</string>
<string>368.IBPluginDependency</string>
- <string>368.IBPropertyAccessControl</string>
<string>368.ImportedFromIB2</string>
<string>369.IBPluginDependency</string>
- <string>369.IBPropertyAccessControl</string>
<string>369.ImportedFromIB2</string>
<string>370.IBPluginDependency</string>
- <string>370.IBPropertyAccessControl</string>
<string>370.ImportedFromIB2</string>
<string>371.IBPluginDependency</string>
- <string>371.IBPropertyAccessControl</string>
<string>371.ImportedFromIB2</string>
<string>372.IBPluginDependency</string>
- <string>372.IBPropertyAccessControl</string>
<string>372.ImportedFromIB2</string>
<string>374.IBPluginDependency</string>
- <string>374.IBPropertyAccessControl</string>
<string>374.ImportedFromIB2</string>
<string>375.IBPluginDependency</string>
- <string>375.IBPropertyAccessControl</string>
<string>375.ImportedFromIB2</string>
<string>376.IBPluginDependency</string>
- <string>376.IBPropertyAccessControl</string>
<string>376.ImportedFromIB2</string>
<string>377.IBPluginDependency</string>
- <string>377.IBPropertyAccessControl</string>
<string>377.ImportedFromIB2</string>
<string>379.IBPluginDependency</string>
- <string>379.IBPropertyAccessControl</string>
<string>379.ImportedFromIB2</string>
+ <string>380.IBEditorWindowLastContentRect</string>
<string>380.IBPluginDependency</string>
<string>380.ImportedFromIB2</string>
<string>381.IBPluginDependency</string>
<string>381.ImportedFromIB2</string>
<string>382.IBPluginDependency</string>
- <string>382.IBPropertyAccessControl</string>
<string>382.ImportedFromIB2</string>
<string>383.IBPluginDependency</string>
<string>383.ImportedFromIB2</string>
<string>384.IBPluginDependency</string>
<string>384.ImportedFromIB2</string>
<string>385.IBPluginDependency</string>
- <string>385.IBPropertyAccessControl</string>
<string>385.ImportedFromIB2</string>
<string>386.IBPluginDependency</string>
- <string>386.IBPropertyAccessControl</string>
<string>386.ImportedFromIB2</string>
<string>419.IBPluginDependency</string>
<string>419.ImportedFromIB2</string>
@@ -3657,10 +3584,8 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>538.IBPluginDependency</string>
<string>538.ImportedFromIB2</string>
<string>541.IBPluginDependency</string>
- <string>541.IBPropertyAccessControl</string>
<string>541.ImportedFromIB2</string>
<string>543.IBPluginDependency</string>
- <string>543.IBPropertyAccessControl</string>
<string>543.ImportedFromIB2</string>
<string>544.IBPluginDependency</string>
<string>544.ImportedFromIB2</string>
@@ -3686,13 +3611,12 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1" id="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3711,329 +3635,281 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3" id="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{168, 821}, {113, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{202, 626}, {154, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {584, 308}}</string>
- <reference ref="11"/>
- <boolean value="NO"/>
- <string>{{437, 548}, {584, 308}}</string>
- <reference ref="9"/>
+ <string>{{437, 698}, {584, 308}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>{{437, 698}, {584, 308}}</string>
+ <integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
- <integer value="0" id="8"/>
- <reference ref="9"/>
+ <integer value="0"/>
+ <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{58, 803}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{68, 585}, {454, 271}}</string>
- <reference ref="9"/>
- <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <integer value="1"/>
<string>{{68, 585}, {454, 271}}</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
- <reference ref="8"/>
- <reference ref="9"/>
+ <integer value="0"/>
+ <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>{{524, 865}, {178, 83}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -4041,9 +3917,7 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -4081,7 +3955,16 @@ gajjgY3jgavmnInlirnjgavjgarjgorjgb7jgZnjgII</string>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">1</int>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>
diff --git a/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nib
index 4f781e403..7c96bfaec 100644
--- a/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist b/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist
index 068c07777..03167cdac 100644
--- a/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>es</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib
index 57b062991..7be5fbaa4 100644
--- a/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib
@@ -12,6 +12,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="348"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -397,10 +398,10 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -438,7 +439,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="93401634">
+ <object class="NSCustomResource" key="NSNormalImage" id="133743284">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -472,16 +473,16 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="193651701">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlTextColor</string>
- <object class="NSColor" key="NSColor">
+ <object class="NSColor" key="NSColor" id="214098874">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
@@ -520,7 +521,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -559,7 +560,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -598,7 +599,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -761,7 +762,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -772,7 +773,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<object class="NSButton" id="57246850">
<reference key="NSNextResponder" ref="515308735"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{37, 83}, {525, 23}}</string>
+ <string key="NSFrame">{{37, 88}, {527, 18}}</string>
<reference key="NSSuperview" ref="515308735"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="917248662">
@@ -783,7 +784,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -838,7 +839,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -871,12 +872,12 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Actualizar el CLIPBOARD cuando cambie el portapapeles.</string>
+ <string key="NSContents">Actualizar el CLIPBOARD cuando cambie el portapapeles</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -893,12 +894,12 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Actualizar el PRIMARY (clic con el botón central) cuando cambie el portapapeles.</string>
+ <string key="NSContents">Actualizar el PRIMARY (clic con el botón central) cuando cambie el portapapeles</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -915,12 +916,12 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Actualizar el portapapeles de inmediato cuando se seleccione texto nuevo.</string>
+ <string key="NSContents">Actualizar el portapapeles de inmediato cuando se seleccione texto nuevo</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -937,12 +938,12 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Actualizar el portapapeles cuando cambie el CLIPBOARD.</string>
+ <string key="NSContents">Actualizar el portapapeles cuando cambie el CLIPBOARD</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1012,7 +1013,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1050,7 +1051,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1088,7 +1089,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1139,7 +1140,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1161,7 +1162,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="93401634"/>
+ <reference key="NSNormalImage" ref="133743284"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1240,10 +1241,11 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
</object>
</object>
<string key="NSFrameSize">{619, 308}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1256,7 +1258,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1277,7 +1279,11 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1300,7 +1306,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1351,16 +1357,13 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
- <object class="NSColor" key="NSTextColor" id="336770154">
+ <object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
- <string key="NSColorName">disabledControlTextColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzMzNDMzAA</bytes>
- </object>
+ <string key="NSColorName">headerTextColor</string>
+ <reference key="NSColor" ref="214098874"/>
</object>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="825378892">
@@ -1392,7 +1395,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<string key="NSContents">Comando</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="113872566"/>
- <reference key="NSTextColor" ref="336770154"/>
+ <reference key="NSTextColor" ref="249576247"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="432610585">
<int key="NSCellFlags">338820672</int>
@@ -1425,7 +1428,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<string key="NSColorName">headerColor</string>
<reference key="NSColor" ref="822946413"/>
</object>
- <reference key="NSTextColor" ref="336770154"/>
+ <reference key="NSTextColor" ref="249576247"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="34714764">
<int key="NSCellFlags">338820672</int>
@@ -1443,7 +1446,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="193651701"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1491,7 +1494,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1501,7 +1504,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99668872356414795</double>
+ <double key="NSPercent">0.96474358974358976</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1544,7 +1547,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1558,7 +1561,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -3059,9 +3062,9 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<reference ref="657659108"/>
<reference ref="290578835"/>
<reference ref="992839333"/>
+ <reference ref="138261120"/>
<reference ref="128352289"/>
<reference ref="57161931"/>
- <reference ref="138261120"/>
</object>
<reference key="parent" ref="10973343"/>
</object>
@@ -3452,7 +3455,6 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<string>300421.IBPluginDependency</string>
<string>300421.ImportedFromIB2</string>
<string>300422.IBPluginDependency</string>
- <string>300422.IBUserGuides</string>
<string>300422.ImportedFromIB2</string>
<string>300423.IBPluginDependency</string>
<string>300423.ImportedFromIB2</string>
@@ -3462,19 +3464,27 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<string>300441.IBPluginDependency</string>
<string>300447.IBPluginDependency</string>
<string>300447.ImportedFromIB2</string>
+ <string>300447.object.labelIdentifier</string>
<string>300450.IBPluginDependency</string>
+ <string>300450.object.labelIdentifier</string>
<string>300451.IBPluginDependency</string>
<string>300451.ImportedFromIB2</string>
+ <string>300451.object.labelIdentifier</string>
<string>300452.IBPluginDependency</string>
+ <string>300452.object.labelIdentifier</string>
<string>300453.IBPluginDependency</string>
<string>300453.ImportedFromIB2</string>
+ <string>300453.object.labelIdentifier</string>
<string>300454.IBPluginDependency</string>
+ <string>300454.object.labelIdentifier</string>
<string>300455.IBPluginDependency</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
<string>300457.IBPluginDependency</string>
<string>300457.ImportedFromIB2</string>
+ <string>300457.object.labelIdentifier</string>
<string>300458.IBPluginDependency</string>
+ <string>300458.object.labelIdentifier</string>
<string>300459.IBPluginDependency</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
@@ -3660,14 +3670,14 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{373, 858}, {257, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{300, 409}, {619, 308}}</string>
+ <string>{{437, 698}, {619, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
- <string>{{300, 409}, {619, 308}}</string>
+ <string>{{437, 698}, {619, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3684,11 +3694,11 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{68, 453}, {454, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<integer value="1"/>
- <string>{{68, 453}, {454, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
<integer value="0"/>
@@ -3697,7 +3707,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{145, 1012}, {375, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
@@ -3742,9 +3752,6 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <object class="NSMutableArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3754,19 +3761,27 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3871,7 +3886,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{157, 809}, {339, 203}}</string>
+ <string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
diff --git a/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib
index 1277632d8..7e584058b 100644
--- a/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/da.lproj/locversion.plist b/hw/xquartz/bundle/Resources/da.lproj/locversion.plist
index ee9467302..830e3a7e5 100644
--- a/hw/xquartz/bundle/Resources/da.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/da.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>da</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib
index d20b1821d..4b87938d1 100644
--- a/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib
@@ -3,16 +3,15 @@
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">10A354</string>
- <string key="IBDocument.InterfaceBuilderVersion">728</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
<string key="IBDocument.AppKitVersion">1019</string>
<string key="IBDocument.HIToolboxVersion">421.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">728</string>
+ <string key="NS.object.0">729</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="29"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -398,7 +397,7 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
<nil key="NSNextResponder"/>
@@ -439,7 +438,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="611372782">
+ <object class="NSCustomResource" key="NSNormalImage" id="926625722">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -473,9 +472,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="351482758">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -522,7 +521,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -561,7 +560,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -600,7 +599,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -763,7 +762,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -785,7 +784,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -840,7 +839,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -873,12 +872,12 @@ ZW4uCg</string>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Opdater UDKLIPSHOLDER, når opslagstavlen ændres.</string>
+ <string key="NSContents">Opdater CLIPBOARD, når opslagstavlen ændres</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -895,12 +894,12 @@ ZW4uCg</string>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Opdater PRIMÆRE (klik i midten), når opslagstavlen ændres.</string>
+ <string key="NSContents">Opdater PRIMARY (klik i midten), når opslagstavlen ændres</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -911,18 +910,18 @@ ZW4uCg</string>
<object class="NSButton" id="1002778833">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{29, 46}, {400, 23}}</string>
+ <string key="NSFrame">{{29, 51}, {404, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Opdater opslagstavle med det samme, når ny tekst vælges.</string>
+ <string key="NSContents">Opdater opslagstavlen med det samme, når ny tekst er valgt</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -939,12 +938,12 @@ ZW4uCg</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Opdater opslagstavle, når UDKLIPSHOLDEREN ændres.</string>
+ <string key="NSContents">Opdater opslagstavlen, når CLIPBOARD ændres</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1014,7 +1013,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1052,7 +1051,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1090,7 +1089,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1141,7 +1140,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1163,7 +1162,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="611372782"/>
+ <reference key="NSNormalImage" ref="926625722"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1245,7 +1244,7 @@ ZW4uCg</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1258,7 +1257,7 @@ ZW4uCg</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1279,7 +1278,11 @@ ZW4uCg</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1302,7 +1305,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1353,7 +1356,7 @@ ZW4uCg</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
@@ -1440,7 +1443,7 @@ ZW4uCg</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="351482758"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1487,7 +1490,7 @@ ZW4uCg</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1497,7 +1500,7 @@ ZW4uCg</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1540,7 +1543,7 @@ ZW4uCg</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1554,7 +1557,7 @@ ZW4uCg</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -3372,7 +3375,6 @@ ZW4uCg</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
<string>244.IBPluginDependency</string>
- <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3655,14 +3657,13 @@ ZW4uCg</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{375, 858}, {261, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="NO"/>
- <string>{{437, 548}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3692,7 +3693,7 @@ ZW4uCg</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{145, 1011}, {366, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
diff --git a/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib
index 73c762cb6..df8c01bf4 100644
--- a/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist b/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist
index ec5c798d9..b0894cfb0 100644
--- a/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>fi</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib
index 05c2b0fac..808633e02 100644
--- a/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib
@@ -12,6 +12,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="348"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -390,24 +391,24 @@
<object class="NSWindowTemplate" id="124913468">
<int key="NSWindowStyleMask">3</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{266, 349}, {525, 323}}</string>
+ <string key="NSWindowRect">{{266, 349}, {625, 323}}</string>
<int key="NSWTFlags">1350041600</int>
<string key="NSWindowTitle">X11-asetukset</string>
<string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTabView" id="448510093">
<reference key="NSNextResponder" ref="941366957"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{13, 10}, {494, 307}}</string>
+ <string key="NSFrame">{{13, 10}, {604, 307}}</string>
<reference key="NSSuperview" ref="941366957"/>
<object class="NSMutableArray" key="NSTabViewItems">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -438,7 +439,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="815480196">
+ <object class="NSCustomResource" key="NSNormalImage" id="752669876">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -454,7 +455,7 @@
<object class="NSTextField" id="443008216">
<reference key="NSNextResponder" ref="596750588"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 78}, {357, 28}}</string>
+ <string key="NSFrame">{{36, 78}, {488, 28}}</string>
<reference key="NSSuperview" ref="596750588"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="391919450">
@@ -472,9 +473,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="402953799">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -491,7 +492,7 @@
<object class="NSTextField" id="282885445">
<reference key="NSNextResponder" ref="596750588"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 177}, {385, 42}}</string>
+ <string key="NSFrame">{{36, 177}, {488, 42}}</string>
<reference key="NSSuperview" ref="596750588"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="649334366">
@@ -520,7 +521,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -559,7 +560,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -568,7 +569,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
</object>
</object>
</object>
- <string key="NSFrame">{{10, 33}, {474, 261}}</string>
+ <string key="NSFrame">{{10, 33}, {584, 261}}</string>
<reference key="NSSuperview" ref="448510093"/>
</object>
<string key="NSLabel">Syöte</string>
@@ -598,7 +599,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -609,7 +610,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSTextField" id="1039016593">
<reference key="NSNextResponder" ref="515308735"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 44}, {352, 28}}</string>
+ <string key="NSFrame">{{36, 44}, {488, 28}}</string>
<reference key="NSSuperview" ref="515308735"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="624655599">
@@ -761,7 +762,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -783,7 +784,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -794,7 +795,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSTextField" id="298603383">
<reference key="NSNextResponder" ref="515308735"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 130}, {379, 28}}</string>
+ <string key="NSFrame">{{36, 130}, {488, 28}}</string>
<reference key="NSSuperview" ref="515308735"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="761107402">
@@ -809,7 +810,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
</object>
</object>
</object>
- <string key="NSFrame">{{10, 33}, {474, 261}}</string>
+ <string key="NSFrame">{{10, 33}, {584, 261}}</string>
</object>
<string key="NSLabel">Tuloste</string>
<reference key="NSColor" ref="57160303"/>
@@ -827,7 +828,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSButton" id="878106058">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{18, 237}, {409, 23}}</string>
+ <string key="NSFrame">{{11, 237}, {409, 23}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="718083688">
@@ -838,7 +839,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -849,7 +850,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSTextField" id="386152084">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 189}, {377, 42}}</string>
+ <string key="NSFrame">{{30, 189}, {534, 42}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="572508492">
@@ -865,18 +866,18 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSButton" id="477050998">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 102}, {410, 18}}</string>
+ <string key="NSFrame">{{28, 102}, {410, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Päivitä X11:n leikepöytä, kun Mac OS X:n leikepöytä muuttuu.</string>
+ <string key="NSContents">Päivitä X11:n leikepöytä, kun Mac OS X:n leikepöytä muuttuu</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -887,18 +888,18 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSButton" id="765780304">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 60}, {328, 34}}</string>
+ <string key="NSFrame">{{28, 69}, {553, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Päivitä X11:n ensisijainen valinta (keskiosoitus), kun Mac OS X:n leikepöytä muuttuu.</string>
+ <string key="NSContents">Päivitä X11:n ensisijainen valinta (keskiosoitus), kun Mac OS X:n leikepöytä muuttuu</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -909,18 +910,18 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSButton" id="1002778833">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 33}, {409, 23}}</string>
+ <string key="NSFrame">{{28, 33}, {409, 23}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Päivitä Mac OS X:n leikepöytä heti, kun uutta tekstiä valitaan.</string>
+ <string key="NSContents">Päivitä Mac OS X:n leikepöytä heti, kun uutta tekstiä valitaan</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -931,18 +932,18 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSButton" id="487809555">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 165}, {438, 18}}</string>
+ <string key="NSFrame">{{28, 165}, {438, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Päivitä Mac OS X:n leikepöytä heti, kun X11:n leikepöytä muuttuu.</string>
+ <string key="NSContents">Päivitä Mac OS X:n leikepöytä, kun X11:n leikepöytä muuttuu</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -953,7 +954,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSTextField" id="620944856">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{48, 131}, {385, 28}}</string>
+ <string key="NSFrame">{{42, 131}, {522, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="461823902">
@@ -969,7 +970,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSTextField" id="522511724">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{48, 2}, {370, 28}}</string>
+ <string key="NSFrame">{{42, 2}, {522, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="994587858">
@@ -983,7 +984,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
</object>
</object>
</object>
- <string key="NSFrame">{{10, 33}, {474, 261}}</string>
+ <string key="NSFrame">{{10, 33}, {584, 261}}</string>
</object>
<string key="NSLabel">Leikepöytä</string>
<reference key="NSColor" ref="57160303"/>
@@ -1012,7 +1013,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1023,7 +1024,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSTextField" id="290578835">
<reference key="NSNextResponder" ref="184765684"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{23, 190}, {385, 31}}</string>
+ <string key="NSFrame">{{23, 190}, {488, 31}}</string>
<reference key="NSSuperview" ref="184765684"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="399127858">
@@ -1050,7 +1051,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1088,7 +1089,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1099,7 +1100,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSTextField" id="57161931">
<reference key="NSNextResponder" ref="184765684"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{23, 85}, {384, 28}}</string>
+ <string key="NSFrame">{{23, 85}, {488, 28}}</string>
<reference key="NSSuperview" ref="184765684"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="989804990">
@@ -1113,7 +1114,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
</object>
</object>
</object>
- <string key="NSFrame">{{10, 33}, {474, 261}}</string>
+ <string key="NSFrame">{{10, 33}, {584, 261}}</string>
</object>
<string key="NSLabel">Ikkunat</string>
<reference key="NSColor" ref="57160303"/>
@@ -1139,7 +1140,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1161,7 +1162,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="815480196"/>
+ <reference key="NSNormalImage" ref="752669876"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1172,7 +1173,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSTextField" id="168436707">
<reference key="NSNextResponder" ref="300811574"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 177}, {361, 42}}</string>
+ <string key="NSFrame">{{36, 177}, {488, 42}}</string>
<reference key="NSSuperview" ref="300811574"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="53243865">
@@ -1189,7 +1190,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSTextField" id="363817195">
<reference key="NSNextResponder" ref="300811574"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 100}, {368, 42}}</string>
+ <string key="NSFrame">{{36, 100}, {488, 42}}</string>
<reference key="NSSuperview" ref="300811574"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="390084685">
@@ -1221,7 +1222,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
</object>
</object>
</object>
- <string key="NSFrame">{{10, 33}, {474, 261}}</string>
+ <string key="NSFrame">{{10, 33}, {584, 261}}</string>
</object>
<string key="NSLabel">Suojaus</string>
<reference key="NSColor" ref="57160303"/>
@@ -1239,11 +1240,12 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
</object>
</object>
</object>
- <string key="NSFrameSize">{525, 323}</string>
+ <string key="NSFrameSize">{625, 323}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1256,7 +1258,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1277,7 +1279,11 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1300,7 +1306,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1351,7 +1357,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
@@ -1438,7 +1444,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="402953799"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1485,7 +1491,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1495,7 +1501,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1538,7 +1544,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1552,7 +1558,7 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -3158,13 +3164,13 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="878106058"/>
- <reference ref="386152084"/>
<reference ref="487809555"/>
<reference ref="620944856"/>
<reference ref="477050998"/>
<reference ref="765780304"/>
<reference ref="1002778833"/>
<reference ref="522511724"/>
+ <reference ref="386152084"/>
</object>
<reference key="parent" ref="723450037"/>
</object>
@@ -3305,14 +3311,11 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>100292.IBPluginDependency</string>
<string>100293.IBPluginDependency</string>
<string>100295.IBPluginDependency</string>
- <string>100295.IBPropertyAccessControl</string>
<string>100295.IBShouldRemoveOnLegacySave</string>
<string>100310.IBPluginDependency</string>
- <string>100310.IBPropertyAccessControl</string>
<string>100363.IBPluginDependency</string>
<string>100364.IBPluginDependency</string>
<string>100365.IBPluginDependency</string>
- <string>100365.IBPropertyAccessControl</string>
<string>100368.IBPluginDependency</string>
<string>100369.IBPluginDependency</string>
<string>100370.IBPluginDependency</string>
@@ -3327,7 +3330,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>100385.IBPluginDependency</string>
<string>100386.IBPluginDependency</string>
<string>100541.IBPluginDependency</string>
- <string>100541.IBPropertyAccessControl</string>
<string>100543.IBPluginDependency</string>
<string>129.IBPluginDependency</string>
<string>129.ImportedFromIB2</string>
@@ -3344,7 +3346,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>144.IBPluginDependency</string>
<string>144.ImportedFromIB2</string>
<string>145.IBPluginDependency</string>
- <string>145.IBPropertyAccessControl</string>
<string>145.ImportedFromIB2</string>
<string>149.IBPluginDependency</string>
<string>149.ImportedFromIB2</string>
@@ -3362,16 +3363,12 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>19.ImportedFromIB2</string>
<string>196.ImportedFromIB2</string>
<string>200295.IBPluginDependency</string>
- <string>200295.IBPropertyAccessControl</string>
<string>200295.IBShouldRemoveOnLegacySave</string>
<string>203.IBPluginDependency</string>
- <string>203.IBPropertyAccessControl</string>
<string>203.ImportedFromIB2</string>
<string>204.IBPluginDependency</string>
- <string>204.IBPropertyAccessControl</string>
<string>204.ImportedFromIB2</string>
<string>23.IBPluginDependency</string>
- <string>23.IBPropertyAccessControl</string>
<string>23.ImportedFromIB2</string>
<string>24.IBEditorWindowLastContentRect</string>
<string>24.IBPluginDependency</string>
@@ -3379,8 +3376,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
<string>244.IBPluginDependency</string>
- <string>244.IBPropertyAccessControl</string>
- <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3389,7 +3384,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>244.windowTemplate.maxSize</string>
<string>244.windowTemplate.minSize</string>
<string>245.IBPluginDependency</string>
- <string>245.IBPropertyAccessControl</string>
<string>245.ImportedFromIB2</string>
<string>269.IBPluginDependency</string>
<string>269.ImportedFromIB2</string>
@@ -3401,7 +3395,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>272.ImportedFromIB2</string>
<string>285.IBEditorWindowLastContentRect</string>
<string>285.IBPluginDependency</string>
- <string>285.IBPropertyAccessControl</string>
<string>285.IBViewEditorWindowController.showingBoundsRectangles</string>
<string>285.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>285.IBWindowTemplateEditedContentRect</string>
@@ -3412,201 +3405,145 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>285.windowTemplate.maxSize</string>
<string>285.windowTemplate.minSize</string>
<string>286.IBPluginDependency</string>
- <string>286.IBPropertyAccessControl</string>
<string>286.ImportedFromIB2</string>
<string>29.IBEditorWindowLastContentRect</string>
<string>29.IBPluginDependency</string>
<string>29.ImportedFromIB2</string>
<string>29.editorWindowContentRectSynchronizationRect</string>
<string>292.IBPluginDependency</string>
- <string>292.IBPropertyAccessControl</string>
<string>292.ImportedFromIB2</string>
<string>293.IBPluginDependency</string>
- <string>293.IBPropertyAccessControl</string>
<string>293.ImportedFromIB2</string>
<string>295.IBPluginDependency</string>
- <string>295.IBPropertyAccessControl</string>
<string>295.ImportedFromIB2</string>
<string>296.IBPluginDependency</string>
- <string>296.IBPropertyAccessControl</string>
<string>296.ImportedFromIB2</string>
<string>297.IBPluginDependency</string>
- <string>297.IBPropertyAccessControl</string>
<string>297.ImportedFromIB2</string>
<string>298.IBPluginDependency</string>
- <string>298.IBPropertyAccessControl</string>
<string>298.ImportedFromIB2</string>
<string>300295.IBPluginDependency</string>
- <string>300295.IBPropertyAccessControl</string>
<string>300295.IBShouldRemoveOnLegacySave</string>
<string>300330.IBPluginDependency</string>
- <string>300330.IBPropertyAccessControl</string>
<string>300330.ImportedFromIB2</string>
<string>300337.IBPluginDependency</string>
- <string>300337.IBPropertyAccessControl</string>
<string>300337.ImportedFromIB2</string>
<string>300338.IBPluginDependency</string>
- <string>300338.IBPropertyAccessControl</string>
<string>300338.ImportedFromIB2</string>
<string>300358.IBPluginDependency</string>
- <string>300358.IBPropertyAccessControl</string>
<string>300358.ImportedFromIB2</string>
<string>300359.IBPluginDependency</string>
- <string>300359.IBPropertyAccessControl</string>
<string>300359.ImportedFromIB2</string>
<string>300360.IBPluginDependency</string>
- <string>300360.IBPropertyAccessControl</string>
<string>300361.IBPluginDependency</string>
- <string>300361.IBPropertyAccessControl</string>
<string>300362.IBPluginDependency</string>
- <string>300362.IBPropertyAccessControl</string>
<string>300362.ImportedFromIB2</string>
<string>300363.IBPluginDependency</string>
- <string>300363.IBPropertyAccessControl</string>
<string>300364.IBPluginDependency</string>
- <string>300364.IBPropertyAccessControl</string>
<string>300364.ImportedFromIB2</string>
<string>300365.IBPluginDependency</string>
- <string>300365.IBPropertyAccessControl</string>
<string>300368.IBPluginDependency</string>
- <string>300368.IBPropertyAccessControl</string>
<string>300368.ImportedFromIB2</string>
<string>300369.IBPluginDependency</string>
- <string>300369.IBPropertyAccessControl</string>
<string>300370.IBPluginDependency</string>
- <string>300370.IBPropertyAccessControl</string>
<string>300370.ImportedFromIB2</string>
<string>300371.IBPluginDependency</string>
- <string>300371.IBPropertyAccessControl</string>
<string>300421.IBPluginDependency</string>
- <string>300421.IBPropertyAccessControl</string>
<string>300421.ImportedFromIB2</string>
<string>300422.IBPluginDependency</string>
- <string>300422.IBPropertyAccessControl</string>
<string>300422.ImportedFromIB2</string>
<string>300423.IBPluginDependency</string>
- <string>300423.IBPropertyAccessControl</string>
<string>300423.ImportedFromIB2</string>
<string>300424.IBPluginDependency</string>
- <string>300424.IBPropertyAccessControl</string>
<string>300424.ImportedFromIB2</string>
<string>300440.IBPluginDependency</string>
- <string>300440.IBPropertyAccessControl</string>
<string>300441.IBPluginDependency</string>
- <string>300441.IBPropertyAccessControl</string>
<string>300447.IBPluginDependency</string>
- <string>300447.IBPropertyAccessControl</string>
<string>300447.ImportedFromIB2</string>
+ <string>300447.object.labelIdentifier</string>
<string>300450.IBPluginDependency</string>
- <string>300450.IBPropertyAccessControl</string>
+ <string>300450.object.labelIdentifier</string>
<string>300451.IBPluginDependency</string>
- <string>300451.IBPropertyAccessControl</string>
<string>300451.ImportedFromIB2</string>
+ <string>300451.object.labelIdentifier</string>
<string>300452.IBPluginDependency</string>
- <string>300452.IBPropertyAccessControl</string>
+ <string>300452.object.labelIdentifier</string>
<string>300453.IBPluginDependency</string>
- <string>300453.IBPropertyAccessControl</string>
<string>300453.ImportedFromIB2</string>
+ <string>300453.object.labelIdentifier</string>
<string>300454.IBPluginDependency</string>
- <string>300454.IBPropertyAccessControl</string>
+ <string>300454.object.labelIdentifier</string>
<string>300455.IBPluginDependency</string>
- <string>300455.IBPropertyAccessControl</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
- <string>300456.IBPropertyAccessControl</string>
<string>300457.IBPluginDependency</string>
- <string>300457.IBPropertyAccessControl</string>
<string>300457.ImportedFromIB2</string>
+ <string>300457.object.labelIdentifier</string>
<string>300458.IBPluginDependency</string>
- <string>300458.IBPropertyAccessControl</string>
+ <string>300458.object.labelIdentifier</string>
<string>300459.IBPluginDependency</string>
- <string>300459.IBPropertyAccessControl</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
- <string>300460.IBPropertyAccessControl</string>
<string>300472.IBPluginDependency</string>
- <string>300472.IBPropertyAccessControl</string>
<string>300472.ImportedFromIB2</string>
<string>300473.IBPluginDependency</string>
- <string>300473.IBPropertyAccessControl</string>
<string>305.IBPluginDependency</string>
<string>305.ImportedFromIB2</string>
<string>310.IBPluginDependency</string>
- <string>310.IBPropertyAccessControl</string>
<string>310.ImportedFromIB2</string>
<string>348.IBPluginDependency</string>
- <string>348.IBPropertyAccessControl</string>
<string>348.ImportedFromIB2</string>
<string>349.IBPluginDependency</string>
<string>349.ImportedFromIB2</string>
<string>350.IBPluginDependency</string>
- <string>350.IBPropertyAccessControl</string>
<string>350.ImportedFromIB2</string>
<string>351.IBPluginDependency</string>
- <string>351.IBPropertyAccessControl</string>
<string>351.ImportedFromIB2</string>
<string>352.IBPluginDependency</string>
<string>352.ImportedFromIB2</string>
<string>353.IBPluginDependency</string>
<string>353.ImportedFromIB2</string>
<string>354.IBPluginDependency</string>
- <string>354.IBPropertyAccessControl</string>
<string>354.ImportedFromIB2</string>
<string>363.IBPluginDependency</string>
- <string>363.IBPropertyAccessControl</string>
<string>363.ImportedFromIB2</string>
<string>364.IBPluginDependency</string>
- <string>364.IBPropertyAccessControl</string>
<string>364.ImportedFromIB2</string>
<string>365.IBPluginDependency</string>
- <string>365.IBPropertyAccessControl</string>
<string>365.ImportedFromIB2</string>
<string>368.IBPluginDependency</string>
- <string>368.IBPropertyAccessControl</string>
<string>368.ImportedFromIB2</string>
<string>369.IBPluginDependency</string>
- <string>369.IBPropertyAccessControl</string>
<string>369.ImportedFromIB2</string>
<string>370.IBPluginDependency</string>
- <string>370.IBPropertyAccessControl</string>
<string>370.ImportedFromIB2</string>
<string>371.IBPluginDependency</string>
- <string>371.IBPropertyAccessControl</string>
<string>371.ImportedFromIB2</string>
<string>372.IBPluginDependency</string>
- <string>372.IBPropertyAccessControl</string>
<string>372.ImportedFromIB2</string>
<string>374.IBPluginDependency</string>
- <string>374.IBPropertyAccessControl</string>
<string>374.ImportedFromIB2</string>
<string>375.IBPluginDependency</string>
- <string>375.IBPropertyAccessControl</string>
<string>375.ImportedFromIB2</string>
<string>376.IBPluginDependency</string>
- <string>376.IBPropertyAccessControl</string>
<string>376.ImportedFromIB2</string>
<string>377.IBPluginDependency</string>
- <string>377.IBPropertyAccessControl</string>
<string>377.ImportedFromIB2</string>
<string>379.IBPluginDependency</string>
- <string>379.IBPropertyAccessControl</string>
<string>379.ImportedFromIB2</string>
<string>380.IBPluginDependency</string>
<string>380.ImportedFromIB2</string>
<string>381.IBPluginDependency</string>
<string>381.ImportedFromIB2</string>
<string>382.IBPluginDependency</string>
- <string>382.IBPropertyAccessControl</string>
<string>382.ImportedFromIB2</string>
<string>383.IBPluginDependency</string>
<string>383.ImportedFromIB2</string>
<string>384.IBPluginDependency</string>
<string>384.ImportedFromIB2</string>
<string>385.IBPluginDependency</string>
- <string>385.IBPropertyAccessControl</string>
<string>385.ImportedFromIB2</string>
<string>386.IBPluginDependency</string>
- <string>386.IBPropertyAccessControl</string>
<string>386.ImportedFromIB2</string>
<string>419.IBPluginDependency</string>
<string>419.ImportedFromIB2</string>
@@ -3614,7 +3551,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>420.ImportedFromIB2</string>
<string>421.IBPluginDependency</string>
<string>421.ImportedFromIB2</string>
- <string>423.IBEditorWindowLastContentRect</string>
<string>423.IBPluginDependency</string>
<string>423.ImportedFromIB2</string>
<string>435.IBPluginDependency</string>
@@ -3632,21 +3568,16 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>533.IBPluginDependency</string>
<string>533.ImportedFromIB2</string>
<string>535.IBPluginDependency</string>
- <string>535.IBPropertyAccessControl</string>
<string>535.ImportedFromIB2</string>
<string>536.IBPluginDependency</string>
<string>536.ImportedFromIB2</string>
<string>537.IBPluginDependency</string>
- <string>537.IBPropertyAccessControl</string>
<string>537.ImportedFromIB2</string>
<string>538.IBPluginDependency</string>
- <string>538.IBPropertyAccessControl</string>
<string>538.ImportedFromIB2</string>
<string>541.IBPluginDependency</string>
- <string>541.IBPropertyAccessControl</string>
<string>541.ImportedFromIB2</string>
<string>543.IBPluginDependency</string>
- <string>543.IBPropertyAccessControl</string>
<string>543.ImportedFromIB2</string>
<string>544.IBPluginDependency</string>
<string>544.ImportedFromIB2</string>
@@ -3659,13 +3590,10 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>57.ImportedFromIB2</string>
<string>57.editorWindowContentRectSynchronizationRect</string>
<string>573.IBPluginDependency</string>
- <string>573.IBPropertyAccessControl</string>
<string>573.ImportedFromIB2</string>
<string>574.IBPluginDependency</string>
- <string>574.IBPropertyAccessControl</string>
<string>574.ImportedFromIB2</string>
<string>575.IBPluginDependency</string>
- <string>575.IBPropertyAccessControl</string>
<string>575.ImportedFromIB2</string>
<string>58.IBPluginDependency</string>
<string>58.ImportedFromIB2</string>
@@ -3679,14 +3607,11 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3701,7 +3626,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3718,7 +3642,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3736,26 +3659,20 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<integer value="1"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
- <string>{{363, 683}, {389, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{706, 450}, {525, 323}}</string>
+ <string>{{437, 683}, {625, 323}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
- <boolean value="NO"/>
- <string>{{706, 450}, {525, 323}}</string>
+ <string>{{437, 683}, {625, 323}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3763,7 +3680,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3773,12 +3689,11 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{68, 585}, {469, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<integer value="1"/>
- <string>{{68, 585}, {469, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
<integer value="0"/>
@@ -3786,201 +3701,145 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
- <string>{{145, 836}, {357, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3988,7 +3847,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{84, 709}, {131, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -4006,21 +3864,16 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -4033,13 +3886,10 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
<integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -4105,6 +3955,6 @@ dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA</string>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">1</int>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>
diff --git a/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib
index 433c99f92..e444ebf40 100644
--- a/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist b/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist
index 5ce4bb731..a51ab9384 100644
--- a/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>ko</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib
index 32291ca88..1272b74fa 100644
--- a/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.05">
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10A222</string>
- <string key="IBDocument.InterfaceBuilderVersion">708</string>
- <string key="IBDocument.AppKitVersion">994.5</string>
- <string key="IBDocument.HIToolboxVersion">404.00</string>
+ <string key="IBDocument.SystemVersion">10A354</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
+ <string key="IBDocument.AppKitVersion">1019</string>
+ <string key="IBDocument.HIToolboxVersion">421.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">708</string>
+ <string key="NS.object.0">729</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -19,7 +19,7 @@
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
+ <object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
@@ -64,7 +64,7 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="139290918">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">WDEx7JeQIOq0gO2VmOyXrA</string>
+ <string key="NSTitle">X11ì— ê´€í•˜ì—¬</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="531645050"/>
@@ -72,7 +72,7 @@
</object>
<object class="NSMenuItem" id="386173216">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">7ZmY6rK97ISk7KCVLi4uA</string>
+ <string key="NSTitle">환경설정...</string>
<string key="NSKeyEquiv">,</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -92,7 +92,7 @@
</object>
<object class="NSMenuItem" id="32285361">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">7ISc67mE7IqkA</string>
+ <string key="NSTitle">서비스</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -100,7 +100,7 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="821388474">
- <string type="base64-UTF8" key="NSTitle">7ISc67mE7IqkA</string>
+ <string key="NSTitle">서비스</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -120,7 +120,7 @@
</object>
<object class="NSMenuItem" id="6876565">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">7KCE7LK0IO2ZlOuptCDthqDquIA</string>
+ <string key="NSTitle">전체 화면 토글</string>
<string key="NSKeyEquiv">a</string>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -140,7 +140,7 @@
</object>
<object class="NSMenuItem" id="301008465">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">WDExIOqwgOumrOq4sA</string>
+ <string key="NSTitle">X11 가리기</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -150,7 +150,7 @@
</object>
<object class="NSMenuItem" id="206802571">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">6riw7YOAIOqwgOumrOq4sA</string>
+ <string key="NSTitle">기타 가리기</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -159,7 +159,7 @@
</object>
<object class="NSMenuItem" id="1023546148">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">66qo65GQIOuztOq4sA</string>
+ <string key="NSTitle">ëª¨ë‘ ë³´ê¸°</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -180,7 +180,7 @@
</object>
<object class="NSMenuItem" id="274138642">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">WDExIOyiheujjA</string>
+ <string key="NSTitle">X11 종료</string>
<string key="NSKeyEquiv">q</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -193,7 +193,7 @@
</object>
<object class="NSMenuItem" id="868031522">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">7J2R7JqpIO2UhOuhnOq3uOueqA</string>
+ <string key="NSTitle">ì‘ìš© 프로그램</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -201,7 +201,7 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="981161348">
- <string type="base64-UTF8" key="NSTitle">7J2R7JqpIO2UhOuhnOq3uOueqA</string>
+ <string key="NSTitle">ì‘ìš© 프로그램</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="390088328">
@@ -217,7 +217,7 @@
</object>
<object class="NSMenuItem" id="1065386165">
<reference key="NSMenu" ref="981161348"/>
- <string type="base64-UTF8" key="NSTitle">7IKs7Jqp7J6Q7ZmULi4uA</string>
+ <string key="NSTitle">사용ìží™”...</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -229,7 +229,7 @@
</object>
<object class="NSMenuItem" id="200491363">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">7Y647KeRA</string>
+ <string key="NSTitle">편집</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -237,12 +237,12 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="526778998">
- <string type="base64-UTF8" key="NSTitle">7Y647KeRA</string>
+ <string key="NSTitle">편집</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="185296989">
<reference key="NSMenu" ref="526778998"/>
- <string type="base64-UTF8" key="NSTitle">67Kg6ru065GQ6riwA</string>
+ <string key="NSTitle">ë² ê»´ë‘기</string>
<string key="NSKeyEquiv">c</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -254,7 +254,7 @@
</object>
<object class="NSMenuItem" id="931553638">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">7JyI64+E7JqwA</string>
+ <string key="NSTitle">윈ë„ìš°</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -262,12 +262,12 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="96874957">
- <string type="base64-UTF8" key="NSTitle">7JyI64+E7JqwA</string>
+ <string key="NSTitle">윈ë„ìš°</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="984461797">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">64ur6riwA</string>
+ <string key="NSTitle">닫기</string>
<string key="NSKeyEquiv">w</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -276,7 +276,7 @@
</object>
<object class="NSMenuItem" id="677652931">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">7JyI64+E7JqwIOy2leyGjA</string>
+ <string key="NSTitle">윈ë„ìš° 축소</string>
<string key="NSKeyEquiv">m</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -285,7 +285,7 @@
</object>
<object class="NSMenuItem" id="1066447520">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">7ZmV64yAL+y2leyGjA</string>
+ <string key="NSTitle">확대/축소</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -305,7 +305,7 @@
</object>
<object class="NSMenuItem" id="1036389925">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">7JyI64+E7JqwIOyInO2ZmA</string>
+ <string key="NSTitle">윈ë„ìš° 순환</string>
<string key="NSKeyEquiv">`</string>
<int key="NSKeyEquivModMask">1048840</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -314,7 +314,7 @@
</object>
<object class="NSMenuItem" id="369641893">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">7JyI64+E7JqwIOyXreyInO2ZmA</string>
+ <string key="NSTitle">윈ë„ìš° 역순환</string>
<string key="NSKeyEquiv">~</string>
<int key="NSKeyEquivModMask">1179914</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -334,7 +334,7 @@
</object>
<object class="NSMenuItem" id="276216762">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">66qo65GQIOyVnuycvOuhnCDqsIDsoLjsmKTquLA</string>
+ <string key="NSTitle">ëª¨ë‘ ì•žìœ¼ë¡œ 가져오기</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -358,7 +358,7 @@
</object>
<object class="NSMenuItem" id="551174276">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">64+E7JuA66eQA</string>
+ <string key="NSTitle">ë„움ë§</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -366,12 +366,12 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="511848303">
- <string type="base64-UTF8" key="NSTitle">64+E7JuA66eQA</string>
+ <string key="NSTitle">ë„움ë§</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="504984881">
<reference key="NSMenu" ref="511848303"/>
- <string type="base64-UTF8" key="NSTitle">WDExIOuPhOybgOunkA</string>
+ <string key="NSTitle">X11 ë„움ë§</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -392,7 +392,7 @@
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{266, 364}, {484, 308}}</string>
<int key="NSWTFlags">1350041600</int>
- <string type="base64-UTF8" key="NSWindowTitle">WDExIO2ZmOqyveyEpOyglQ</string>
+ <string key="NSWindowTitle">X11 환경설정</string>
<string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
@@ -429,7 +429,7 @@
<object class="NSButtonCell" key="NSCell" id="990762273">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">M+ykkSDtgbTrpq0g66eI7Jqw7IqkIOyXkOuurOugiOydtO2KuA</string>
+ <string key="NSContents">3중 í´ë¦­ 마우스 ì—뮬레ì´íŠ¸</string>
<object class="NSFont" key="NSSupport" id="463863101">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
@@ -438,7 +438,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="127718871">
+ <object class="NSCustomResource" key="NSNormalImage" id="1052652531">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -460,9 +460,7 @@
<object class="NSTextFieldCell" key="NSCell" id="391919450">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">7Zmc7ISx7ZmU65CY66m0LCDrqZTribQg66eJ64yA7JmAIOuPmeuTse2VnCDtgqTqsIAg66mU7YOAIOyh
-sO2VqeydhCDsgqzsmqntlZjripQgWDExIOydkeyaqSDtlITroZzqt7jrnqjsnYQg67Cp7ZW07ZWgIOyI
-mCDsnojsirXri4jri6QuA</string>
+ <string key="NSContents">활성화ë˜ë©´, 메뉴 막대와 ë™ë“±í•œ 키가 메타 ì¡°í•©ì„ ì‚¬ìš©í•˜ëŠ” X11 ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ë°©í•´í•  수 있습니다.</string>
<object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">11</double>
@@ -474,9 +472,9 @@ mCDsnojsirXri4jri6QuA</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="241249183">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2NwA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -518,12 +516,12 @@ pbTqs6Ag7J6I7Jy87Iut7Iuc7JikLgo</string>
<object class="NSButtonCell" key="NSCell" id="940564599">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">WDEx7J2YIOuPmeuTse2VnCDtgqQg7Zmc7ISx7ZmUA</string>
+ <string key="NSContents">X11ì˜ ë™ë“±í•œ 키 활성화</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -540,8 +538,7 @@ pbTqs6Ag7J6I7Jy87Iut7Iuc7JikLgo</string>
<object class="NSTextFieldCell" key="NSCell" id="666057093">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">7J6F66ClIOuplOuJtCDrs4Dqsr3sgqztla3snbQg7ZiE7J6sIFgxMSDtgqTrp7XsnYQg642u7Ja07JOw
-64+E66GdIO2XiOyaqe2VqeuLiOuLpC4</string>
+ <string key="NSContents">ìž…ë ¥ 메뉴 ë³€ê²½ì‚¬í•­ì´ í˜„ìž¬ X11 í‚¤ë§µì„ ë®ì–´ì“°ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="31160162"/>
@@ -558,12 +555,12 @@ pbTqs6Ag7J6I7Jy87Iut7Iuc7JikLgo</string>
<object class="NSButtonCell" key="NSCell" id="967619578">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">7Iuc7Iqk7YWcIO2CpOuztOuTnCDroIjsnbTslYTsm4Mg65Sw66W06riwA</string>
+ <string key="NSContents">시스템 키보드 ë ˆì´ì•„웃 따르기</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -575,7 +572,7 @@ pbTqs6Ag7J6I7Jy87Iut7Iuc7JikLgo</string>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
<reference key="NSSuperview" ref="448510093"/>
</object>
- <string type="base64-UTF8" key="NSLabel">7J6F66ClA</string>
+ <string key="NSLabel">ìž…ë ¥</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -597,12 +594,12 @@ pbTqs6Ag7J6I7Jy87Iut7Iuc7JikLgo</string>
<object class="NSButtonCell" key="NSCell" id="1016069354">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">7Iuc7Iqk7YWcIOqyveqzoCDtmqjqs7wg7IKs7JqpA</string>
+ <string key="NSContents">시스템 경고 효과 사용</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -619,9 +616,7 @@ pbTqs6Ag7J6I7Jy87Iut7Iuc7JikLgo</string>
<object class="NSTextFieldCell" key="NSCell" id="624655599">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOqyveqzoOydjOydgCDsgqzsmrTrk5wg7Zqo6rO8IOyLnOyKpO2FnCDtmZjqsr3shKTsoJUg7Yyo
-64SQ7JeQ7IScIOygleydmOuQnCDtkZzspIAg7Iuc7Iqk7YWcIOqyveqzoOulvCDsgqzsmqntlanri4jr
-i6QuA</string>
+ <string key="NSContents">X11 경고ìŒì€ 사운드 효과 시스템 환경설정 패ë„ì—ì„œ ì •ì˜ëœ 표준 시스템 경고를 사용합니다.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="1039016593"/>
@@ -655,7 +650,7 @@ i6QuA</string>
<int key="NSPeriodicInterval">75</int>
<object class="NSMenuItem" key="NSMenuItem" id="616492372">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">66qo64uI7YSw7JeQ7IScA</string>
+ <string key="NSTitle">모니터ì—ì„œ</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -676,7 +671,7 @@ i6QuA</string>
<reference ref="616492372"/>
<object class="NSMenuItem" id="759499526">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">MjU2IOyDieyDgQ</string>
+ <string key="NSTitle">256 색ìƒ</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -688,7 +683,7 @@ i6QuA</string>
</object>
<object class="NSMenuItem" id="543935434">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">7IiY66eMIOyDieyDgQ</string>
+ <string key="NSTitle">수만 색ìƒ</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -700,7 +695,7 @@ i6QuA</string>
</object>
<object class="NSMenuItem" id="836673018">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">7IiY7LKc66eMIOyDieyDgQ</string>
+ <string key="NSTitle">수천만 색ìƒ</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -745,7 +740,7 @@ i6QuA</string>
<object class="NSTextFieldCell" key="NSCell" id="311969422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">7J20IOyYteyFmOydgCBYMTHsnYQg64uk7IucIOyLpO2Wie2VmOuptCDsoIHsmqnrkKnri4jri6QuA</string>
+ <string key="NSContents">ì´ ì˜µì…˜ì€ X11ì„ ë‹¤ì‹œ 실행하면 ì ìš©ë©ë‹ˆë‹¤.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="86150604"/>
@@ -762,12 +757,12 @@ i6QuA</string>
<object class="NSButtonCell" key="NSCell" id="631531164">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">7KCE7LK0IO2ZlOuptCDrqqjrk5w</string>
+ <string key="NSContents">전체 화면 모드</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -784,12 +779,12 @@ i6QuA</string>
<object class="NSButtonCell" key="NSCell" id="917248662">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">66mU64m0IOunieuMgOulvCDsoITssrQg7ZmU66m0IOuqqOuTnOuhnCDsnpDrj5kg67O06riwA</string>
+ <string key="NSContents">메뉴 막대를 ì „ì²´ 화면 모드로 ìžë™ 보기</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -806,9 +801,7 @@ i6QuA</string>
<object class="NSTextFieldCell" key="NSCell" id="761107402">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOujqO2KuCDsnIjrj4TsmrDrpbwg7Zmc7ISx7ZmU7ZWp64uI64ukLiDsoITssrQg7ZmU66m0IOuq
-qOuTnOuhnCDrkZDqsbDrgpgg7KCE7ZmY7ZWY66Ck66m0IENvbW1hbmQtT3B0aW9uLUEg7YKk66W8IOyC
-rOyaqe2VmOyLreyLnOyYpC4</string>
+ <string key="NSContents">X11 루트 윈ë„우를 활성화합니다. ì „ì²´ 화면 모드로 ë‘거나 전환하려면 Command-Option-A 키를 사용하십시오.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="298603383"/>
@@ -819,7 +812,7 @@ rOyaqe2VmOyLreyLnOyYpC4</string>
</object>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">7Lac66ClA</string>
+ <string key="NSLabel">출력</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -841,12 +834,12 @@ rOyaqe2VmOyLreyLnOyYpC4</string>
<object class="NSButtonCell" key="NSCell" id="718083688">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">64+Z6riw7ZmUIO2ZnOyEse2ZlA</string>
+ <string key="NSContents">ë™ê¸°í™” 활성화</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -863,9 +856,7 @@ rOyaqe2VmOyLreyLnOyYpC4</string>
<object class="NSTextFieldCell" key="NSCell" id="572508492">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">IuuyoOq7tOuRkOq4sCIg66mU64m0IO2VreuqqeydhCDtmZzshLHtmZTtlZjqs6AgT1NYIOu2meydtOq4
-sCDrs7Trk5wsIFgxMSDtgbTrpr3rs7Trk5wg67CPIFBSSU1BUlkg67KE7Y28IOqwhOydmCDrj5nquLDt
-mZTrpbwg7ZeI7Jqp7ZWp64uI64ukLg</string>
+ <string key="NSContents">"ë² ê»´ë‘기" 메뉴 í•­ëª©ì„ í™œì„±í™”í•˜ê³  OSX 붙ì´ê¸° ë³´ë“œ, X11 í´ë¦½ë³´ë“œ ë° PRIMARY ë²„í¼ ê°„ì˜ ë™ê¸°í™”를 허용합니다.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="386152084"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -881,13 +872,12 @@ mZTrpbwg7ZeI7Jqp7ZWp64uI64ukLg</string>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">67aZ7J206riwIOuztOuTnOulvCDrs4Dqsr3tlZjrqbQg7YG066a967O065Oc6rCAIOyXheuNsOydtO2K
-uOuQqeuLiOuLpC4</string>
+ <string key="NSContents">붙ì´ê¸° 보드가 변경ë˜ë©´ CLIPBOARD ì—…ë°ì´íŠ¸</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -904,13 +894,12 @@ uOuQqeuLiOuLpC4</string>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">67aZ7J206riwIOuztOuTnOulvCDrs4Dqsr3tlZjrqbQgUFJJTUFSWSjspJHslZkg7YG066atKeqwgCDs
-l4XrjbDsnbTtirjrkKnri4jri6QuA</string>
+ <string key="NSContents">붙ì´ê¸° 보드가 변경ë˜ë©´ PRIMARY(중간 í´ë¦­) ì—…ë°ì´íŠ¸</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -927,13 +916,12 @@ l4XrjbDsnbTtirjrkKnri4jri6QuA</string>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">7IOI66Gc7Jq0IO2FjeyKpO2KuOqwgCDshKDtg53rkJjrqbQg7KaJ7IucIOu2meydtOq4sCDrs7Trk5zr
-pbwg7JeF642w7J207Yq47ZWp64uI64ukLg</string>
+ <string key="NSContents">새로운 í…스트가 ì„ íƒë˜ë©´ 바로 붙ì´ê¸° ë³´ë“œ ì—…ë°ì´íŠ¸</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -950,13 +938,12 @@ pbwg7JeF642w7J207Yq47ZWp64uI64ukLg</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">7YG066a967O065Oc66W8IOuzgOqyve2VmOuptCDrtpnsnbTquLAg67O065Oc6rCAIOyXheuNsOydtO2K
-uOuQqeuLiOuLpC4</string>
+ <string key="NSContents">CLIPBOARDê°€ 변경ë˜ë©´ 붙ì´ê¸° ë³´ë“œ ì—…ë°ì´íŠ¸</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -973,9 +960,7 @@ uOuQqeuLiOuLpC4</string>
<object class="NSTextFieldCell" key="NSCell" id="461823902">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">eGNsaXBib2FyZCwga2xpcHBlciDrmJDripQg6riw7YOAIOuLpOuluCBYMTEg7YG066a967O065OcIOq0
-gOumrOyekOulvCDsgqzsmqntlZjroKTrqbQg7J20IOyYteyFmOydhCDruYTtmZzshLHtmZTtlZjsi63s
-i5zsmKQuA</string>
+ <string key="NSContents">xclipboard, klipper ë˜ëŠ” 기타 다른 X11 í´ë¦½ë³´ë“œ 관리ìžë¥¼ 사용하려면 ì´ ì˜µì…˜ì„ ë¹„í™œì„±í™”í•˜ì‹­ì‹œì˜¤.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="620944856"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -991,9 +976,7 @@ i5zsmKQuA</string>
<object class="NSTextFieldCell" key="NSCell" id="994587858">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIO2UhOuhnO2GoOy9nCDsoJztlZwg65WM66y47JeQIOydtCDsmLXshZjsnYAg7J2867aAIOydkeya
-qSDtlITroZzqt7jrnqjsl5DshJwg7ZWt7IOBIOyekeuPme2VmOyngCDslYrsnYQg7IiY64+EIOyeiOyK
-teuLiOuLpC4gA</string>
+ <string key="NSContents">X11 프로토콜 제한 ë•Œë¬¸ì— ì´ ì˜µì…˜ì€ ì¼ë¶€ ì‘ìš© 프로그램ì—ì„œ í•­ìƒ ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. </string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="522511724"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1003,7 +986,7 @@ teuLiOuLpC4gA</string>
</object>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">67aZ7J206riwIOuztOuTnA</string>
+ <string key="NSLabel">붙ì´ê¸° ë³´ë“œ</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1025,12 +1008,12 @@ teuLiOuLpC4gA</string>
<object class="NSButtonCell" key="NSCell" id="259618205">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">67mE7Zmc7ISxIOyciOuPhOyasCDtgbTrpq0</string>
+ <string key="NSContents">비활성 윈ë„ìš° í´ë¦­</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1047,9 +1030,7 @@ teuLiOuLpC4gA</string>
<object class="NSTextFieldCell" key="NSCell" id="399127858">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">7Zmc7ISx7ZmU65CY7JeI7J2EIOuVjCDruYTtmZzshLEg7JyI64+E7Jqw66W8IO2BtOumre2VmOuptCDr
-p4jsmrDsiqQg7YG066at7J20IOu5hO2ZnOyEsSDsnIjrj4TsmrDroZwg7Ya16rO865CgIOu/kOunjCDs
-lYTri4jrnbwg67mE7Zmc7ISxIOyciOuPhOyasOqwgCAg7Zmc7ISx7ZmU65Cp64uI64ukLg</string>
+ <string key="NSContents">활성화ë˜ì—ˆì„ ë•Œ 비활성 윈ë„우를 í´ë¦­í•˜ë©´ 마우스 í´ë¦­ì´ 비활성 윈ë„ìš°ë¡œ í†µê³¼ë  ë¿ë§Œ ì•„ë‹ˆë¼ ë¹„í™œì„± 윈ë„ìš°ê°€ 활성화ë©ë‹ˆë‹¤.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="290578835"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1065,12 +1046,12 @@ lYTri4jrnbwg67mE7Zmc7ISxIOyciOuPhOyasOqwgCAg7Zmc7ISx7ZmU65Cp64uI64ukLg</string>
<object class="NSButtonCell" key="NSCell" id="959555182">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">66eI7Jqw7Iqk66W8IOuUsOudvCDstIjsoJAg7J2064+ZA</string>
+ <string key="NSContents">마우스를 ë”°ë¼ ì´ˆì  ì´ë™</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1087,8 +1068,7 @@ lYTri4jrnbwg67mE7Zmc7ISxIOyciOuPhOyasOqwgCAg7Zmc7ISx7ZmU65Cp64uI64ukLg</string>
<object class="NSTextFieldCell" key="NSCell" id="183409141">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOyciOuPhOyasCDstIjsoJDsnYAg7ZW064u5IOy7pOyEnOulvCDrlLDrpoXri4jri6QuICDsnbTq
-soPsnYAg7J2867aAIOyXreq4sOuKpeydhCDqsIDsp4Dqs6Ag7J6I7Iq164uI64ukLg</string>
+ <string key="NSContents">X11 윈ë„ìš° ì´ˆì ì€ 해당 커서를 따릅니다. ì´ê²ƒì€ ì¼ë¶€ ì—­ê¸°ëŠ¥ì„ ê°€ì§€ê³  있습니다.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="138261120"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1104,12 +1084,12 @@ soPsnYAg7J2867aAIOyXreq4sOuKpeydhCDqsIDsp4Dqs6Ag7J6I7Iq164uI64ukLg</string>
<object class="NSButtonCell" key="NSCell" id="556463187">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">7IOI66Gc7Jq0IOyciOuPhOyasOyXkCDstIjsoJAg65GQ6riwA</string>
+ <string key="NSContents">새로운 윈ë„ìš°ì— ì´ˆì  ë‘기</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1126,9 +1106,7 @@ soPsnYAg7J2867aAIOyXreq4sOuKpeydhCDqsIDsp4Dqs6Ag7J6I7Iq164uI64ukLg</string>
<object class="NSTextFieldCell" key="NSCell" id="989804990">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">7Zmc7ISx7ZmU65CY7JeI7J2EIOuVjCDsg4jroZzsmrQgWDExIOyciOuPhOyasOulvCDsg53shLHtlZjr
-qbQgKEZpbmRlci5hcHAg67CPIO2EsOuvuOuEkC5hcHAg65OxIOuMgOyLoCkgWDExLmFwcOydtCDrp6gg
-7JWe7Jy866GcIOydtOuPmeuQqeuLiOuLpC4</string>
+ <string key="NSContents">활성화ë˜ì—ˆì„ ë•Œ 새로운 X11 윈ë„우를 ìƒì„±í•˜ë©´ (Finder.app ë° í„°ë¯¸ë„.app 등 대신) X11.appì´ ë§¨ 앞으로 ì´ë™ë©ë‹ˆë‹¤.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="57161931"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1138,7 +1116,7 @@ qbQgKEZpbmRlci5hcHAg67CPIO2EsOuvuOuEkC5hcHAg65OxIOuMgOyLoCkgWDExLmFwcOydtCDrp6gg
</object>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">7JyI64+E7JqwA</string>
+ <string key="NSLabel">윈ë„ìš°</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1157,12 +1135,12 @@ qbQgKEZpbmRlci5hcHAg67CPIO2EsOuvuOuEkC5hcHAg65OxIOuMgOyLoCkgWDExLmFwcOydtCDrp6gg
<object class="NSButtonCell" key="NSCell" id="189594322">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">7Jew6rKwIOyduOymnQ</string>
+ <string key="NSContents">ì—°ê²° ì¸ì¦</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1179,12 +1157,12 @@ qbQgKEZpbmRlci5hcHAg67CPIO2EsOuvuOuEkC5hcHAg65OxIOuMgOyLoCkgWDExLmFwcOydtCDrp6gg
<object class="NSButtonCell" key="NSCell" id="489340979">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">64Sk7Yq47JuM7YGsIO2BtOudvOydtOyWuO2KuOyXkOyEnOydmCDsl7DqsrDsnYQg7ZeI7JqpA</string>
+ <string key="NSContents">ë„¤íŠ¸ì›Œí¬ í´ë¼ì´ì–¸íŠ¸ì—ì„œì˜ ì—°ê²°ì„ í—ˆìš©</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="127718871"/>
+ <reference key="NSNormalImage" ref="1052652531"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1201,10 +1179,7 @@ qbQgKEZpbmRlci5hcHAg67CPIO2EsOuvuOuEkC5hcHAg65OxIOuMgOyLoCkgWDExLmFwcOydtCDrp6gg
<object class="NSTextFieldCell" key="NSCell" id="53243865">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDEx7J2EIOyLpO2Wie2VmOuptCBYYXV0aG9yaXR5IOyXsOqysCDsoJzslrQg7YKk66W8IOyDneyEse2V
-qeuLiOuLpC4g7Iuc7Iqk7YWc7J2YIElQIOyjvOyGjOulvCDrs4Dqsr3tlZjrqbQsIOydtCDtgqTrk6Ts
-nbQg7Jyg7Zqo7ZWY7KeAIOyViuqyjCDrkJjslrQgWDExIOydkeyaqSDtlITroZzqt7jrnqjsnbQg7Iuk
-7ZaJ65CY7KeAIOyViuydhCDsiJgg7J6I7Iq164uI64ukLg</string>
+ <string key="NSContents">X11ì„ ì‹¤í–‰í•˜ë©´ Xauthority ì—°ê²° 제어 키를 ìƒì„±í•©ë‹ˆë‹¤. ì‹œìŠ¤í…œì˜ IP 주소를 변경하면, ì´ í‚¤ë“¤ì´ ìœ íš¨í•˜ì§€ 않게 ë˜ì–´ X11 ì‘ìš© í”„ë¡œê·¸ëž¨ì´ ì‹¤í–‰ë˜ì§€ ì•Šì„ ìˆ˜ 있습니다.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="168436707"/>
@@ -1221,10 +1196,7 @@ nbQg7Jyg7Zqo7ZWY7KeAIOyViuqyjCDrkJjslrQgWDExIOydkeyaqSDtlITroZzqt7jrnqjsnbQg7Iuk
<object class="NSTextFieldCell" key="NSCell" id="390084685">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">7Zmc7ISx7ZmU65CY66m0LCDsi5zsiqTthZwg67O07JWI7J2EIO2ZleyduO2VmOq4sCDsnITtlbQg7Jew
-6rKwIOyduOymneuPhCDtmZzshLHtmZTrkJjslrTslbwg7ZWp64uI64ukLiDruYTtmZzshLHtmZTrkJjr
-qbQsIOybkOqyqSDsnZHsmqkg7ZSE66Gc6re4656oIOyXsOqysOydtCDtl4jsmqnrkJjsp4Ag7JWK7Iq1
-64uI64ukLg</string>
+ <string key="NSContents">활성화ë˜ë©´, 시스템 ë³´ì•ˆì„ í™•ì¸í•˜ê¸° 위해 ì—°ê²° ì¸ì¦ë„ 활성화ë˜ì–´ì•¼ 합니다. 비활성화ë˜ë©´, ì›ê²© ì‘ìš© 프로그램 ì—°ê²°ì´ í—ˆìš©ë˜ì§€ 않습니다.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="363817195"/>
@@ -1241,8 +1213,7 @@ qbQsIOybkOqyqSDsnZHsmqkg7ZSE66Gc6re4656oIOyXsOqysOydtCDtl4jsmqnrkJjsp4Ag7JWK7Iq1
<object class="NSTextFieldCell" key="NSCell" id="283628678">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">7J2065OkIOyYteyFmOydgCBYMTHsnYQg64uk7J2M7JeQIOyLpO2Wie2VmOuptCDsoIHsmqnrkKnri4jr
-i6QuA</string>
+ <string key="NSContents">ì´ë“¤ ì˜µì…˜ì€ X11ì„ ë‹¤ìŒì— 실행하면 ì ìš©ë©ë‹ˆë‹¤.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="223835729"/>
@@ -1253,7 +1224,7 @@ i6QuA</string>
</object>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">67O07JWIA</string>
+ <string key="NSLabel">보안</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1281,7 +1252,7 @@ i6QuA</string>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{302, 440}, {454, 271}}</string>
<int key="NSWTFlags">1350041600</int>
- <string type="base64-UTF8" key="NSWindowTitle">WDExIOydkeyaqSDtlITroZzqt7jrnqgg66mU64m0A</string>
+ <string key="NSWindowTitle">X11 ì‘ìš© 프로그램 메뉴</string>
<string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
@@ -1302,12 +1273,16 @@ i6QuA</string>
<object class="NSButtonCell" key="NSCell" id="143554520">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">137887744</int>
- <string type="base64-UTF8" key="NSContents">67O17KCcA</string>
+ <string key="NSContents">복제</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1325,12 +1300,12 @@ i6QuA</string>
<object class="NSButtonCell" key="NSCell" id="8201128">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">137887744</int>
- <string type="base64-UTF8" key="NSContents">7KCc6rGwA</string>
+ <string key="NSContents">제거</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1375,9 +1350,9 @@ i6QuA</string>
<double key="NSMinWidth">62.730998992919922</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">7J2066aEA</string>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">ì´ë¦„</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
@@ -1413,9 +1388,9 @@ i6QuA</string>
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">66qF66C5A</string>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">명령</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="113872566"/>
<reference key="NSTextColor" ref="249576247"/>
@@ -1440,9 +1415,9 @@ i6QuA</string>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">64uo7LaV7YKkA</string>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">단축키</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int>
@@ -1468,7 +1443,7 @@ i6QuA</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="241249183"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1498,6 +1473,7 @@ i6QuA</string>
<int key="NSDraggingSourceMaskForLocal">-1</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool>
+ <int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
<string key="NSFrame">{{1, 17}, {301, 198}}</string>
@@ -1514,7 +1490,7 @@ i6QuA</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1524,7 +1500,7 @@ i6QuA</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1562,12 +1538,12 @@ i6QuA</string>
<object class="NSButtonCell" key="NSCell" id="1025474039">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">137887744</int>
- <string type="base64-UTF8" key="NSContents">7ZWt66qpIOy2lOqwgA</string>
+ <string key="NSContents">항목 추가</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1585,7 +1561,7 @@ i6QuA</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
- <string type="base64-UTF8" key="NSTitle">66mU64m0A</string>
+ <string key="NSTitle">메뉴</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="318286212">
@@ -1601,7 +1577,7 @@ i6QuA</string>
</object>
<object class="NSMenuItem" id="511651072">
<reference key="NSMenu" ref="294137138"/>
- <string type="base64-UTF8" key="NSTitle">7J2R7JqpIO2UhOuhnOq3uOueqA</string>
+ <string key="NSTitle">ì‘ìš© 프로그램</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -1609,7 +1585,7 @@ i6QuA</string>
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="48278059">
- <string type="base64-UTF8" key="NSTitle">7J2R7JqpIO2UhOuhnOq3uOueqA</string>
+ <string key="NSTitle">ì‘ìš© 프로그램</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="563798000">
@@ -1625,7 +1601,7 @@ i6QuA</string>
</object>
<object class="NSMenuItem" id="1032342329">
<reference key="NSMenu" ref="48278059"/>
- <string type="base64-UTF8" key="NSTitle">7IKs7Jqp7J6Q7ZmULi4uA</string>
+ <string key="NSTitle">사용ìží™”...</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -2200,28 +2176,26 @@ i6QuA</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
- <object class="NSArray" key="object" id="330408435">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="object" ref="0"/>
<reference key="children" ref="904585544"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="815810918"/>
- <reference key="parent" ref="330408435"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="941939442"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="951368722"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
@@ -2235,7 +2209,7 @@ i6QuA</string>
<reference ref="868031522"/>
<reference ref="551174276"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">MainMenu</string>
</object>
<object class="IBObjectRecord">
@@ -2480,7 +2454,7 @@ i6QuA</string>
<object class="IBObjectRecord">
<int key="objectID">196</int>
<reference key="object" ref="485884620"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">X11Controller</string>
</object>
<object class="IBObjectRecord">
@@ -2490,7 +2464,7 @@ i6QuA</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="941366957"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">PrefsPanel</string>
</object>
<object class="IBObjectRecord">
@@ -2754,7 +2728,7 @@ i6QuA</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="85544634"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">EditPrograms</string>
</object>
<object class="IBObjectRecord">
@@ -2777,7 +2751,7 @@ i6QuA</string>
<reference ref="318286212"/>
<reference ref="511651072"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">DockMenu</string>
</object>
<object class="IBObjectRecord">
@@ -3331,18 +3305,16 @@ i6QuA</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-3.IBPluginDependency</string>
<string>-3.ImportedFromIB2</string>
<string>100292.IBPluginDependency</string>
<string>100293.IBPluginDependency</string>
<string>100295.IBPluginDependency</string>
- <string>100295.IBPropertyAccessControl</string>
<string>100295.IBShouldRemoveOnLegacySave</string>
<string>100310.IBPluginDependency</string>
- <string>100310.IBPropertyAccessControl</string>
<string>100363.IBPluginDependency</string>
<string>100364.IBPluginDependency</string>
<string>100365.IBPluginDependency</string>
- <string>100365.IBPropertyAccessControl</string>
<string>100368.IBPluginDependency</string>
<string>100369.IBPluginDependency</string>
<string>100370.IBPluginDependency</string>
@@ -3357,7 +3329,6 @@ i6QuA</string>
<string>100385.IBPluginDependency</string>
<string>100386.IBPluginDependency</string>
<string>100541.IBPluginDependency</string>
- <string>100541.IBPropertyAccessControl</string>
<string>100543.IBPluginDependency</string>
<string>129.IBPluginDependency</string>
<string>129.ImportedFromIB2</string>
@@ -3374,7 +3345,6 @@ i6QuA</string>
<string>144.IBPluginDependency</string>
<string>144.ImportedFromIB2</string>
<string>145.IBPluginDependency</string>
- <string>145.IBPropertyAccessControl</string>
<string>145.ImportedFromIB2</string>
<string>149.IBPluginDependency</string>
<string>149.ImportedFromIB2</string>
@@ -3392,16 +3362,12 @@ i6QuA</string>
<string>19.ImportedFromIB2</string>
<string>196.ImportedFromIB2</string>
<string>200295.IBPluginDependency</string>
- <string>200295.IBPropertyAccessControl</string>
<string>200295.IBShouldRemoveOnLegacySave</string>
<string>203.IBPluginDependency</string>
- <string>203.IBPropertyAccessControl</string>
<string>203.ImportedFromIB2</string>
<string>204.IBPluginDependency</string>
- <string>204.IBPropertyAccessControl</string>
<string>204.ImportedFromIB2</string>
<string>23.IBPluginDependency</string>
- <string>23.IBPropertyAccessControl</string>
<string>23.ImportedFromIB2</string>
<string>24.IBEditorWindowLastContentRect</string>
<string>24.IBPluginDependency</string>
@@ -3409,8 +3375,6 @@ i6QuA</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
<string>244.IBPluginDependency</string>
- <string>244.IBPropertyAccessControl</string>
- <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3419,7 +3383,6 @@ i6QuA</string>
<string>244.windowTemplate.maxSize</string>
<string>244.windowTemplate.minSize</string>
<string>245.IBPluginDependency</string>
- <string>245.IBPropertyAccessControl</string>
<string>245.ImportedFromIB2</string>
<string>269.IBPluginDependency</string>
<string>269.ImportedFromIB2</string>
@@ -3431,7 +3394,6 @@ i6QuA</string>
<string>272.ImportedFromIB2</string>
<string>285.IBEditorWindowLastContentRect</string>
<string>285.IBPluginDependency</string>
- <string>285.IBPropertyAccessControl</string>
<string>285.IBViewEditorWindowController.showingBoundsRectangles</string>
<string>285.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>285.IBWindowTemplateEditedContentRect</string>
@@ -3442,201 +3404,137 @@ i6QuA</string>
<string>285.windowTemplate.maxSize</string>
<string>285.windowTemplate.minSize</string>
<string>286.IBPluginDependency</string>
- <string>286.IBPropertyAccessControl</string>
<string>286.ImportedFromIB2</string>
<string>29.IBEditorWindowLastContentRect</string>
<string>29.IBPluginDependency</string>
<string>29.ImportedFromIB2</string>
<string>29.editorWindowContentRectSynchronizationRect</string>
<string>292.IBPluginDependency</string>
- <string>292.IBPropertyAccessControl</string>
<string>292.ImportedFromIB2</string>
<string>293.IBPluginDependency</string>
- <string>293.IBPropertyAccessControl</string>
<string>293.ImportedFromIB2</string>
<string>295.IBPluginDependency</string>
- <string>295.IBPropertyAccessControl</string>
<string>295.ImportedFromIB2</string>
<string>296.IBPluginDependency</string>
- <string>296.IBPropertyAccessControl</string>
<string>296.ImportedFromIB2</string>
<string>297.IBPluginDependency</string>
- <string>297.IBPropertyAccessControl</string>
<string>297.ImportedFromIB2</string>
<string>298.IBPluginDependency</string>
- <string>298.IBPropertyAccessControl</string>
<string>298.ImportedFromIB2</string>
<string>300295.IBPluginDependency</string>
- <string>300295.IBPropertyAccessControl</string>
<string>300295.IBShouldRemoveOnLegacySave</string>
<string>300330.IBPluginDependency</string>
- <string>300330.IBPropertyAccessControl</string>
<string>300330.ImportedFromIB2</string>
<string>300337.IBPluginDependency</string>
- <string>300337.IBPropertyAccessControl</string>
<string>300337.ImportedFromIB2</string>
<string>300338.IBPluginDependency</string>
- <string>300338.IBPropertyAccessControl</string>
<string>300338.ImportedFromIB2</string>
<string>300358.IBPluginDependency</string>
- <string>300358.IBPropertyAccessControl</string>
<string>300358.ImportedFromIB2</string>
<string>300359.IBPluginDependency</string>
- <string>300359.IBPropertyAccessControl</string>
<string>300359.ImportedFromIB2</string>
<string>300360.IBPluginDependency</string>
- <string>300360.IBPropertyAccessControl</string>
<string>300361.IBPluginDependency</string>
- <string>300361.IBPropertyAccessControl</string>
<string>300362.IBPluginDependency</string>
- <string>300362.IBPropertyAccessControl</string>
<string>300362.ImportedFromIB2</string>
<string>300363.IBPluginDependency</string>
- <string>300363.IBPropertyAccessControl</string>
<string>300364.IBPluginDependency</string>
- <string>300364.IBPropertyAccessControl</string>
<string>300364.ImportedFromIB2</string>
<string>300365.IBPluginDependency</string>
- <string>300365.IBPropertyAccessControl</string>
<string>300368.IBPluginDependency</string>
- <string>300368.IBPropertyAccessControl</string>
<string>300368.ImportedFromIB2</string>
<string>300369.IBPluginDependency</string>
- <string>300369.IBPropertyAccessControl</string>
<string>300370.IBPluginDependency</string>
- <string>300370.IBPropertyAccessControl</string>
<string>300370.ImportedFromIB2</string>
<string>300371.IBPluginDependency</string>
- <string>300371.IBPropertyAccessControl</string>
<string>300421.IBPluginDependency</string>
- <string>300421.IBPropertyAccessControl</string>
<string>300421.ImportedFromIB2</string>
<string>300422.IBPluginDependency</string>
- <string>300422.IBPropertyAccessControl</string>
<string>300422.ImportedFromIB2</string>
<string>300423.IBPluginDependency</string>
- <string>300423.IBPropertyAccessControl</string>
<string>300423.ImportedFromIB2</string>
<string>300424.IBPluginDependency</string>
- <string>300424.IBPropertyAccessControl</string>
<string>300424.ImportedFromIB2</string>
<string>300440.IBPluginDependency</string>
- <string>300440.IBPropertyAccessControl</string>
<string>300441.IBPluginDependency</string>
- <string>300441.IBPropertyAccessControl</string>
<string>300447.IBPluginDependency</string>
- <string>300447.IBPropertyAccessControl</string>
<string>300447.ImportedFromIB2</string>
<string>300450.IBPluginDependency</string>
- <string>300450.IBPropertyAccessControl</string>
<string>300451.IBPluginDependency</string>
- <string>300451.IBPropertyAccessControl</string>
<string>300451.ImportedFromIB2</string>
<string>300452.IBPluginDependency</string>
- <string>300452.IBPropertyAccessControl</string>
<string>300453.IBPluginDependency</string>
- <string>300453.IBPropertyAccessControl</string>
<string>300453.ImportedFromIB2</string>
<string>300454.IBPluginDependency</string>
- <string>300454.IBPropertyAccessControl</string>
<string>300455.IBPluginDependency</string>
- <string>300455.IBPropertyAccessControl</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
- <string>300456.IBPropertyAccessControl</string>
<string>300457.IBPluginDependency</string>
- <string>300457.IBPropertyAccessControl</string>
<string>300457.ImportedFromIB2</string>
<string>300458.IBPluginDependency</string>
- <string>300458.IBPropertyAccessControl</string>
<string>300459.IBPluginDependency</string>
- <string>300459.IBPropertyAccessControl</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
- <string>300460.IBPropertyAccessControl</string>
<string>300472.IBPluginDependency</string>
- <string>300472.IBPropertyAccessControl</string>
<string>300472.ImportedFromIB2</string>
<string>300473.IBPluginDependency</string>
- <string>300473.IBPropertyAccessControl</string>
<string>305.IBPluginDependency</string>
<string>305.ImportedFromIB2</string>
<string>310.IBPluginDependency</string>
- <string>310.IBPropertyAccessControl</string>
<string>310.ImportedFromIB2</string>
<string>348.IBPluginDependency</string>
- <string>348.IBPropertyAccessControl</string>
<string>348.ImportedFromIB2</string>
<string>349.IBPluginDependency</string>
<string>349.ImportedFromIB2</string>
<string>350.IBPluginDependency</string>
- <string>350.IBPropertyAccessControl</string>
<string>350.ImportedFromIB2</string>
<string>351.IBPluginDependency</string>
- <string>351.IBPropertyAccessControl</string>
<string>351.ImportedFromIB2</string>
<string>352.IBPluginDependency</string>
<string>352.ImportedFromIB2</string>
<string>353.IBPluginDependency</string>
<string>353.ImportedFromIB2</string>
<string>354.IBPluginDependency</string>
- <string>354.IBPropertyAccessControl</string>
<string>354.ImportedFromIB2</string>
<string>363.IBPluginDependency</string>
- <string>363.IBPropertyAccessControl</string>
<string>363.ImportedFromIB2</string>
<string>364.IBPluginDependency</string>
- <string>364.IBPropertyAccessControl</string>
<string>364.ImportedFromIB2</string>
<string>365.IBPluginDependency</string>
- <string>365.IBPropertyAccessControl</string>
<string>365.ImportedFromIB2</string>
<string>368.IBPluginDependency</string>
- <string>368.IBPropertyAccessControl</string>
<string>368.ImportedFromIB2</string>
<string>369.IBPluginDependency</string>
- <string>369.IBPropertyAccessControl</string>
<string>369.ImportedFromIB2</string>
<string>370.IBPluginDependency</string>
- <string>370.IBPropertyAccessControl</string>
<string>370.ImportedFromIB2</string>
<string>371.IBPluginDependency</string>
- <string>371.IBPropertyAccessControl</string>
<string>371.ImportedFromIB2</string>
<string>372.IBPluginDependency</string>
- <string>372.IBPropertyAccessControl</string>
<string>372.ImportedFromIB2</string>
<string>374.IBPluginDependency</string>
- <string>374.IBPropertyAccessControl</string>
<string>374.ImportedFromIB2</string>
<string>375.IBPluginDependency</string>
- <string>375.IBPropertyAccessControl</string>
<string>375.ImportedFromIB2</string>
<string>376.IBPluginDependency</string>
- <string>376.IBPropertyAccessControl</string>
<string>376.ImportedFromIB2</string>
<string>377.IBPluginDependency</string>
- <string>377.IBPropertyAccessControl</string>
<string>377.ImportedFromIB2</string>
<string>379.IBPluginDependency</string>
- <string>379.IBPropertyAccessControl</string>
<string>379.ImportedFromIB2</string>
<string>380.IBPluginDependency</string>
<string>380.ImportedFromIB2</string>
<string>381.IBPluginDependency</string>
<string>381.ImportedFromIB2</string>
<string>382.IBPluginDependency</string>
- <string>382.IBPropertyAccessControl</string>
<string>382.ImportedFromIB2</string>
<string>383.IBPluginDependency</string>
<string>383.ImportedFromIB2</string>
<string>384.IBPluginDependency</string>
<string>384.ImportedFromIB2</string>
<string>385.IBPluginDependency</string>
- <string>385.IBPropertyAccessControl</string>
<string>385.ImportedFromIB2</string>
<string>386.IBPluginDependency</string>
- <string>386.IBPropertyAccessControl</string>
<string>386.ImportedFromIB2</string>
<string>419.IBPluginDependency</string>
<string>419.ImportedFromIB2</string>
@@ -3661,21 +3559,16 @@ i6QuA</string>
<string>533.IBPluginDependency</string>
<string>533.ImportedFromIB2</string>
<string>535.IBPluginDependency</string>
- <string>535.IBPropertyAccessControl</string>
<string>535.ImportedFromIB2</string>
<string>536.IBPluginDependency</string>
<string>536.ImportedFromIB2</string>
<string>537.IBPluginDependency</string>
- <string>537.IBPropertyAccessControl</string>
<string>537.ImportedFromIB2</string>
<string>538.IBPluginDependency</string>
- <string>538.IBPropertyAccessControl</string>
<string>538.ImportedFromIB2</string>
<string>541.IBPluginDependency</string>
- <string>541.IBPropertyAccessControl</string>
<string>541.ImportedFromIB2</string>
<string>543.IBPluginDependency</string>
- <string>543.IBPropertyAccessControl</string>
<string>543.ImportedFromIB2</string>
<string>544.IBPluginDependency</string>
<string>544.ImportedFromIB2</string>
@@ -3688,13 +3581,10 @@ i6QuA</string>
<string>57.ImportedFromIB2</string>
<string>57.editorWindowContentRectSynchronizationRect</string>
<string>573.IBPluginDependency</string>
- <string>573.IBPropertyAccessControl</string>
<string>573.ImportedFromIB2</string>
<string>574.IBPluginDependency</string>
- <string>574.IBPropertyAccessControl</string>
<string>574.ImportedFromIB2</string>
<string>575.IBPluginDependency</string>
- <string>575.IBPropertyAccessControl</string>
<string>575.ImportedFromIB2</string>
<string>58.IBPluginDependency</string>
<string>58.ImportedFromIB2</string>
@@ -3703,18 +3593,16 @@ i6QuA</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3729,7 +3617,6 @@ i6QuA</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3746,7 +3633,6 @@ i6QuA</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3764,26 +3650,20 @@ i6QuA</string>
<integer value="1"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 698}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
- <boolean value="YES"/>
- <string>{{437, 698}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3791,7 +3671,6 @@ i6QuA</string>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3803,7 +3682,6 @@ i6QuA</string>
<integer value="1"/>
<string>{{68, 585}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<integer value="1"/>
<string>{{68, 585}, {454, 271}}</string>
@@ -3814,201 +3692,137 @@ i6QuA</string>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -4033,21 +3847,16 @@ i6QuA</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -4060,13 +3869,10 @@ i6QuA</string>
<integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -4076,9 +3882,7 @@ i6QuA</string>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -4086,9 +3890,7 @@ i6QuA</string>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -4126,7 +3928,16 @@ i6QuA</string>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">1</int>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>
diff --git a/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib
index 1a91df720..f8d3ac4b0 100644
--- a/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/no.lproj/locversion.plist b/hw/xquartz/bundle/Resources/no.lproj/locversion.plist
index da8104076..1686e3ff2 100644
--- a/hw/xquartz/bundle/Resources/no.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/no.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>no</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/no.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/no.lproj/main.nib/designable.nib
index ffca828b4..8b624e0ba 100644
--- a/hw/xquartz/bundle/Resources/no.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/no.lproj/main.nib/designable.nib
@@ -3,12 +3,12 @@
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">10A354</string>
- <string key="IBDocument.InterfaceBuilderVersion">728</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
<string key="IBDocument.AppKitVersion">1019</string>
<string key="IBDocument.HIToolboxVersion">421.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">728</string>
+ <string key="NS.object.0">729</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -397,7 +397,7 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
<nil key="NSNextResponder"/>
@@ -438,7 +438,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="783937663">
+ <object class="NSCustomResource" key="NSNormalImage" id="261155123">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -472,9 +472,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="120476036">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -520,7 +520,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -559,7 +559,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -598,7 +598,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -761,7 +761,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -783,7 +783,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -838,7 +838,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -871,12 +871,12 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Oppdater CLIPBOARD når Utklipp endres.</string>
+ <string key="NSContents">Oppdater CLIPBOARD når Utklipp endres</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -893,12 +893,12 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Oppdater PRIMARY (midtklikk) NÃ¥r Utklipp endres.</string>
+ <string key="NSContents">Oppdater PRIMARY (midtklikk) når Utklipp endres</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -915,12 +915,12 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Opdater Utklipp når ny tekst markeres.</string>
+ <string key="NSContents">Oppdater Utklipp umiddelbart når ny tekst markeres</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -937,12 +937,12 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Oppdater Utklipp når CLIPBOARD endres.</string>
+ <string key="NSContents">Oppdater Utklipp når CLIPBOARD endres</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1012,7 +1012,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1050,7 +1050,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1088,7 +1088,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1139,7 +1139,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1161,7 +1161,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="783937663"/>
+ <reference key="NSNormalImage" ref="261155123"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1243,7 +1243,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1256,7 +1256,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1277,7 +1277,11 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1300,7 +1304,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1351,7 +1355,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
@@ -1438,7 +1442,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="120476036"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1485,7 +1489,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1495,7 +1499,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1538,7 +1542,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1552,7 +1556,7 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -3305,14 +3309,11 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>100292.IBPluginDependency</string>
<string>100293.IBPluginDependency</string>
<string>100295.IBPluginDependency</string>
- <string>100295.IBPropertyAccessControl</string>
<string>100295.IBShouldRemoveOnLegacySave</string>
<string>100310.IBPluginDependency</string>
- <string>100310.IBPropertyAccessControl</string>
<string>100363.IBPluginDependency</string>
<string>100364.IBPluginDependency</string>
<string>100365.IBPluginDependency</string>
- <string>100365.IBPropertyAccessControl</string>
<string>100368.IBPluginDependency</string>
<string>100369.IBPluginDependency</string>
<string>100370.IBPluginDependency</string>
@@ -3327,7 +3328,6 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>100385.IBPluginDependency</string>
<string>100386.IBPluginDependency</string>
<string>100541.IBPluginDependency</string>
- <string>100541.IBPropertyAccessControl</string>
<string>100543.IBPluginDependency</string>
<string>129.IBPluginDependency</string>
<string>129.ImportedFromIB2</string>
@@ -3344,7 +3344,6 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>144.IBPluginDependency</string>
<string>144.ImportedFromIB2</string>
<string>145.IBPluginDependency</string>
- <string>145.IBPropertyAccessControl</string>
<string>145.ImportedFromIB2</string>
<string>149.IBPluginDependency</string>
<string>149.ImportedFromIB2</string>
@@ -3362,16 +3361,12 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>19.ImportedFromIB2</string>
<string>196.ImportedFromIB2</string>
<string>200295.IBPluginDependency</string>
- <string>200295.IBPropertyAccessControl</string>
<string>200295.IBShouldRemoveOnLegacySave</string>
<string>203.IBPluginDependency</string>
- <string>203.IBPropertyAccessControl</string>
<string>203.ImportedFromIB2</string>
<string>204.IBPluginDependency</string>
- <string>204.IBPropertyAccessControl</string>
<string>204.ImportedFromIB2</string>
<string>23.IBPluginDependency</string>
- <string>23.IBPropertyAccessControl</string>
<string>23.ImportedFromIB2</string>
<string>24.IBEditorWindowLastContentRect</string>
<string>24.IBPluginDependency</string>
@@ -3379,8 +3374,6 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
<string>244.IBPluginDependency</string>
- <string>244.IBPropertyAccessControl</string>
- <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3389,7 +3382,6 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>244.windowTemplate.maxSize</string>
<string>244.windowTemplate.minSize</string>
<string>245.IBPluginDependency</string>
- <string>245.IBPropertyAccessControl</string>
<string>245.ImportedFromIB2</string>
<string>269.IBPluginDependency</string>
<string>269.ImportedFromIB2</string>
@@ -3401,7 +3393,6 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>272.ImportedFromIB2</string>
<string>285.IBEditorWindowLastContentRect</string>
<string>285.IBPluginDependency</string>
- <string>285.IBPropertyAccessControl</string>
<string>285.IBViewEditorWindowController.showingBoundsRectangles</string>
<string>285.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>285.IBWindowTemplateEditedContentRect</string>
@@ -3412,201 +3403,137 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>285.windowTemplate.maxSize</string>
<string>285.windowTemplate.minSize</string>
<string>286.IBPluginDependency</string>
- <string>286.IBPropertyAccessControl</string>
<string>286.ImportedFromIB2</string>
<string>29.IBEditorWindowLastContentRect</string>
<string>29.IBPluginDependency</string>
<string>29.ImportedFromIB2</string>
<string>29.editorWindowContentRectSynchronizationRect</string>
<string>292.IBPluginDependency</string>
- <string>292.IBPropertyAccessControl</string>
<string>292.ImportedFromIB2</string>
<string>293.IBPluginDependency</string>
- <string>293.IBPropertyAccessControl</string>
<string>293.ImportedFromIB2</string>
<string>295.IBPluginDependency</string>
- <string>295.IBPropertyAccessControl</string>
<string>295.ImportedFromIB2</string>
<string>296.IBPluginDependency</string>
- <string>296.IBPropertyAccessControl</string>
<string>296.ImportedFromIB2</string>
<string>297.IBPluginDependency</string>
- <string>297.IBPropertyAccessControl</string>
<string>297.ImportedFromIB2</string>
<string>298.IBPluginDependency</string>
- <string>298.IBPropertyAccessControl</string>
<string>298.ImportedFromIB2</string>
<string>300295.IBPluginDependency</string>
- <string>300295.IBPropertyAccessControl</string>
<string>300295.IBShouldRemoveOnLegacySave</string>
<string>300330.IBPluginDependency</string>
- <string>300330.IBPropertyAccessControl</string>
<string>300330.ImportedFromIB2</string>
<string>300337.IBPluginDependency</string>
- <string>300337.IBPropertyAccessControl</string>
<string>300337.ImportedFromIB2</string>
<string>300338.IBPluginDependency</string>
- <string>300338.IBPropertyAccessControl</string>
<string>300338.ImportedFromIB2</string>
<string>300358.IBPluginDependency</string>
- <string>300358.IBPropertyAccessControl</string>
<string>300358.ImportedFromIB2</string>
<string>300359.IBPluginDependency</string>
- <string>300359.IBPropertyAccessControl</string>
<string>300359.ImportedFromIB2</string>
<string>300360.IBPluginDependency</string>
- <string>300360.IBPropertyAccessControl</string>
<string>300361.IBPluginDependency</string>
- <string>300361.IBPropertyAccessControl</string>
<string>300362.IBPluginDependency</string>
- <string>300362.IBPropertyAccessControl</string>
<string>300362.ImportedFromIB2</string>
<string>300363.IBPluginDependency</string>
- <string>300363.IBPropertyAccessControl</string>
<string>300364.IBPluginDependency</string>
- <string>300364.IBPropertyAccessControl</string>
<string>300364.ImportedFromIB2</string>
<string>300365.IBPluginDependency</string>
- <string>300365.IBPropertyAccessControl</string>
<string>300368.IBPluginDependency</string>
- <string>300368.IBPropertyAccessControl</string>
<string>300368.ImportedFromIB2</string>
<string>300369.IBPluginDependency</string>
- <string>300369.IBPropertyAccessControl</string>
<string>300370.IBPluginDependency</string>
- <string>300370.IBPropertyAccessControl</string>
<string>300370.ImportedFromIB2</string>
<string>300371.IBPluginDependency</string>
- <string>300371.IBPropertyAccessControl</string>
<string>300421.IBPluginDependency</string>
- <string>300421.IBPropertyAccessControl</string>
<string>300421.ImportedFromIB2</string>
<string>300422.IBPluginDependency</string>
- <string>300422.IBPropertyAccessControl</string>
<string>300422.ImportedFromIB2</string>
<string>300423.IBPluginDependency</string>
- <string>300423.IBPropertyAccessControl</string>
<string>300423.ImportedFromIB2</string>
<string>300424.IBPluginDependency</string>
- <string>300424.IBPropertyAccessControl</string>
<string>300424.ImportedFromIB2</string>
<string>300440.IBPluginDependency</string>
- <string>300440.IBPropertyAccessControl</string>
<string>300441.IBPluginDependency</string>
- <string>300441.IBPropertyAccessControl</string>
<string>300447.IBPluginDependency</string>
- <string>300447.IBPropertyAccessControl</string>
<string>300447.ImportedFromIB2</string>
<string>300450.IBPluginDependency</string>
- <string>300450.IBPropertyAccessControl</string>
<string>300451.IBPluginDependency</string>
- <string>300451.IBPropertyAccessControl</string>
<string>300451.ImportedFromIB2</string>
<string>300452.IBPluginDependency</string>
- <string>300452.IBPropertyAccessControl</string>
<string>300453.IBPluginDependency</string>
- <string>300453.IBPropertyAccessControl</string>
<string>300453.ImportedFromIB2</string>
<string>300454.IBPluginDependency</string>
- <string>300454.IBPropertyAccessControl</string>
<string>300455.IBPluginDependency</string>
- <string>300455.IBPropertyAccessControl</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
- <string>300456.IBPropertyAccessControl</string>
<string>300457.IBPluginDependency</string>
- <string>300457.IBPropertyAccessControl</string>
<string>300457.ImportedFromIB2</string>
<string>300458.IBPluginDependency</string>
- <string>300458.IBPropertyAccessControl</string>
<string>300459.IBPluginDependency</string>
- <string>300459.IBPropertyAccessControl</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
- <string>300460.IBPropertyAccessControl</string>
<string>300472.IBPluginDependency</string>
- <string>300472.IBPropertyAccessControl</string>
<string>300472.ImportedFromIB2</string>
<string>300473.IBPluginDependency</string>
- <string>300473.IBPropertyAccessControl</string>
<string>305.IBPluginDependency</string>
<string>305.ImportedFromIB2</string>
<string>310.IBPluginDependency</string>
- <string>310.IBPropertyAccessControl</string>
<string>310.ImportedFromIB2</string>
<string>348.IBPluginDependency</string>
- <string>348.IBPropertyAccessControl</string>
<string>348.ImportedFromIB2</string>
<string>349.IBPluginDependency</string>
<string>349.ImportedFromIB2</string>
<string>350.IBPluginDependency</string>
- <string>350.IBPropertyAccessControl</string>
<string>350.ImportedFromIB2</string>
<string>351.IBPluginDependency</string>
- <string>351.IBPropertyAccessControl</string>
<string>351.ImportedFromIB2</string>
<string>352.IBPluginDependency</string>
<string>352.ImportedFromIB2</string>
<string>353.IBPluginDependency</string>
<string>353.ImportedFromIB2</string>
<string>354.IBPluginDependency</string>
- <string>354.IBPropertyAccessControl</string>
<string>354.ImportedFromIB2</string>
<string>363.IBPluginDependency</string>
- <string>363.IBPropertyAccessControl</string>
<string>363.ImportedFromIB2</string>
<string>364.IBPluginDependency</string>
- <string>364.IBPropertyAccessControl</string>
<string>364.ImportedFromIB2</string>
<string>365.IBPluginDependency</string>
- <string>365.IBPropertyAccessControl</string>
<string>365.ImportedFromIB2</string>
<string>368.IBPluginDependency</string>
- <string>368.IBPropertyAccessControl</string>
<string>368.ImportedFromIB2</string>
<string>369.IBPluginDependency</string>
- <string>369.IBPropertyAccessControl</string>
<string>369.ImportedFromIB2</string>
<string>370.IBPluginDependency</string>
- <string>370.IBPropertyAccessControl</string>
<string>370.ImportedFromIB2</string>
<string>371.IBPluginDependency</string>
- <string>371.IBPropertyAccessControl</string>
<string>371.ImportedFromIB2</string>
<string>372.IBPluginDependency</string>
- <string>372.IBPropertyAccessControl</string>
<string>372.ImportedFromIB2</string>
<string>374.IBPluginDependency</string>
- <string>374.IBPropertyAccessControl</string>
<string>374.ImportedFromIB2</string>
<string>375.IBPluginDependency</string>
- <string>375.IBPropertyAccessControl</string>
<string>375.ImportedFromIB2</string>
<string>376.IBPluginDependency</string>
- <string>376.IBPropertyAccessControl</string>
<string>376.ImportedFromIB2</string>
<string>377.IBPluginDependency</string>
- <string>377.IBPropertyAccessControl</string>
<string>377.ImportedFromIB2</string>
<string>379.IBPluginDependency</string>
- <string>379.IBPropertyAccessControl</string>
<string>379.ImportedFromIB2</string>
<string>380.IBPluginDependency</string>
<string>380.ImportedFromIB2</string>
<string>381.IBPluginDependency</string>
<string>381.ImportedFromIB2</string>
<string>382.IBPluginDependency</string>
- <string>382.IBPropertyAccessControl</string>
<string>382.ImportedFromIB2</string>
<string>383.IBPluginDependency</string>
<string>383.ImportedFromIB2</string>
<string>384.IBPluginDependency</string>
<string>384.ImportedFromIB2</string>
<string>385.IBPluginDependency</string>
- <string>385.IBPropertyAccessControl</string>
<string>385.ImportedFromIB2</string>
<string>386.IBPluginDependency</string>
- <string>386.IBPropertyAccessControl</string>
<string>386.ImportedFromIB2</string>
<string>419.IBPluginDependency</string>
<string>419.ImportedFromIB2</string>
@@ -3631,21 +3558,16 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>533.IBPluginDependency</string>
<string>533.ImportedFromIB2</string>
<string>535.IBPluginDependency</string>
- <string>535.IBPropertyAccessControl</string>
<string>535.ImportedFromIB2</string>
<string>536.IBPluginDependency</string>
<string>536.ImportedFromIB2</string>
<string>537.IBPluginDependency</string>
- <string>537.IBPropertyAccessControl</string>
<string>537.ImportedFromIB2</string>
<string>538.IBPluginDependency</string>
- <string>538.IBPropertyAccessControl</string>
<string>538.ImportedFromIB2</string>
<string>541.IBPluginDependency</string>
- <string>541.IBPropertyAccessControl</string>
<string>541.ImportedFromIB2</string>
<string>543.IBPluginDependency</string>
- <string>543.IBPropertyAccessControl</string>
<string>543.ImportedFromIB2</string>
<string>544.IBPluginDependency</string>
<string>544.ImportedFromIB2</string>
@@ -3658,13 +3580,10 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>57.ImportedFromIB2</string>
<string>57.editorWindowContentRectSynchronizationRect</string>
<string>573.IBPluginDependency</string>
- <string>573.IBPropertyAccessControl</string>
<string>573.ImportedFromIB2</string>
<string>574.IBPluginDependency</string>
- <string>574.IBPropertyAccessControl</string>
<string>574.ImportedFromIB2</string>
<string>575.IBPluginDependency</string>
- <string>575.IBPropertyAccessControl</string>
<string>575.ImportedFromIB2</string>
<string>58.IBPluginDependency</string>
<string>58.ImportedFromIB2</string>
@@ -3678,14 +3597,11 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3700,7 +3616,6 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3717,7 +3632,6 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3735,26 +3649,20 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<integer value="1"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
- <string>{{375, 858}, {283, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
- <boolean value="NO"/>
- <string>{{437, 548}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3762,7 +3670,6 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -3772,12 +3679,11 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{68, 585}, {485, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<integer value="1"/>
- <string>{{68, 585}, {485, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
<integer value="0"/>
@@ -3785,201 +3691,137 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
- <string>{{145, 1011}, {354, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -4004,21 +3846,16 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -4031,13 +3868,10 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
<integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -4103,6 +3937,6 @@ IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo</string>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">1</int>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>
diff --git a/hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nib
index 982fa0125..562302f71 100644
--- a/hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist b/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist
index 233544b10..74cab979a 100644
--- a/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>pl</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib
index 870b49f51..c6ccb24ce 100644
--- a/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib
@@ -3,12 +3,12 @@
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">10A354</string>
- <string key="IBDocument.InterfaceBuilderVersion">728</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
<string key="IBDocument.AppKitVersion">1019</string>
<string key="IBDocument.HIToolboxVersion">421.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">728</string>
+ <string key="NS.object.0">729</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -397,7 +397,7 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
<nil key="NSNextResponder"/>
@@ -438,7 +438,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="475507843">
+ <object class="NSCustomResource" key="NSNormalImage" id="574619022">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -472,9 +472,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="905683795">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -520,7 +520,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -559,7 +559,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -598,7 +598,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -761,7 +761,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -783,7 +783,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -838,7 +838,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -876,7 +876,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -898,7 +898,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -920,7 +920,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -942,7 +942,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1012,7 +1012,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1051,7 +1051,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1090,7 +1090,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1142,7 +1142,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1164,7 +1164,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="475507843"/>
+ <reference key="NSNormalImage" ref="574619022"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1246,7 +1246,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1259,7 +1259,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1280,7 +1280,11 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1303,7 +1307,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1354,7 +1358,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
@@ -1443,7 +1447,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="905683795"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1491,7 +1495,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1501,7 +1505,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1544,7 +1548,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1558,7 +1562,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -2669,11 +2673,11 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<reference key="object" ref="300811574"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="989050925"/>
<reference ref="700826966"/>
<reference ref="168436707"/>
<reference ref="363817195"/>
<reference ref="223835729"/>
- <reference ref="989050925"/>
</object>
<reference key="parent" ref="348328898"/>
</object>
@@ -3376,7 +3380,6 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
<string>244.IBPluginDependency</string>
- <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3524,7 +3527,6 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<string>377.ImportedFromIB2</string>
<string>379.IBPluginDependency</string>
<string>379.ImportedFromIB2</string>
- <string>380.IBEditorWindowLastContentRect</string>
<string>380.IBPluginDependency</string>
<string>380.ImportedFromIB2</string>
<string>381.IBPluginDependency</string>
@@ -3660,14 +3662,13 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{347, 683}, {337, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {584, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="NO"/>
- <string>{{437, 548}, {584, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3697,7 +3698,7 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{145, 836}, {333, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
@@ -3814,7 +3815,6 @@ dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{523, 716}, {155, 83}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
diff --git a/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib
index 017335119..d9aedb230 100644
--- a/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist b/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist
index d14c37b4e..57f20c518 100644
--- a/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>pt</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib
index 42b40e4a8..8d3829d76 100644
--- a/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib
@@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9C31</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.26</string>
- <string key="IBDocument.HIToolboxVersion">352.00</string>
+ <string key="IBDocument.SystemVersion">10A354</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
+ <string key="IBDocument.AppKitVersion">1019</string>
+ <string key="IBDocument.HIToolboxVersion">421.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">729</string>
+ </object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -15,7 +19,7 @@
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
+ <object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
@@ -68,7 +72,7 @@
</object>
<object class="NSMenuItem" id="386173216">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">UHJlZmVyw6puY2lhcy4uLg</string>
+ <string key="NSTitle">Preferências...</string>
<string key="NSKeyEquiv">,</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -88,7 +92,7 @@
</object>
<object class="NSMenuItem" id="32285361">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">U2VydmnDp29zA</string>
+ <string key="NSTitle">Serviços</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -96,7 +100,7 @@
<reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="821388474">
- <string type="base64-UTF8" key="NSTitle">U2VydmnDp29zA</string>
+ <string key="NSTitle">Serviços</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -388,12 +392,12 @@
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{266, 364}, {644, 308}}</string>
<int key="NSWTFlags">1350041600</int>
- <string type="base64-UTF8" key="NSWindowTitle">UHJlZmVyw6puY2lhcyBYMTE</string>
+ <string key="NSWindowTitle">Preferências X11</string>
<string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
<nil key="NSNextResponder"/>
@@ -425,16 +429,16 @@
<object class="NSButtonCell" key="NSCell" id="990762273">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">RW11bGFyIG1vdXNlIGRlIHRyw6pzIGJvdMO1ZXM</string>
+ <string key="NSContents">Emular mouse de três botões</string>
<object class="NSFont" key="NSSupport" id="463863101">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
+ <double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="491126479">
+ <object class="NSCustomResource" key="NSNormalImage" id="213987313">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -459,7 +463,7 @@
<string key="NSContents">Se ativadas, as teclas equivalentes da barra de menus podem interferir com os aplicativos do X11 que usem o modificador Meta.</string>
<object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.100000e+01</double>
+ <double key="NSSize">11</double>
<int key="NSfFlags">3100</int>
</object>
<string key="NSPlaceholderString"/>
@@ -468,9 +472,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="409746837">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -517,7 +521,7 @@ ZS4KA</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -534,8 +538,7 @@ ZS4KA</string>
<object class="NSTextFieldCell" key="NSCell" id="666057093">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">UGVybWl0aXIgcXVlIGFzIG11ZGFuw6dhcyBubyBtZW51IGRlIGVudHJhZGEgc29icmVlc2NyZXZhbSBv
-IG1hcGEgZG8gdGVjbGFkbyBhdHVhbCBkbyBYMTEuA</string>
+ <string key="NSContents">Permitir que as mudanças no menu de entrada sobreescrevam o mapa do teclado atual do X11.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="31160162"/>
@@ -557,7 +560,7 @@ IG1hcGEgZG8gdGVjbGFkbyBhdHVhbCBkbyBYMTEuA</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -596,7 +599,7 @@ IG1hcGEgZG8gdGVjbGFkbyBhdHVhbCBkbyBYMTEuA</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -613,9 +616,7 @@ IG1hcGEgZG8gdGVjbGFkbyBhdHVhbCBkbyBYMTEuA</string>
<object class="NSTextFieldCell" key="NSCell" id="624655599">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">T3MgYmlwZXMgZG8gWDExIHVzYXLDo28gbyBhdmlzbyBkbyBzaXN0ZW1hIHBhZHLDo28sIGNvbmZvcm1l
-IGRlZmluaWRvIG5vIHBhaW5lbCBkZSBwcmVmZXLDqm5jaWFzIGRvIHNpc3RlbWEgRWZlaXRvcyBTb25v
-cm9zLg</string>
+ <string key="NSContents">Os bipes do X11 usarão o aviso do sistema padrão, conforme definido no painel de preferências do sistema Efeitos Sonoros.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="1039016593"/>
@@ -638,7 +639,7 @@ cm9zLg</string>
<int key="NSButtonFlags2">1</int>
<object class="NSFont" key="NSAlternateImage">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
+ <double key="NSSize">13</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSAlternateContents"/>
@@ -694,7 +695,7 @@ cm9zLg</string>
</object>
<object class="NSMenuItem" id="836673018">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">TWlsaMO1ZXM</string>
+ <string key="NSTitle">Milhões</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -705,6 +706,7 @@ cm9zLg</string>
<reference key="NSTarget" ref="633115429"/>
</object>
</object>
+ <reference key="NSMenuFont" ref="463863101"/>
</object>
<int key="NSPreferredEdge">3</int>
<bool key="NSUsesItemFromMenu">YES</bool>
@@ -738,8 +740,7 @@ cm9zLg</string>
<object class="NSTextFieldCell" key="NSCell" id="311969422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">RXN0YSBvcMOnw6NvIHBhc3NhIGEgZnVuY2lvbmFyIHF1YW5kbyBvIFgxMSDDqSBleGVjdXRhZG8gbm92
-YW1lbnRlLg</string>
+ <string key="NSContents">Esta opção passa a funcionar quando o X11 é executado novamente.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="86150604"/>
@@ -761,7 +762,7 @@ YW1lbnRlLg</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -783,7 +784,7 @@ YW1lbnRlLg</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -800,8 +801,7 @@ YW1lbnRlLg</string>
<object class="NSTextFieldCell" key="NSCell" id="761107402">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">QXRpdmEgYSBqYW5lbGEgcmFpeiBkbyBYMTEuIFVzYXIgbyB0b3F1ZSBDb21hbmRvLU9ww6fDo28tQSBw
-YXJhIGRpZ2l0YXIgZSBzYWlyIGRvIG1vZG8gdGVsYSBjaGVpYS4</string>
+ <string key="NSContents">Ativa a janela raiz do X11. Usar o toque Comando-Opção-A para digitar e sair do modo tela cheia.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="298603383"/>
@@ -812,7 +812,7 @@ YXJhIGRpZ2l0YXIgZSBzYWlyIGRvIG1vZG8gdGVsYSBjaGVpYS4</string>
</object>
<string key="NSFrame">{{10, 33}, {598, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">U2HDrWRhA</string>
+ <string key="NSLabel">Saída</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -834,12 +834,12 @@ YXJhIGRpZ2l0YXIgZSBzYWlyIGRvIG1vZG8gdGVsYSBjaGVpYS4</string>
<object class="NSButtonCell" key="NSCell" id="718083688">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">QXRpdmFyIHNpbmNyb25pemHDp8Ojbw</string>
+ <string key="NSContents">Ativar sincronização</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -856,9 +856,7 @@ YXJhIGRpZ2l0YXIgZSBzYWlyIGRvIG1vZG8gdGVsYSBjaGVpYS4</string>
<object class="NSTextFieldCell" key="NSCell" id="572508492">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">QXRpdmEgbyBpdGVtIGRlIG1lbnUgImNvcGlhciIgZSBwZXJtaXRlIGEgc2luY3Jvbml6YcOnw6NvIGVu
-dHJlIGEgw4FyZWEgZGUgQ29sYWdlbSBkbyBPU1ggZSBhIMOBUkVBIERFIFRSQU5TRkVSw4pOQ0lBIGUg
-b3MgYnVmZmVycyBQUklOQ0lQQUlTIGRvIFgxMS4</string>
+ <string key="NSContents">Ativa o item de menu "copiar" e permite a sincronização entre a Ãrea de Colagem do OSX e a ÃREA DE TRANSFERÊNCIA e os buffers PRINCIPAIS do X11.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="386152084"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -874,13 +872,12 @@ b3MgYnVmZmVycyBQUklOQ0lQQUlTIGRvIFgxMS4</string>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">QXR1YWxpemFyIGEgw4FSRUEgREUgVFJBTlNGRVLDik5DSUEgcXVhbmRvIGEgw4FyZWEgZGUgQ29sYWdl
-bSBmb3IgYWx0ZXJhZGEuA</string>
+ <string key="NSContents">Atualizar a ÃREA DE TRANSFERÊNCIA quando a Ãrea de Colagem for alterada</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -897,13 +894,12 @@ bSBmb3IgYWx0ZXJhZGEuA</string>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">QXR1YWxpemFyIFBSSU5DSVBBTCAoY2xpcXVlIGNlbnRyYWwpIHF1YW5kbyBhIMOBcmVhIGRlIENvbGFn
-ZW0gZm9yIGFsdGVyYWRhLg</string>
+ <string key="NSContents">Atualizar PRINCIPAL (clique central) quando a Ãrea de Colagem for alterada</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -920,13 +916,12 @@ ZW0gZm9yIGFsdGVyYWRhLg</string>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">QXR1YWxpemFyIGEgw4FyZWEgZGUgQ29sYWdlbSBpbWVkaWF0YW1lbnRlIHF1YW5kbyB1bSBub3ZvIHRl
-eHRvIGZvciBzZWxlY2lvbmFkby4</string>
+ <string key="NSContents">Atualizar a Ãrea de Colagem imediatamente quando um novo texto for selecionado</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -943,13 +938,12 @@ eHRvIGZvciBzZWxlY2lvbmFkby4</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">QXR1YWxpemFyIGEgw4FyZWEgZGUgQ29sYWdlbSBxdWFuZG8gYSDDgVJFQSBERSBUUkFOU0ZFUsOKTkNJ
-QSBmb3IgYWx0ZXJhZGEuA</string>
+ <string key="NSContents">Atualizar a Ãrea de Colagem quando a ÃREA DE TRANSFERÊNCIA for alterada</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -966,9 +960,7 @@ QSBmb3IgYWx0ZXJhZGEuA</string>
<object class="NSTextFieldCell" key="NSCell" id="461823902">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">RGVzYXRpdmUgZXN0YSBvcMOnw6NvIHF1YW5kbyBxdWlzZXIgdXNhciBvIHhjbGlwYm9hcmQsIG8ga2xp
-cHBlciBvdSBxdWFscXVlciBvdXRybyBnZXJlbmNpYWRvciBkZSDDoXJlYSBkZSB0cmFuc2ZlcsOqbmNp
-YSBkbyBYMTEuA</string>
+ <string key="NSContents">Desative esta opção quando quiser usar o xclipboard, o klipper ou qualquer outro gerenciador de área de transferência do X11.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="620944856"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -984,8 +976,7 @@ YSBkbyBYMTEuA</string>
<object class="NSTextFieldCell" key="NSCell" id="994587858">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">RGV2aWRvIGEgbGltaXRhw6fDtWVzIG5vIHByb3RvY29sbyBkbyBYMTEsIHRhbHZleiBlc3RhIG9ww6fD
-o28gbmVtIHNlbXByZSBmdW5jaW9uZSBlbSBhbGd1bnMgYXBsaWNhdGl2b3MuA</string>
+ <string key="NSContents">Devido a limitações no protocolo do X11, talvez esta opção nem sempre funcione em alguns aplicativos.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="522511724"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -995,7 +986,7 @@ o28gbmVtIHNlbXByZSBmdW5jaW9uZSBlbSBhbGd1bnMgYXBsaWNhdGl2b3MuA</string>
</object>
<string key="NSFrame">{{10, 33}, {598, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">w4FyZWEgZGUgQ29sYWdlbQ</string>
+ <string key="NSLabel">Ãrea de Colagem</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1022,7 +1013,7 @@ o28gbmVtIHNlbXByZSBmdW5jaW9uZSBlbSBhbGd1bnMgYXBsaWNhdGl2b3MuA</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1039,9 +1030,7 @@ o28gbmVtIHNlbXByZSBmdW5jaW9uZSBlbSBhbGd1bnMgYXBsaWNhdGl2b3MuA</string>
<object class="NSTextFieldCell" key="NSCell" id="399127858">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">UXVhbmRvIGVzdGEgb3DDp8OjbyBlc3TDoSBzZWxlY2lvbmFkYSwgYSBhw6fDo28gZGUgY2xpY2FyIGVt
-IHVtYSBqYW5lbGEgaW5hdGl2YSBmYXogY29tIHF1ZSBvIGNsaXF1ZSBkbyBtb3VzZSBzZWphIGF0aXZh
-ZG8gcGFyYSBlc3NhIGphbmVsYSwgYSBxdWFsIHRhbWLDqW0gw6kgYXRpdmFkYS4</string>
+ <string key="NSContents">Quando esta opção está selecionada, a ação de clicar em uma janela inativa faz com que o clique do mouse seja ativado para essa janela, a qual também é ativada.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="290578835"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1062,7 +1051,7 @@ ZG8gcGFyYSBlc3NhIGphbmVsYSwgYSBxdWFsIHRhbWLDqW0gw6kgYXRpdmFkYS4</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1079,8 +1068,7 @@ ZG8gcGFyYSBlc3NhIGphbmVsYSwgYSBxdWFsIHRhbWLDqW0gw6kgYXRpdmFkYS4</string>
<object class="NSTextFieldCell" key="NSCell" id="183409141">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">TyBmb2NvIGRhIGphbmVsYSBkbyBYMTEgc2VndWUgbyBjdXJzb3IuIEVzdGEgb3DDp8OjbyB0ZW0gYWxn
-dW5zIGluY29udmVuaWVudGVzLg</string>
+ <string key="NSContents">O foco da janela do X11 segue o cursor. Esta opção tem alguns inconvenientes.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="138261120"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1101,7 +1089,7 @@ dW5zIGluY29udmVuaWVudGVzLg</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1118,9 +1106,7 @@ dW5zIGluY29udmVuaWVudGVzLg</string>
<object class="NSTextFieldCell" key="NSCell" id="989804990">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">UXVhbmRvIGVzdGEgb3DDp8OjbyBlc3TDoSBhdGl2YWRhLCBhIGNyaWHDp8OjbyBkZSB1bWEgbm92YSBq
-YW5lbGEgZG8gWDExIG1vdmUgbyBYMTEuYXBwIHBhcmEgbyBzZWd1bmRvIHBsYW5vIChlbSB2ZXogZG8g
-RmluZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
+ <string key="NSContents">Quando esta opção está ativada, a criação de uma nova janela do X11 move o X11.app para o segundo plano (em vez do Finder.app, Terminal.app, etc.)</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="57161931"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1149,12 +1135,12 @@ RmluZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
<object class="NSButtonCell" key="NSCell" id="189594322">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">QXV0ZW50aWNhciBjb25leMO1ZXM</string>
+ <string key="NSContents">Autenticar conexões</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1171,12 +1157,12 @@ RmluZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
<object class="NSButtonCell" key="NSCell" id="489340979">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">UGVybWl0aXIgY29uZXjDtWVzIGRlIGNsaWVudGVzIGRhIHJlZGU</string>
+ <string key="NSContents">Permitir conexões de clientes da rede</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="491126479"/>
+ <reference key="NSNormalImage" ref="213987313"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1193,10 +1179,7 @@ RmluZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
<object class="NSTextFieldCell" key="NSCell" id="53243865">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">QSBleGVjdcOnw6NvIGRvIFgxMSBjcmlhcsOhIGFzIGNoYXZlcyBkZSBjb250cm9sZSBkZSBhY2Vzc28g
-WGF1dGhvcml0eS4gU2UgbXVkYXIgbyBlbmRlcmXDp28gZGUgSVAgZG8gc2lzdGVtYSwgZXNzYXMgY2hh
-dmVzIHRvcm5hbS1zZSBpbnbDoWxpZGFzLCBvIHF1ZSBwb2RlIGltcGVkaXIgYSBleGVjdcOnw6NvIGRv
-cyBhcGxpY2F0aXZvcyBkbyBYMTEuA</string>
+ <string key="NSContents">A execução do X11 criará as chaves de controle de acesso Xauthority. Se mudar o endereço de IP do sistema, essas chaves tornam-se inválidas, o que pode impedir a execução dos aplicativos do X11.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="168436707"/>
@@ -1213,9 +1196,7 @@ cyBhcGxpY2F0aXZvcyBkbyBYMTEuA</string>
<object class="NSTextFieldCell" key="NSCell" id="390084685">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">U2UgYXRpdmFkYXMsIGFzIGNvbmV4w7VlcyBBdXRlbnRpY2FyIHRhbWLDqW0gcG9kZW0gc2VyIGF0aXZh
-ZGFzIHBhcmEgZ2FyYW50aXIgYSBzZWd1cmFuw6dhIGRvIHNpc3RlbWEuIFNlIGRlc2F0aXZhZGFzLCBh
-cyBjb25leMO1ZXMgZG9zIGFwbGljYXRpdm9zIHJlbW90b3MgbsOjbyBzw6NvIHBlcm1pdGlkYXMuA</string>
+ <string key="NSContents">Se ativadas, as conexões Autenticar também podem ser ativadas para garantir a segurança do sistema. Se desativadas, as conexões dos aplicativos remotos não são permitidas.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="363817195"/>
@@ -1232,8 +1213,7 @@ cyBjb25leMO1ZXMgZG9zIGFwbGljYXRpdm9zIHJlbW90b3MgbsOjbyBzw6NvIHBlcm1pdGlkYXMuA</s
<object class="NSTextFieldCell" key="NSCell" id="283628678">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">RXN0YXMgb3DDp8O1ZXMgcGFzc2FtIGEgZnVuY2lvbmFyIHF1YW50byBvIFgxMSDDqSBleGVjdXRhZG8g
-ZW0gc2VndWlkYS4</string>
+ <string key="NSContents">Estas opções passam a funcionar quanto o X11 é executado em seguida.</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="223835729"/>
@@ -1244,7 +1224,7 @@ ZW0gc2VndWlkYS4</string>
</object>
<string key="NSFrame">{{10, 33}, {598, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">U2VndXJhbsOnYQ</string>
+ <string key="NSLabel">Segurança</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1264,7 +1244,7 @@ ZW0gc2VndWlkYS4</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1277,7 +1257,7 @@ ZW0gc2VndWlkYS4</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1298,7 +1278,11 @@ ZW0gc2VndWlkYS4</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1321,7 +1305,7 @@ ZW0gc2VndWlkYS4</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1362,12 +1346,12 @@ ZW0gc2VndWlkYS4</string>
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableColumn" id="938444323">
- <double key="NSWidth">1.327310e+02</double>
- <double key="NSMinWidth">6.273100e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">132.73099999999999</double>
+ <double key="NSMinWidth">62.731000000000002</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
<string key="NSContents">Nome</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
@@ -1400,12 +1384,12 @@ ZW0gc2VndWlkYS4</string>
<reference key="NSTableView" ref="905092943"/>
</object>
<object class="NSTableColumn" id="84282687">
- <double key="NSWidth">1.100000e+02</double>
- <double key="NSMinWidth">4.000000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">110</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
<string key="NSContents">Comando</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="113872566"/>
@@ -1427,12 +1411,12 @@ ZW0gc2VndWlkYS4</string>
<reference key="NSTableView" ref="905092943"/>
</object>
<object class="NSTableColumn" id="242608782">
- <double key="NSWidth">8.100000e+01</double>
- <double key="NSMinWidth">1.000000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">81</double>
+ <double key="NSMinWidth">10</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
<string key="NSContents">Atalho</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor">
@@ -1449,7 +1433,7 @@ ZW0gc2VndWlkYS4</string>
<string key="NSContents">Text Cell</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.200000e+01</double>
+ <double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSPlaceholderString"/>
@@ -1459,7 +1443,7 @@ ZW0gc2VndWlkYS4</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="409746837"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1469,8 +1453,8 @@ ZW0gc2VndWlkYS4</string>
<reference key="NSTableView" ref="905092943"/>
</object>
</object>
- <double key="NSIntercellSpacingWidth">3.000000e+00</double>
- <double key="NSIntercellSpacingHeight">2.000000e+00</double>
+ <double key="NSIntercellSpacingWidth">3</double>
+ <double key="NSIntercellSpacingHeight">2</double>
<reference key="NSBackgroundColor" ref="822946413"/>
<object class="NSColor" key="NSGridColor">
<int key="NSColorSpace">6</int>
@@ -1481,16 +1465,20 @@ ZW0gc2VndWlkYS4</string>
<bytes key="NSWhite">MC41AA</bytes>
</object>
</object>
- <double key="NSRowHeight">1.700000e+01</double>
+ <double key="NSRowHeight">17</double>
<int key="NSTvFlags">1379958784</int>
+ <reference key="NSDelegate"/>
+ <reference key="NSDataSource"/>
<int key="NSColumnAutoresizingStyle">1</int>
<int key="NSDraggingSourceMaskForLocal">-1</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool>
+ <int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
<string key="NSFrame">{{1, 17}, {333, 198}}</string>
<reference key="NSSuperview" ref="1063387772"/>
+ <reference key="NSNextKeyView" ref="905092943"/>
<reference key="NSDocView" ref="905092943"/>
<reference key="NSBGColor" ref="812484075"/>
<int key="NScvFlags">4</int>
@@ -1502,7 +1490,7 @@ ZW0gc2VndWlkYS4</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">9.949238e-01</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1512,7 +1500,7 @@ ZW0gc2VndWlkYS4</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">6.885246e-01</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1523,6 +1511,7 @@ ZW0gc2VndWlkYS4</string>
</object>
<string key="NSFrame">{{1, 0}, {333, 17}}</string>
<reference key="NSSuperview" ref="1063387772"/>
+ <reference key="NSNextKeyView" ref="792419186"/>
<reference key="NSDocView" ref="792419186"/>
<reference key="NSBGColor" ref="812484075"/>
<int key="NScvFlags">4</int>
@@ -1531,6 +1520,7 @@ ZW0gc2VndWlkYS4</string>
</object>
<string key="NSFrame">{{20, 20}, {350, 231}}</string>
<reference key="NSSuperview" ref="85544634"/>
+ <reference key="NSNextKeyView" ref="580565898"/>
<int key="NSsFlags">50</int>
<reference key="NSVScroller" ref="842897584"/>
<reference key="NSHScroller" ref="17278747"/>
@@ -1553,7 +1543,7 @@ ZW0gc2VndWlkYS4</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1567,7 +1557,7 @@ ZW0gc2VndWlkYS4</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -1611,7 +1601,7 @@ ZW0gc2VndWlkYS4</string>
</object>
<object class="NSMenuItem" id="1032342329">
<reference key="NSMenu" ref="48278059"/>
- <string type="base64-UTF8" key="NSTitle">UGVyc29uYWxpemFy4oCmA</string>
+ <string key="NSTitle">Personalizar…</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -2186,28 +2176,26 @@ ZW0gc2VndWlkYS4</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
- <object class="NSArray" key="object" id="330408435">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="object" ref="0"/>
<reference key="children" ref="904585544"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="815810918"/>
- <reference key="parent" ref="330408435"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="941939442"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="951368722"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
@@ -2221,7 +2209,7 @@ ZW0gc2VndWlkYS4</string>
<reference ref="868031522"/>
<reference ref="551174276"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">MainMenu</string>
</object>
<object class="IBObjectRecord">
@@ -2466,7 +2454,7 @@ ZW0gc2VndWlkYS4</string>
<object class="IBObjectRecord">
<int key="objectID">196</int>
<reference key="object" ref="485884620"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">X11Controller</string>
</object>
<object class="IBObjectRecord">
@@ -2476,7 +2464,7 @@ ZW0gc2VndWlkYS4</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="941366957"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">PrefsPanel</string>
</object>
<object class="IBObjectRecord">
@@ -2740,7 +2728,7 @@ ZW0gc2VndWlkYS4</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="85544634"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">EditPrograms</string>
</object>
<object class="IBObjectRecord">
@@ -2763,7 +2751,7 @@ ZW0gc2VndWlkYS4</string>
<reference ref="318286212"/>
<reference ref="511651072"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">DockMenu</string>
</object>
<object class="IBObjectRecord">
@@ -3315,10 +3303,8 @@ ZW0gc2VndWlkYS4</string>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
+ <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>-3.ImportedFromIB2</string>
<string>100292.IBPluginDependency</string>
@@ -3374,7 +3360,6 @@ ZW0gc2VndWlkYS4</string>
<string>169.editorWindowContentRectSynchronizationRect</string>
<string>19.IBPluginDependency</string>
<string>19.ImportedFromIB2</string>
- <string>196.IBPluginDependency</string>
<string>196.ImportedFromIB2</string>
<string>200295.IBPluginDependency</string>
<string>200295.IBShouldRemoveOnLegacySave</string>
@@ -3389,7 +3374,7 @@ ZW0gc2VndWlkYS4</string>
<string>24.ImportedFromIB2</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
- <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
+ <string>244.IBPluginDependency</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3408,6 +3393,7 @@ ZW0gc2VndWlkYS4</string>
<string>272.IBPluginDependency</string>
<string>272.ImportedFromIB2</string>
<string>285.IBEditorWindowLastContentRect</string>
+ <string>285.IBPluginDependency</string>
<string>285.IBViewEditorWindowController.showingBoundsRectangles</string>
<string>285.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>285.IBWindowTemplateEditedContentRect</string>
@@ -3608,13 +3594,13 @@ ZW0gc2VndWlkYS4</string>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1" id="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3633,274 +3619,270 @@ ZW0gc2VndWlkYS4</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{168, 821}, {113, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{202, 626}, {154, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {644, 308}}</string>
- <boolean value="NO" id="6"/>
- <string>{{437, 548}, {644, 308}}</string>
- <reference ref="9"/>
+ <string>{{437, 749}, {484, 308}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{437, 749}, {484, 308}}</string>
+ <integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
- <integer value="0" id="8"/>
- <reference ref="9"/>
+ <integer value="0"/>
+ <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{58, 803}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{68, 585}, {519, 271}}</string>
- <reference ref="9"/>
- <reference ref="6"/>
- <string>{{68, 585}, {519, 271}}</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <string>{{68, 585}, {454, 271}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <integer value="1"/>
+ <string>{{68, 585}, {454, 271}}</string>
+ <integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
- <reference ref="8"/>
- <reference ref="9"/>
+ <integer value="0"/>
+ <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -3908,9 +3890,7 @@ ZW0gc2VndWlkYS4</string>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -3948,6 +3928,15 @@ ZW0gc2VndWlkYS4</string>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
diff --git a/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib
index ed121ede6..3dbd44f7a 100644
--- a/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist b/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist
index 4910e409d..e60ce65f6 100644
--- a/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>pt_PT</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib
index 05dbb32f2..a5d3cdda6 100644
--- a/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib
@@ -12,6 +12,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="348"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -49,11 +50,11 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <object class="NSCustomResource" key="NSOnImage" id="1023398665">
+ <object class="NSCustomResource" key="NSOnImage" id="531645050">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
- <object class="NSCustomResource" key="NSMixedImage" id="833942997">
+ <object class="NSCustomResource" key="NSMixedImage" id="351811234">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
@@ -67,8 +68,8 @@
<string key="NSTitle">Acerca do X11</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="386173216">
<reference key="NSMenu" ref="576521955"/>
@@ -76,8 +77,8 @@
<string key="NSKeyEquiv">,</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="272876017">
<reference key="NSMenu" ref="576521955"/>
@@ -87,8 +88,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="32285361">
<reference key="NSMenu" ref="576521955"/>
@@ -96,8 +97,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="821388474">
<string key="NSTitle">Serviços</string>
@@ -115,8 +116,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="6876565">
<reference key="NSMenu" ref="576521955"/>
@@ -124,8 +125,8 @@
<string key="NSKeyEquiv">a</string>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="479677589">
<reference key="NSMenu" ref="576521955"/>
@@ -135,8 +136,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="301008465">
<reference key="NSMenu" ref="576521955"/>
@@ -144,8 +145,8 @@
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<int key="NSTag">42</int>
</object>
<object class="NSMenuItem" id="206802571">
@@ -154,8 +155,8 @@
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1023546148">
<reference key="NSMenu" ref="576521955"/>
@@ -163,8 +164,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<int key="NSTag">42</int>
</object>
<object class="NSMenuItem" id="848095279">
@@ -175,8 +176,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="274138642">
<reference key="NSMenu" ref="576521955"/>
@@ -184,8 +185,8 @@
<string key="NSKeyEquiv">q</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
<string key="NSName">_NSAppleMenu</string>
@@ -197,8 +198,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="981161348">
<string key="NSTitle">Aplicações</string>
@@ -212,8 +213,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1065386165">
<reference key="NSMenu" ref="981161348"/>
@@ -221,8 +222,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
</object>
@@ -233,8 +234,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="526778998">
<string key="NSTitle">Edição</string>
@@ -246,8 +247,8 @@
<string key="NSKeyEquiv">c</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
</object>
@@ -258,8 +259,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="96874957">
<string key="NSTitle">Janela</string>
@@ -271,8 +272,8 @@
<string key="NSKeyEquiv">w</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="677652931">
<reference key="NSMenu" ref="96874957"/>
@@ -280,8 +281,8 @@
<string key="NSKeyEquiv">m</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1066447520">
<reference key="NSMenu" ref="96874957"/>
@@ -289,8 +290,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="280172320">
<reference key="NSMenu" ref="96874957"/>
@@ -300,8 +301,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1036389925">
<reference key="NSMenu" ref="96874957"/>
@@ -309,8 +310,8 @@
<string key="NSKeyEquiv">)</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="369641893">
<reference key="NSMenu" ref="96874957"/>
@@ -318,8 +319,8 @@
<string key="NSKeyEquiv">(</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="155085383">
<reference key="NSMenu" ref="96874957"/>
@@ -329,8 +330,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="276216762">
<reference key="NSMenu" ref="96874957"/>
@@ -338,8 +339,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="444952046">
<reference key="NSMenu" ref="96874957"/>
@@ -349,8 +350,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
<string key="NSName">_NSWindowsMenu</string>
@@ -362,8 +363,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="511848303">
<string key="NSTitle">Ajuda</string>
@@ -375,8 +376,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
</object>
@@ -397,10 +398,10 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -438,7 +439,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="1057915638">
+ <object class="NSCustomResource" key="NSNormalImage" id="893401365">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -472,9 +473,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="854255273">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -520,7 +521,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -559,7 +560,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -598,7 +599,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -654,8 +655,8 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<int key="NSState">1</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">-1</int>
<reference key="NSTarget" ref="633115429"/>
@@ -674,8 +675,8 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">8</int>
<reference key="NSTarget" ref="633115429"/>
@@ -686,8 +687,8 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">15</int>
<reference key="NSTarget" ref="633115429"/>
@@ -698,8 +699,8 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">24</int>
<reference key="NSTarget" ref="633115429"/>
@@ -761,7 +762,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -783,7 +784,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -827,7 +828,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<object class="NSButton" id="878106058">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{18, 222}, {409, 23}}</string>
+ <string key="NSFrame">{{8, 222}, {409, 23}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="718083688">
@@ -838,7 +839,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -849,7 +850,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<object class="NSTextField" id="386152084">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 188}, {540, 28}}</string>
+ <string key="NSFrame">{{26, 188}, {540, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="572508492">
@@ -865,18 +866,18 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<object class="NSButton" id="477050998">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 96}, {409, 23}}</string>
+ <string key="NSFrame">{{24, 96}, {409, 23}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Actualizar CLIPBOARD quando a área de colagem mudar.</string>
+ <string key="NSContents">Actualizar CLIPBOARD quando a área de colagem for alterada</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -887,18 +888,18 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<object class="NSButton" id="765780304">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 71}, {550, 23}}</string>
+ <string key="NSFrame">{{24, 74}, {560, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Actualizar PRIMARY (clique com o botão central) quando a área de colagem mudar.</string>
+ <string key="NSContents">Actualizar PRIMARY (clique no botão do meio) quando a área de colagem for alterada</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -909,18 +910,18 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<object class="NSButton" id="1002778833">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 46}, {544, 23}}</string>
+ <string key="NSFrame">{{24, 46}, {544, 23}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Actualizar a área de colagem imediatamente quando for seleccionado texto novo.</string>
+ <string key="NSContents">Actualizar área de colagem assim que for seleccionado novo texto</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -931,18 +932,18 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<object class="NSButton" id="487809555">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{34, 159}, {409, 23}}</string>
+ <string key="NSFrame">{{24, 164}, {410, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Actualizar a área de colagem quando o CLIPBOARD mudar.</string>
+ <string key="NSContents">Actualizar a área de colagem quando CLIPBOARD for alterado</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -953,7 +954,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<object class="NSTextField" id="620944856">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{48, 125}, {509, 28}}</string>
+ <string key="NSFrame">{{38, 125}, {509, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="461823902">
@@ -969,7 +970,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<object class="NSTextField" id="522511724">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{48, 14}, {534, 28}}</string>
+ <string key="NSFrame">{{38, 14}, {534, 28}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="994587858">
@@ -1012,7 +1013,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1050,7 +1051,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1088,7 +1089,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1139,7 +1140,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1161,7 +1162,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="1057915638"/>
+ <reference key="NSNormalImage" ref="893401365"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1240,10 +1241,11 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
</object>
</object>
<string key="NSFrameSize">{633, 308}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1256,7 +1258,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1277,7 +1279,11 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1300,7 +1306,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1351,7 +1357,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
@@ -1438,7 +1444,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="854255273"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1485,7 +1491,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1495,7 +1501,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.97894736842105268</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1538,7 +1544,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1552,7 +1558,7 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -1567,8 +1573,8 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="511651072">
<reference key="NSMenu" ref="294137138"/>
@@ -1576,8 +1582,8 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="48278059">
<string key="NSTitle">Aplicações</string>
@@ -1591,8 +1597,8 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1032342329">
<reference key="NSMenu" ref="48278059"/>
@@ -1600,8 +1606,8 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1023398665"/>
- <reference key="NSMixedImage" ref="833942997"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
</object>
@@ -3455,19 +3461,27 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string>300441.IBPluginDependency</string>
<string>300447.IBPluginDependency</string>
<string>300447.ImportedFromIB2</string>
+ <string>300447.object.labelIdentifier</string>
<string>300450.IBPluginDependency</string>
+ <string>300450.object.labelIdentifier</string>
<string>300451.IBPluginDependency</string>
<string>300451.ImportedFromIB2</string>
+ <string>300451.object.labelIdentifier</string>
<string>300452.IBPluginDependency</string>
+ <string>300452.object.labelIdentifier</string>
<string>300453.IBPluginDependency</string>
<string>300453.ImportedFromIB2</string>
+ <string>300453.object.labelIdentifier</string>
<string>300454.IBPluginDependency</string>
+ <string>300454.object.labelIdentifier</string>
<string>300455.IBPluginDependency</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
<string>300457.IBPluginDependency</string>
<string>300457.ImportedFromIB2</string>
+ <string>300457.object.labelIdentifier</string>
<string>300458.IBPluginDependency</string>
+ <string>300458.object.labelIdentifier</string>
<string>300459.IBPluginDependency</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
@@ -3653,17 +3667,17 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{356, 858}, {322, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {633, 308}}</string>
+ <string>{{437, 698}, {633, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="0"/>
- <string>{{437, 548}, {633, 308}}</string>
+ <boolean value="YES"/>
+ <string>{{437, 698}, {633, 308}}</string>
<integer value="1"/>
- <string>{{184, 290}, {633, 308}}</string>
- <boolean value="NO"/>
+ <string>{{184, 290}, {481, 345}}</string>
+ <integer value="0"/>
<integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
@@ -3677,20 +3691,20 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{68, 585}, {477, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <boolean value="NO"/>
- <string>{{68, 585}, {477, 271}}</string>
+ <integer value="1"/>
+ <string>{{68, 585}, {454, 271}}</string>
<integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
- <boolean value="NO"/>
+ <integer value="0"/>
<integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{145, 1011}, {340, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
@@ -3744,19 +3758,27 @@ cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
diff --git a/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib
index 452b14a63..e48620b80 100644
--- a/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist b/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist
index 2c58741c7..b1f5ddb2f 100644
--- a/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>ru</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/ru.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/ru.lproj/main.nib/designable.nib
index ed66de254..6b3771de6 100644
--- a/hw/xquartz/bundle/Resources/ru.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/ru.lproj/main.nib/designable.nib
@@ -12,6 +12,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="348"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -306,7 +307,7 @@
<object class="NSMenuItem" id="1036389925">
<reference key="NSMenu" ref="96874957"/>
<string key="NSTitle">ПоÑледовательное переключение окон</string>
- <string key="NSKeyEquiv">'</string>
+ <string key="NSKeyEquiv">`</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="531645050"/>
@@ -315,7 +316,7 @@
<object class="NSMenuItem" id="369641893">
<reference key="NSMenu" ref="96874957"/>
<string key="NSTitle">Обратное поÑледовательное переключение окон</string>
- <string key="NSKeyEquiv">'</string>
+ <string key="NSKeyEquiv">`</string>
<int key="NSKeyEquivModMask">1179648</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="531645050"/>
@@ -397,10 +398,10 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -438,7 +439,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="176652610">
+ <object class="NSCustomResource" key="NSNormalImage" id="72767360">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -472,9 +473,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="393768457">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -521,7 +522,7 @@
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -560,7 +561,7 @@
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -599,7 +600,7 @@
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -762,7 +763,7 @@
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -784,7 +785,7 @@
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -839,7 +840,7 @@
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -872,12 +873,12 @@
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Обновить CLIPBOARD при изменениÑÑ… в буфере обмена.</string>
+ <string key="NSContents">ОбновлÑÑ‚ÑŒ CLIPBOARD при изменениÑÑ… в буфере обмена</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -888,18 +889,18 @@
<object class="NSButton" id="765780304">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{21, 74}, {530, 18}}</string>
+ <string key="NSFrame">{{21, 74}, {532, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Обновить PRIMARY (ÑреднÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши) при изменениÑÑ… в Буфере обмена.</string>
+ <string key="NSContents">ОбновлÑÑ‚ÑŒ PRIMARY (ÑреднÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши) при изменениÑÑ… в буфере обмена</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -910,18 +911,18 @@
<object class="NSButton" id="1002778833">
<reference key="NSNextResponder" ref="408298283"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{21, 52}, {412, 18}}</string>
+ <string key="NSFrame">{{21, 52}, {414, 18}}</string>
<reference key="NSSuperview" ref="408298283"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Обновить Буфер обмена Ñразу поÑле выбора нового текÑта.</string>
+ <string key="NSContents">ОбновлÑÑ‚ÑŒ буфер обмена Ñразу поÑле выбора нового текÑта</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -938,12 +939,12 @@
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Обновить буфер обмена при изменениÑÑ… в CLIPBOARD.</string>
+ <string key="NSContents">ОбновлÑÑ‚ÑŒ буфер обмена при изменениÑÑ… в CLIPBOARD</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1013,7 +1014,7 @@
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1051,7 +1052,7 @@
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1089,7 +1090,7 @@
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1140,7 +1141,7 @@
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1162,7 +1163,7 @@
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="176652610"/>
+ <reference key="NSNormalImage" ref="72767360"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1241,10 +1242,11 @@
</object>
</object>
<string key="NSFrameSize">{604, 308}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1257,7 +1259,7 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1278,7 +1280,11 @@
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1301,7 +1307,7 @@
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1352,7 +1358,7 @@
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
@@ -1439,7 +1445,7 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="393768457"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1486,7 +1492,7 @@
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1496,7 +1502,7 @@
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1539,7 +1545,7 @@
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1553,7 +1559,7 @@
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -2581,9 +2587,9 @@
<reference ref="86150604"/>
<reference ref="477203622"/>
<reference ref="57246850"/>
+ <reference ref="298603383"/>
<reference ref="418227126"/>
<reference ref="1039016593"/>
- <reference ref="298603383"/>
</object>
<reference key="parent" ref="960678392"/>
</object>
@@ -3456,19 +3462,27 @@
<string>300441.IBPluginDependency</string>
<string>300447.IBPluginDependency</string>
<string>300447.ImportedFromIB2</string>
+ <string>300447.object.labelIdentifier</string>
<string>300450.IBPluginDependency</string>
+ <string>300450.object.labelIdentifier</string>
<string>300451.IBPluginDependency</string>
<string>300451.ImportedFromIB2</string>
+ <string>300451.object.labelIdentifier</string>
<string>300452.IBPluginDependency</string>
+ <string>300452.object.labelIdentifier</string>
<string>300453.IBPluginDependency</string>
<string>300453.ImportedFromIB2</string>
+ <string>300453.object.labelIdentifier</string>
<string>300454.IBPluginDependency</string>
+ <string>300454.object.labelIdentifier</string>
<string>300455.IBPluginDependency</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
<string>300457.IBPluginDependency</string>
<string>300457.ImportedFromIB2</string>
+ <string>300457.object.labelIdentifier</string>
<string>300458.IBPluginDependency</string>
+ <string>300458.object.labelIdentifier</string>
<string>300459.IBPluginDependency</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
@@ -3655,14 +3669,14 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{371, 858}, {437, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {604, 308}}</string>
+ <string>{{437, 698}, {604, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="NO"/>
- <string>{{437, 548}, {604, 308}}</string>
+ <boolean value="YES"/>
+ <string>{{437, 698}, {604, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3679,11 +3693,11 @@
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{68, 585}, {504, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <boolean value="NO"/>
- <string>{{68, 585}, {504, 271}}</string>
+ <integer value="1"/>
+ <string>{{68, 585}, {454, 271}}</string>
<integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
<integer value="0"/>
@@ -3692,7 +3706,7 @@
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{145, 1011}, {369, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
@@ -3746,19 +3760,27 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>IBBuiltInLabel-Red</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3809,7 +3831,7 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{528, 715}, {148, 83}}</string>
+ <string>{{519, 865}, {145, 83}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3864,7 +3886,7 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{157, 808}, {372, 203}}</string>
+ <string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
diff --git a/hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nib
index 22f08fae4..5e11dcc78 100644
--- a/hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist b/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist
index 0fbea3558..7e6fd5bb3 100644
--- a/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>sv</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib
index 695ad42a2..3e6241a3d 100644
--- a/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib
@@ -3,12 +3,12 @@
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">10A354</string>
- <string key="IBDocument.InterfaceBuilderVersion">728</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
<string key="IBDocument.AppKitVersion">1019</string>
<string key="IBDocument.HIToolboxVersion">421.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">728</string>
+ <string key="NS.object.0">729</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -397,7 +397,7 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
<nil key="NSNextResponder"/>
@@ -438,7 +438,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="271531259">
+ <object class="NSCustomResource" key="NSNormalImage" id="885900096">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -472,9 +472,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="832012125">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -520,7 +520,7 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -559,7 +559,7 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -598,7 +598,7 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -761,7 +761,7 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -783,7 +783,7 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -838,7 +838,7 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -871,12 +871,12 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Uppdatera CLIPBOARD när urklipp ändras.</string>
+ <string key="NSContents">Uppdatera CLIPBOARD när urklipp ändras</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -893,12 +893,12 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Uppdatera PRIMARY (mellanklick) när urklipp ändras.</string>
+ <string key="NSContents">Uppdatera PRIMARY (mellanklick) när urklipp ändras</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -915,12 +915,12 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Uppdatera urklipp direkt när ny text markeras.</string>
+ <string key="NSContents">Uppdatera urklipp så snart ny text markeras</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -937,12 +937,12 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Uppdatera urklipp när CLIPBOARD ändras.</string>
+ <string key="NSContents">Uppdatera urklipp när CLIPBOARD ändras</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1012,7 +1012,7 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1053,7 +1053,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1092,7 +1092,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1144,7 +1144,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1166,7 +1166,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="271531259"/>
+ <reference key="NSNormalImage" ref="885900096"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1248,7 +1248,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1261,7 +1261,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1282,7 +1282,11 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1305,7 +1309,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1356,7 +1360,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="249576247">
<int key="NSColorSpace">6</int>
@@ -1445,7 +1449,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="832012125"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1493,7 +1497,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1503,7 +1507,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1546,7 +1550,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1560,7 +1564,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
@@ -3378,7 +3382,6 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
<string>244.IBPluginDependency</string>
- <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3526,7 +3529,6 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<string>377.ImportedFromIB2</string>
<string>379.IBPluginDependency</string>
<string>379.ImportedFromIB2</string>
- <string>380.IBEditorWindowLastContentRect</string>
<string>380.IBPluginDependency</string>
<string>380.ImportedFromIB2</string>
<string>381.IBPluginDependency</string>
@@ -3547,7 +3549,6 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<string>420.ImportedFromIB2</string>
<string>421.IBPluginDependency</string>
<string>421.ImportedFromIB2</string>
- <string>423.IBEditorWindowLastContentRect</string>
<string>423.IBPluginDependency</string>
<string>423.ImportedFromIB2</string>
<string>435.IBPluginDependency</string>
@@ -3663,14 +3664,13 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{357, 683}, {307, 153}}</string>
+ <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{444, 200}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="NO"/>
- <string>{{444, 200}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
@@ -3687,11 +3687,11 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{68, 585}, {496, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<integer value="1"/>
- <string>{{68, 585}, {496, 271}}</string>
+ <string>{{68, 585}, {454, 271}}</string>
<integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
<integer value="0"/>
@@ -3700,7 +3700,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{145, 836}, {347, 20}}</string>
+ <string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
@@ -3817,7 +3817,6 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{530, 368}, {171, 83}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3838,7 +3837,6 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{84, 676}, {127, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3873,7 +3871,7 @@ cmthIGlubmVow6VsbGV0Lgo</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{157, 633}, {230, 203}}</string>
+ <string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
diff --git a/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib
index 7ecbca0d8..897aefa80 100644
--- a/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist b/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist
index 1cbc91af8..5313c8d82 100644
--- a/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>zh_CN</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/designable.nib
index 4a1f083e5..f70d086fd 100644
--- a/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/designable.nib
@@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10A314</string>
- <string key="IBDocument.InterfaceBuilderVersion">718</string>
- <string key="IBDocument.AppKitVersion">1013</string>
- <string key="IBDocument.HIToolboxVersion">415.00</string>
+ <string key="IBDocument.SystemVersion">10A354</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
+ <string key="IBDocument.AppKitVersion">1019</string>
+ <string key="IBDocument.HIToolboxVersion">421.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">718</string>
+ <string key="NS.object.0">729</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -438,7 +438,7 @@
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="832555326">
+ <object class="NSCustomResource" key="NSNormalImage" id="944667249">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -472,7 +472,7 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="379024898">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
@@ -520,7 +520,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -559,7 +559,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -598,7 +598,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -761,7 +761,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -783,7 +783,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -838,7 +838,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -871,12 +871,12 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">“粘贴æ¿â€å˜åŒ–时更新 CLIPBOARD。</string>
+ <string key="NSContents">粘贴æ¿æ”¹å˜æ—¶æ›´æ–° CLIPBOARD</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -893,12 +893,12 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">“粘贴æ¿â€å˜åŒ–时更新 PRIMARY(中键点按)。</string>
+ <string key="NSContents">粘贴æ¿æ”¹å˜æ—¶æ›´æ–° PRIMARY(点按鼠标中间键)</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -915,12 +915,12 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">选定新文本时立å³æ›´æ–°â€œç²˜è´´æ¿â€ã€‚</string>
+ <string key="NSContents">选定新文本时立å³æ›´æ–°ç²˜è´´æ¿</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -937,12 +937,12 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">CLIPBOARD å˜åŒ–时更新“粘贴æ¿â€ã€‚</string>
+ <string key="NSContents">CLIPBOARD 改å˜æ—¶æ›´æ–°ç²˜è´´æ¿</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1012,7 +1012,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1050,7 +1050,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1088,7 +1088,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1139,7 +1139,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1161,7 +1161,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="832555326"/>
+ <reference key="NSNormalImage" ref="944667249"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1277,7 +1277,11 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1300,7 +1304,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1440,7 +1444,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="379024898"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1488,7 +1492,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99492377042770386</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1498,7 +1502,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.68852460384368896</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1541,7 +1545,7 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -3659,9 +3663,9 @@ moTpvKDmoIfmjInplK7jgIIKA</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 698}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{437, 698}, {484, 308}}</string>
+ <string>{{437, 749}, {484, 308}}</string>
<integer value="1"/>
<string>{{184, 290}, {481, 345}}</string>
<integer value="0"/>
diff --git a/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nib
index dc29ffafe..663ae241e 100644
--- a/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist b/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist
index 866f0f1ef..db3447988 100644
--- a/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist
+++ b/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist
@@ -3,12 +3,12 @@
<plist version="1.0">
<dict>
<key>LprojCompatibleVersion</key>
- <string>66.2</string>
+ <string>84.1</string>
<key>LprojLocale</key>
<string>zh_TW</string>
<key>LprojRevisionLevel</key>
<string>1</string>
<key>LprojVersion</key>
- <string>83</string>
+ <string>85</string>
</dict>
</plist>
diff --git a/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib
index 14a5fd064..abfdeccc4 100644
--- a/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib
+++ b/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib
@@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9C31</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.26</string>
- <string key="IBDocument.HIToolboxVersion">352.00</string>
+ <string key="IBDocument.SystemVersion">10A354</string>
+ <string key="IBDocument.InterfaceBuilderVersion">729</string>
+ <string key="IBDocument.AppKitVersion">1019</string>
+ <string key="IBDocument.HIToolboxVersion">421.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">729</string>
+ </object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -15,7 +19,7 @@
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
+ <object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
@@ -45,11 +49,11 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <object class="NSCustomResource" key="NSOnImage" id="721983472">
+ <object class="NSCustomResource" key="NSOnImage" id="531645050">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
- <object class="NSCustomResource" key="NSMixedImage" id="5865096">
+ <object class="NSCustomResource" key="NSMixedImage" id="351811234">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
@@ -60,20 +64,20 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="139290918">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">6Zec5pa8IFgxMQ</string>
+ <string key="NSTitle">關於 X11</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="386173216">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">5YGP5aW96Kit5a6a4ouvA</string>
+ <string key="NSTitle">å好設定⋯</string>
<string key="NSKeyEquiv">,</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="272876017">
<reference key="NSMenu" ref="576521955"/>
@@ -83,20 +87,20 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="32285361">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">5pyN5YuZA</string>
+ <string key="NSTitle">æœå‹™</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="821388474">
- <string type="base64-UTF8" key="NSTitle">5pyN5YuZA</string>
+ <string key="NSTitle">æœå‹™</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -111,17 +115,17 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="6876565">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">5L2/55So5YWo6J6i5bmVA</string>
+ <string key="NSTitle">使用全螢幕</string>
<string key="NSKeyEquiv">a</string>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="479677589">
<reference key="NSMenu" ref="576521955"/>
@@ -131,36 +135,36 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="301008465">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">6Zqx6JePIFgxMQ</string>
+ <string key="NSTitle">éš±è— X11</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<int key="NSTag">42</int>
</object>
<object class="NSMenuItem" id="206802571">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">6Zqx6JeP5YW25LuWA</string>
+ <string key="NSTitle">éš±è—其他</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1023546148">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">6aGv56S65YWo6YOoA</string>
+ <string key="NSTitle">顯示全部</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<int key="NSTag">42</int>
</object>
<object class="NSMenuItem" id="848095279">
@@ -171,17 +175,17 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="274138642">
<reference key="NSMenu" ref="576521955"/>
- <string type="base64-UTF8" key="NSTitle">57WQ5p2fIFgxMQ</string>
+ <string key="NSTitle">çµæŸ X11</string>
<string key="NSKeyEquiv">q</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
<string key="NSName">_NSAppleMenu</string>
@@ -189,15 +193,15 @@
</object>
<object class="NSMenuItem" id="868031522">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">5oeJ55So56iL5byPA</string>
+ <string key="NSTitle">應用程å¼</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="981161348">
- <string type="base64-UTF8" key="NSTitle">5oeJ55So56iL5byPA</string>
+ <string key="NSTitle">應用程å¼</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="390088328">
@@ -208,85 +212,85 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1065386165">
<reference key="NSMenu" ref="981161348"/>
- <string type="base64-UTF8" key="NSTitle">6Ieq5a6a4ouvA</string>
+ <string key="NSTitle">自定⋯</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
</object>
</object>
<object class="NSMenuItem" id="200491363">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">57eo6LyvA</string>
+ <string key="NSTitle">編輯</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="526778998">
- <string type="base64-UTF8" key="NSTitle">57eo6LyvA</string>
+ <string key="NSTitle">編輯</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="185296989">
<reference key="NSMenu" ref="526778998"/>
- <string type="base64-UTF8" key="NSTitle">5ou36LKdA</string>
+ <string key="NSTitle">æ‹·è²</string>
<string key="NSKeyEquiv">c</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
</object>
</object>
<object class="NSMenuItem" id="931553638">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">6KaW56qXA</string>
+ <string key="NSTitle">視窗</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="96874957">
- <string type="base64-UTF8" key="NSTitle">6KaW56qXA</string>
+ <string key="NSTitle">視窗</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="984461797">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">6Zec6ZaJA</string>
+ <string key="NSTitle">關閉</string>
<string key="NSKeyEquiv">w</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="677652931">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">57iu5Yiw5pyA5bCPA</string>
+ <string key="NSTitle">縮到最å°</string>
<string key="NSKeyEquiv">m</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1066447520">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">57iu5pS+A</string>
+ <string key="NSTitle">縮放</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="280172320">
<reference key="NSMenu" ref="96874957"/>
@@ -296,26 +300,26 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1036389925">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">5b6q55Kw5qqi6KaW6KaW56qXA</string>
+ <string key="NSTitle">循環檢視視窗</string>
<string key="NSKeyEquiv">`</string>
<int key="NSKeyEquivModMask">1048840</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="369641893">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">5Y+N5ZCR5b6q55Kw5qqi6KaW6KaW56qXA</string>
+ <string key="NSTitle">åå‘循環檢視視窗</string>
<string key="NSKeyEquiv">~</string>
<int key="NSKeyEquivModMask">1179914</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="155085383">
<reference key="NSMenu" ref="96874957"/>
@@ -325,17 +329,17 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="276216762">
<reference key="NSMenu" ref="96874957"/>
- <string type="base64-UTF8" key="NSTitle">5bCH5q2k56iL5byP5omA5pyJ6KaW56qX56e76Iez5pyA5YmNA</string>
+ <string key="NSTitle">將此程å¼æ‰€æœ‰è¦–窗移至最å‰</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="444952046">
<reference key="NSMenu" ref="96874957"/>
@@ -345,8 +349,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
<string key="NSName">_NSWindowsMenu</string>
@@ -354,25 +358,25 @@
</object>
<object class="NSMenuItem" id="551174276">
<reference key="NSMenu" ref="524015605"/>
- <string type="base64-UTF8" key="NSTitle">6LyU5Yqp6Kqq5piOA</string>
+ <string key="NSTitle">輔助說明</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="511848303">
- <string type="base64-UTF8" key="NSTitle">6LyU5Yqp6Kqq5piOA</string>
+ <string key="NSTitle">輔助說明</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="504984881">
<reference key="NSMenu" ref="511848303"/>
- <string type="base64-UTF8" key="NSTitle">WDExIOi8lOWKqeiqquaYjg</string>
+ <string key="NSTitle">X11 輔助說明</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
</object>
@@ -388,15 +392,15 @@
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{319, 329}, {484, 308}}</string>
<int key="NSWTFlags">1350041600</int>
- <string type="base64-UTF8" key="NSWindowTitle">WDExIOWBj+WlveioreWumg</string>
+ <string key="NSWindowTitle">X11 å好設定</string>
<string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -405,7 +409,6 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{13, 10}, {458, 292}}</string>
<reference key="NSSuperview" ref="941366957"/>
- <reference key="NSWindow"/>
<object class="NSMutableArray" key="NSTabViewItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTabViewItem" id="287591690">
@@ -422,21 +425,20 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{18, 210}, {402, 18}}</string>
<reference key="NSSuperview" ref="596750588"/>
- <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="990762273">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5qih5pOs5LiJ6Y215ruR6bygA</string>
+ <string key="NSContents">模擬三éµæ»‘é¼ </string>
<object class="NSFont" key="NSSupport" id="463863101">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
+ <double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="119157981"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="229425723">
+ <object class="NSCustomResource" key="NSNormalImage" id="339780660">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
@@ -454,16 +456,14 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{36, 92}, {399, 14}}</string>
<reference key="NSSuperview" ref="596750588"/>
- <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="391919450">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">55W25ZWf55So5pmC77yM6YG45Zau5YiX5oyJ6Y2155qE5bCN5oeJ6Y215Y+v6IO95pyD6Zi756SZ5L2/
-55SoIE1ldGEg6K6K5pu06Y2155qEIFgxMSDmh4nnlKjnqIvlvI/jgII</string>
+ <string key="NSContents">當啟用時,é¸å–®åˆ—按éµçš„å°æ‡‰éµå¯èƒ½æœƒé˜»ç¤™ä½¿ç”¨ Meta 變更éµçš„ X11 應用程å¼ã€‚</string>
<object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.100000e+01</double>
+ <double key="NSSize">11</double>
<int key="NSfFlags">3100</int>
</object>
<string key="NSPlaceholderString"/>
@@ -472,9 +472,9 @@
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="281801621">
+ <object class="NSColor" key="NSColor" id="590688762">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="930815747">
@@ -493,7 +493,6 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{36, 176}, {385, 28}}</string>
<reference key="NSSuperview" ref="596750588"/>
- <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="649334366">
<int key="NSCellFlags">67239424</int>
@@ -512,17 +511,16 @@ vKDnmoTkuK3plpPmiJblj7PpgormjInpiJXjgIIKA</string>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{18, 112}, {402, 18}}</string>
<reference key="NSSuperview" ref="596750588"/>
- <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="940564599">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5ZWf55SoIFgxMSDkuIvnmoTmjInpjbXlsI3mh4npjbU</string>
+ <string key="NSContents">啟用 X11 下的按éµå°æ‡‰éµ</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="842100515"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -535,13 +533,11 @@ vKDnmoTkuK3plpPmiJblj7PpgormjInpiJXjgIIKA</string>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{36, 141}, {385, 14}}</string>
<reference key="NSSuperview" ref="596750588"/>
- <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="666057093">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5YWB6Kix6Ly45YWl5rOV6YG45Zau55qE5pu05YuV6KaG5a+r55uu5YmN55qEIFgxMSDmjInpjbXlsI3m
-h4njgII</string>
+ <string key="NSContents">å…許輸入法é¸å–®çš„更動覆寫目å‰çš„ X11 按éµå°æ‡‰ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="31160162"/>
@@ -554,17 +550,16 @@ h4njgII</string>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{18, 161}, {402, 18}}</string>
<reference key="NSSuperview" ref="596750588"/>
- <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="967619578">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5L6d54Wn57O757Wx6Y2155uk5L2I5bGAA</string>
+ <string key="NSContents">ä¾ç…§ç³»çµ±éµç›¤ä½ˆå±€</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -575,9 +570,8 @@ h4njgII</string>
</object>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
<reference key="NSSuperview" ref="448510093"/>
- <reference key="NSWindow"/>
</object>
- <string type="base64-UTF8" key="NSLabel">6Ly45YWlA</string>
+ <string key="NSLabel">輸入</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -599,12 +593,12 @@ h4njgII</string>
<object class="NSButtonCell" key="NSCell" id="1016069354">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5L2/55So57O757Wx5o+Q56S65pWI5p6cA</string>
+ <string key="NSContents">使用系統æ示效果</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="418227126"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -621,9 +615,7 @@ h4njgII</string>
<object class="NSTextFieldCell" key="NSCell" id="624655599">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOeahOWXtuiBsuWwh+acg+S9v+eUqOaomea6lueahOezu+e1seaPkOekuuiBsu+8jOWNs+aCqOWc
-qOezu+e1seWBj+WlveioreWumumdouadv+eahOKAnOmfs+aViOKAneS4reioreWumueahOiBsumfs+OA
-gg</string>
+ <string key="NSContents">X11 çš„å—¶è²å°‡æœƒä½¿ç”¨æ¨™æº–的系統æ示è²ï¼Œå³æ‚¨åœ¨ç³»çµ±å好設定é¢æ¿çš„“音效â€ä¸­è¨­å®šçš„è²éŸ³ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="1039016593"/>
@@ -646,7 +638,7 @@ gg</string>
<int key="NSButtonFlags2">1</int>
<object class="NSFont" key="NSAlternateImage">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
+ <double key="NSSize">13</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSAlternateContents"/>
@@ -657,13 +649,13 @@ gg</string>
<int key="NSPeriodicInterval">75</int>
<object class="NSMenuItem" key="NSMenuItem" id="616492372">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">5L6G6Ieq6J6i5bmVA</string>
+ <string key="NSTitle">來自螢幕</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<int key="NSState">1</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">-1</int>
<reference key="NSTarget" ref="633115429"/>
@@ -678,41 +670,42 @@ gg</string>
<reference ref="616492372"/>
<object class="NSMenuItem" id="759499526">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">MjU2IOeorumhj+iJsg</string>
+ <string key="NSTitle">256 種é¡è‰²</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">8</int>
<reference key="NSTarget" ref="633115429"/>
</object>
<object class="NSMenuItem" id="543935434">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">5pW46JCs56iu6aGP6ImyA</string>
+ <string key="NSTitle">數è¬ç¨®é¡è‰²</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">15</int>
<reference key="NSTarget" ref="633115429"/>
</object>
<object class="NSMenuItem" id="836673018">
<reference key="NSMenu" ref="341113515"/>
- <string type="base64-UTF8" key="NSTitle">5Y2D6JCs56iu6aGP6ImyA</string>
+ <string key="NSTitle">åƒè¬ç¨®é¡è‰²</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">24</int>
<reference key="NSTarget" ref="633115429"/>
</object>
</object>
+ <reference key="NSMenuFont" ref="463863101"/>
</object>
<int key="NSPreferredEdge">3</int>
<bool key="NSUsesItemFromMenu">YES</bool>
@@ -746,7 +739,7 @@ gg</string>
<object class="NSTextFieldCell" key="NSCell" id="311969422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5q2k6YG46aCF5bCH5pyD5ZyoIFgxMSDlho3mrKHllZ/li5XlvoznlJ/mlYjjgII</string>
+ <string key="NSContents">æ­¤é¸é …將會在 X11 å†æ¬¡å•Ÿå‹•å¾Œç”Ÿæ•ˆã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="86150604"/>
@@ -763,12 +756,12 @@ gg</string>
<object class="NSButtonCell" key="NSCell" id="631531164">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5YWo6J6i5bmV5qih5byPA</string>
+ <string key="NSContents">全螢幕模å¼</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477203622"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -785,12 +778,12 @@ gg</string>
<object class="NSButtonCell" key="NSCell" id="917248662">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">6Ieq5YuV5Lul5YWo6J6i5bmV5qih5byP6aGv56S66YG45Zau5YiXA</string>
+ <string key="NSContents">自動以全螢幕模å¼é¡¯ç¤ºé¸å–®åˆ—</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -807,8 +800,7 @@ gg</string>
<object class="NSTextFieldCell" key="NSCell" id="761107402">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5ZWf55SoIFgxMSByb290IOimlueql+OAguS9v+eUqCBDb21tYW5kICsgT3B0aW9uICsgQSDpjbXnm6Tn
-tYTlkIjkvobpgLLlhaXlkozpm6LplovlhajonqLluZXmqKHlvI/jgII</string>
+ <string key="NSContents">啟用 X11 root 視窗。使用 Command + Option + A éµç›¤çµ„åˆä¾†é€²å…¥å’Œé›¢é–‹å…¨èž¢å¹•æ¨¡å¼ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="298603383"/>
@@ -819,7 +811,7 @@ tYTlkIjkvobpgLLlhaXlkozpm6LplovlhajonqLluZXmqKHlvI/jgII</string>
</object>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">6Ly45Ye6A</string>
+ <string key="NSLabel">輸出</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -841,12 +833,12 @@ tYTlkIjkvobpgLLlhaXlkozpm6LplovlhajonqLluZXmqKHlvI/jgII</string>
<object class="NSButtonCell" key="NSCell" id="718083688">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5ZWf55So5ZCM5q2l5Yqf6IO9A</string>
+ <string key="NSContents">啟用åŒæ­¥åŠŸèƒ½</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -863,9 +855,7 @@ tYTlkIjkvobpgLLlhaXlkozpm6LplovlhajonqLluZXmqKHlvI/jgII</string>
<object class="NSTextFieldCell" key="NSCell" id="572508492">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5ZWf55So4oCc5ou36LKd4oCd6YG45Zau6aCF55uu77yM5Lim5YWB6KixIE9TWOKAnOWJquiyvOadv+KA
-neiIhyBYMTEgQ0xJUEJPQVJEIOS5i+mWk+eahOWQjOatpe+8jOS7peWPiiBQUklNQVJZIOe3qeihneOA
-gg</string>
+ <string key="NSContents">啟用“拷è²â€é¸å–®é …目,並å…許 OSX“剪貼æ¿â€èˆ‡ X11 CLIPBOARD 之間的åŒæ­¥ï¼Œä»¥åŠ PRIMARY ç·©è¡ã€‚</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="386152084"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -881,12 +871,12 @@ gg</string>
<object class="NSButtonCell" key="NSCell" id="501304422">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5pu05pawIENMSVBCT0FSRCDnmoTmm7Tli5XjgII</string>
+ <string key="NSContents">當“剪貼æ¿â€æ›´æ”¹æ™‚æ›´æ–° CLIPBOARD</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="477050998"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -903,13 +893,12 @@ gg</string>
<object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">55W24oCc5Ymq6LK85p2/4oCd5pu05pS55pmC5pu05pawIFBSSU1BUlnvvIjkuK3plpPpu57mjInvvInj
-gII</string>
+ <string key="NSContents">當“剪貼æ¿â€æ›´æ”¹æ™‚æ›´æ–° PRIMARY(中間點按)</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -926,12 +915,12 @@ gII</string>
<object class="NSButtonCell" key="NSCell" id="897099877">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">55W26YG45Y+W5paw5paH5a2X5pmC77yM56uL5Y2z5pu05paw4oCc5Ymq6LK85p2/4oCd44CCA</string>
+ <string key="NSContents">當é¸å–新文字時,立å³æ›´æ–°â€œå‰ªè²¼æ¿â€</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="1002778833"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -948,12 +937,12 @@ gII</string>
<object class="NSButtonCell" key="NSCell" id="619977658">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">55W24oCc5Ymq6LK85p2/4oCd5pu05pS55pmC5pu05pawIENMSVBCT0FSROOAgg</string>
+ <string key="NSContents">當“剪貼æ¿â€æ›´æ”¹æ™‚æ›´æ–° CLIPBOARD</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="487809555"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -970,8 +959,7 @@ gII</string>
<object class="NSTextFieldCell" key="NSCell" id="461823902">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">6Iul5oKo5oOz5L2/55SoIHhjbGlwYm9hcmTjgIFrbGlwcGVyIOaIluS7u+S9leWFtuS7liBYMTEg5Ymq
-6LK85p2/566h55CG56iL5byP77yM6KuL5YGc55So5q2k6YG46aCF44CCA</string>
+ <string key="NSContents">若您想使用 xclipboardã€klipper 或任何其他 X11 剪貼æ¿ç®¡ç†ç¨‹å¼ï¼Œè«‹åœç”¨æ­¤é¸é …。</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="620944856"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -987,8 +975,7 @@ gII</string>
<object class="NSTextFieldCell" key="NSCell" id="994587858">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">55Sx5pa8IFgxMSDpgJroqIrljZTlrprnmoTpmZDliLbvvIzmraTpgbjpoIXlj6/og73nhKHms5XlnKjm
-n5Dkupvmh4nnlKjnqIvlvI/oo6Hkvb/nlKjjgII</string>
+ <string key="NSContents">由於 X11 通訊å”定的é™åˆ¶ï¼Œæ­¤é¸é …å¯èƒ½ç„¡æ³•åœ¨æŸäº›æ‡‰ç”¨ç¨‹å¼è£¡ä½¿ç”¨ã€‚</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="522511724"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -998,7 +985,7 @@ n5Dkupvmh4nnlKjnqIvlvI/oo6Hkvb/nlKjjgII</string>
</object>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">5Ymq6LK85p2/A</string>
+ <string key="NSLabel">剪貼æ¿</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1020,12 +1007,12 @@ n5Dkupvmh4nnlKjnqIvlvI/oo6Hkvb/nlKjjgII</string>
<object class="NSButtonCell" key="NSCell" id="259618205">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">56m/6YCP6Iez5pyq5ZWT55So55qE6KaW56qXA</string>
+ <string key="NSContents">ç©¿é€è‡³æœªå•“用的視窗</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="657659108"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1042,8 +1029,7 @@ n5Dkupvmh4nnlKjnqIvlvI/oo6Hkvb/nlKjjgII</string>
<object class="NSTextFieldCell" key="NSCell" id="399127858">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">55W25ZWT55So5pmC77yM5oyJ5LiA5LiL5pyq5ZWT55So55qE6KaW56qX5bCH5pyD5L2/5ruR6byg5oyJ
-6Y2156m/6YCP6Iez6Kmy6KaW56qX5Lim5bCH5YW25ZWT55So44CCA</string>
+ <string key="NSContents">當啓用時,按一下未啓用的視窗將會使滑鼠按éµç©¿é€è‡³è©²è¦–窗並將其啓用。</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="290578835"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1059,12 +1045,12 @@ n5Dkupvmh4nnlKjnqIvlvI/oo6Hkvb/nlKjjgII</string>
<object class="NSButtonCell" key="NSCell" id="959555182">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">54Sm6bue6Zqo6JGX5ruR6byg56e75YuVA</string>
+ <string key="NSContents">焦點隨著滑鼠移動</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1081,8 +1067,7 @@ n5Dkupvmh4nnlKjnqIvlvI/oo6Hkvb/nlKjjgII</string>
<object class="NSTextFieldCell" key="NSCell" id="183409141">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">WDExIOimlueql+eEpum7nuacg+i3n+maqOa4uOaomeenu+WLleOAgumAmeaoo+acg+acieS4gOS6m+eb
-uOWPjeeahOaViOaenOOAgg</string>
+ <string key="NSContents">X11 視窗焦點會跟隨游標移動。這樣會有一些相å的效果。</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="138261120"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1098,12 +1083,12 @@ uOWPjeeahOaViOaenOOAgg</string>
<object class="NSButtonCell" key="NSCell" id="556463187">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">6K6T5paw6KaW56qX5Y+W5b6X54Sm6bueA</string>
+ <string key="NSContents">讓新視窗å–得焦點</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="128352289"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1120,8 +1105,7 @@ uOWPjeeahOaViOaenOOAgg</string>
<object class="NSTextFieldCell" key="NSCell" id="989804990">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">55W25ZWT55So5pmC77yM5paw5bu655qEIFgxMSDoppbnqpflsIfmnIPkvb8gWDExLmFwcO+8iOiAjOS4
-jeaYryBGaW5kZXIuYXBw44CB57WC56uv5qmfLmFwcCDnrYnvvInnp7voh7PmnIDliY3jgII</string>
+ <string key="NSContents">當啓用時,新建的 X11 視窗將會使 X11.app(而ä¸æ˜¯ Finder.appã€çµ‚端機.app 等)移至最å‰ã€‚</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="57161931"/>
<reference key="NSBackgroundColor" ref="57160303"/>
@@ -1131,7 +1115,7 @@ jeaYryBGaW5kZXIuYXBw44CB57WC56uv5qmfLmFwcCDnrYnvvInnp7voh7PmnIDliY3jgII</string>
</object>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">6KaW56qXA</string>
+ <string key="NSLabel">視窗</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1150,12 +1134,12 @@ jeaYryBGaW5kZXIuYXBw44CB57WC56uv5qmfLmFwcCDnrYnvvInnp7voh7PmnIDliY3jgII</string>
<object class="NSButtonCell" key="NSCell" id="189594322">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">6KqN6K2J6YCj57eaA</string>
+ <string key="NSContents">èªè­‰é€£ç·š</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="989050925"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1172,12 +1156,12 @@ jeaYryBGaW5kZXIuYXBw44CB57WC56uv5qmfLmFwcCDnrYnvvInnp7voh7PmnIDliY3jgII</string>
<object class="NSButtonCell" key="NSCell" id="489340979">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5YWB6Kix5b6e57ay6Lev55So5oi256uv6YCj57eaA</string>
+ <string key="NSContents">å…許從網路用戶端連線</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="700826966"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="229425723"/>
+ <reference key="NSNormalImage" ref="339780660"/>
<reference key="NSAlternateImage" ref="391434389"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1194,9 +1178,7 @@ jeaYryBGaW5kZXIuYXBw44CB57WC56uv5qmfLmFwcCDnrYnvvInnp7voh7PmnIDliY3jgII</string>
<object class="NSTextFieldCell" key="NSCell" id="53243865">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">5ZWf5YuVIFgxMSDlsIfmnIPoo73kvZwgWGF1dGhvcml0eSDlj5bnlKjmjqfliLbmjInpjbXjgILoi6Xn
-s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
-5pyD5LukIFgxMSDmh4nnlKjnqIvlvI/nhKHms5XllZ/li5XjgII</string>
+ <string key="NSContents">å•Ÿå‹• X11 將會製作 Xauthority å–用控制按éµã€‚若系統的 IP ä½å€æ›´å‹•ï¼Œé€™äº›éµå°‡æœƒç„¡æ•ˆï¼Œé€™å¯èƒ½æœƒä»¤ X11 應用程å¼ç„¡æ³•å•Ÿå‹•ã€‚</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="168436707"/>
@@ -1213,9 +1195,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<object class="NSTextFieldCell" key="NSCell" id="390084685">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">6Iul5ZWf55So77yM4oCc6KqN6K2J6YCj57ea4oCd5b+F6aCI5Lmf6KKr5ZWf55So5L6G56K65L+d57O7
-57Wx5a6J5YWo44CC55W25YGc55So5pmC77yM5LiN5pyD5YWB6Kix5L6G6Ieq6YGg56uv5oeJ55So56iL
-5byP55qE6YCj57ea44CCA</string>
+ <string key="NSContents">若啟用,“èªè­‰é€£ç·šâ€å¿…須也被啟用來確ä¿ç³»çµ±å®‰å…¨ã€‚當åœç”¨æ™‚,ä¸æœƒå…許來自é ç«¯æ‡‰ç”¨ç¨‹å¼çš„連線。</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="363817195"/>
@@ -1232,7 +1212,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<object class="NSTextFieldCell" key="NSCell" id="283628678">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int>
- <string type="base64-UTF8" key="NSContents">6YCZ5Lqb6YG46aCF5bCH5pyD5ZyoIFgxMSDkuIvmrKHllZ/li5XlvoznlJ/mlYjjgII</string>
+ <string key="NSContents">這些é¸é …將會在 X11 下次啟動後生效。</string>
<reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="223835729"/>
@@ -1243,7 +1223,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
</object>
<string key="NSFrame">{{10, 33}, {438, 246}}</string>
</object>
- <string type="base64-UTF8" key="NSLabel">5a6J5YWo5oCnA</string>
+ <string key="NSLabel">安全性</string>
<reference key="NSColor" ref="57160303"/>
<reference key="NSTabView" ref="448510093"/>
</object>
@@ -1260,12 +1240,10 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
</object>
</object>
<string key="NSFrameSize">{484, 308}</string>
- <reference key="NSSuperview"/>
- <reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string>
</object>
<object class="NSWindowTemplate" id="604417141">
@@ -1273,12 +1251,12 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{360, 400}, {454, 271}}</string>
<int key="NSWTFlags">1350041600</int>
- <string type="base64-UTF8" key="NSWindowTitle">WDExIOaHieeUqOeoi+W8j+mBuOWWrg</string>
+ <string key="NSWindowTitle">X11 應用程å¼é¸å–®</string>
<string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/>
@@ -1294,12 +1272,16 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<object class="NSButtonCell" key="NSCell" id="143554520">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">137887744</int>
- <string type="base64-UTF8" key="NSContents">6KSH6KO9A</string>
+ <string key="NSContents">複製</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="671954382"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <object class="NSFont" key="NSAlternateImage" id="549406736">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1317,12 +1299,12 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<object class="NSButtonCell" key="NSCell" id="8201128">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">137887744</int>
- <string type="base64-UTF8" key="NSContents">56e76ZmkA</string>
+ <string key="NSContents">移除</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="492358940"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1363,13 +1345,13 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableColumn" id="938444323">
- <double key="NSWidth">1.227310e+02</double>
- <double key="NSMinWidth">6.273100e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">122.73099999999999</double>
+ <double key="NSMinWidth">62.731000000000002</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5ZCN56ixA</string>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">å稱</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int>
@@ -1401,13 +1383,13 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<reference key="NSTableView" ref="905092943"/>
</object>
<object class="NSTableColumn" id="84282687">
- <double key="NSWidth">1.000000e+02</double>
- <double key="NSMinWidth">4.000000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">100</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5oyH5LukA</string>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">指令</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="113872566"/>
<reference key="NSTextColor" ref="249576247"/>
@@ -1428,13 +1410,13 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<reference key="NSTableView" ref="905092943"/>
</object>
<object class="NSTableColumn" id="242608782">
- <double key="NSWidth">6.900000e+01</double>
- <double key="NSMinWidth">1.000000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
+ <double key="NSWidth">69</double>
+ <double key="NSMinWidth">10</double>
+ <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string type="base64-UTF8" key="NSContents">5b+r6YCf6Y21A</string>
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">快速éµ</string>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int>
@@ -1450,7 +1432,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string key="NSContents">Text Cell</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.200000e+01</double>
+ <double key="NSSize">12</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSPlaceholderString"/>
@@ -1460,7 +1442,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="281801621"/>
+ <reference key="NSColor" ref="590688762"/>
</object>
<reference key="NSTextColor" ref="930815747"/>
</object>
@@ -1470,8 +1452,8 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<reference key="NSTableView" ref="905092943"/>
</object>
</object>
- <double key="NSIntercellSpacingWidth">3.000000e+00</double>
- <double key="NSIntercellSpacingHeight">2.000000e+00</double>
+ <double key="NSIntercellSpacingWidth">3</double>
+ <double key="NSIntercellSpacingHeight">2</double>
<reference key="NSBackgroundColor" ref="822946413"/>
<object class="NSColor" key="NSGridColor">
<int key="NSColorSpace">6</int>
@@ -1482,12 +1464,15 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<bytes key="NSWhite">MC41AA</bytes>
</object>
</object>
- <double key="NSRowHeight">1.700000e+01</double>
+ <double key="NSRowHeight">17</double>
<int key="NSTvFlags">1379958784</int>
+ <reference key="NSDelegate"/>
+ <reference key="NSDataSource"/>
<int key="NSColumnAutoresizingStyle">1</int>
<int key="NSDraggingSourceMaskForLocal">-1</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool>
+ <int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
<string key="NSFrame">{{1, 17}, {301, 198}}</string>
@@ -1504,7 +1489,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">9.949238e-01</double>
+ <double key="NSPercent">0.99492380000000002</double>
</object>
<object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1514,7 +1499,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">6.885246e-01</double>
+ <double key="NSPercent">0.68852460000000004</double>
</object>
<object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/>
@@ -1552,12 +1537,12 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<object class="NSButtonCell" key="NSCell" id="1025474039">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">137887744</int>
- <string type="base64-UTF8" key="NSContents">5Yqg5YWl6aCF55uuA</string>
+ <string key="NSContents">加入項目</string>
<reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="463863101"/>
+ <reference key="NSAlternateImage" ref="549406736"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
@@ -1571,11 +1556,11 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string>
</object>
<object class="NSMenu" id="294137138">
- <string type="base64-UTF8" key="NSTitle">6YG45ZauA</string>
+ <string key="NSTitle">é¸å–®</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="318286212">
@@ -1586,20 +1571,20 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="511651072">
<reference key="NSMenu" ref="294137138"/>
- <string type="base64-UTF8" key="NSTitle">5oeJ55So56iL5byPA</string>
+ <string key="NSTitle">應用程å¼</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="48278059">
- <string type="base64-UTF8" key="NSTitle">5oeJ55So56iL5byPA</string>
+ <string key="NSTitle">應用程å¼</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="563798000">
@@ -1610,17 +1595,17 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
<object class="NSMenuItem" id="1032342329">
<reference key="NSMenu" ref="48278059"/>
- <string type="base64-UTF8" key="NSTitle">6Ieq5a6a4ouvA</string>
+ <string key="NSTitle">自定⋯</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="721983472"/>
- <reference key="NSMixedImage" ref="5865096"/>
+ <reference key="NSOnImage" ref="531645050"/>
+ <reference key="NSMixedImage" ref="351811234"/>
</object>
</object>
</object>
@@ -2190,28 +2175,26 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
- <object class="NSArray" key="object" id="330408435">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="object" ref="0"/>
<reference key="children" ref="904585544"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="815810918"/>
- <reference key="parent" ref="330408435"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="941939442"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="951368722"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
@@ -2225,7 +2208,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<reference ref="868031522"/>
<reference ref="551174276"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">MainMenu</string>
</object>
<object class="IBObjectRecord">
@@ -2470,7 +2453,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<object class="IBObjectRecord">
<int key="objectID">196</int>
<reference key="object" ref="485884620"/>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">X11Controller</string>
</object>
<object class="IBObjectRecord">
@@ -2480,7 +2463,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="941366957"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">PrefsPanel</string>
</object>
<object class="IBObjectRecord">
@@ -2744,7 +2727,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="85544634"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">EditPrograms</string>
</object>
<object class="IBObjectRecord">
@@ -2767,7 +2750,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<reference ref="318286212"/>
<reference ref="511651072"/>
</object>
- <reference key="parent" ref="330408435"/>
+ <reference key="parent" ref="0"/>
<string key="objectName">DockMenu</string>
</object>
<object class="IBObjectRecord">
@@ -3319,23 +3302,18 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
+ <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>-3.ImportedFromIB2</string>
<string>100292.IBPluginDependency</string>
<string>100293.IBPluginDependency</string>
<string>100295.IBPluginDependency</string>
- <string>100295.IBPropertyAccessControl</string>
<string>100295.IBShouldRemoveOnLegacySave</string>
<string>100310.IBPluginDependency</string>
- <string>100310.IBPropertyAccessControl</string>
<string>100363.IBPluginDependency</string>
<string>100364.IBPluginDependency</string>
<string>100365.IBPluginDependency</string>
- <string>100365.IBPropertyAccessControl</string>
<string>100368.IBPluginDependency</string>
<string>100369.IBPluginDependency</string>
<string>100370.IBPluginDependency</string>
@@ -3350,7 +3328,6 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string>100385.IBPluginDependency</string>
<string>100386.IBPluginDependency</string>
<string>100541.IBPluginDependency</string>
- <string>100541.IBPropertyAccessControl</string>
<string>100543.IBPluginDependency</string>
<string>129.IBPluginDependency</string>
<string>129.ImportedFromIB2</string>
@@ -3367,7 +3344,6 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string>144.IBPluginDependency</string>
<string>144.ImportedFromIB2</string>
<string>145.IBPluginDependency</string>
- <string>145.IBPropertyAccessControl</string>
<string>145.ImportedFromIB2</string>
<string>149.IBPluginDependency</string>
<string>149.ImportedFromIB2</string>
@@ -3383,27 +3359,21 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string>169.editorWindowContentRectSynchronizationRect</string>
<string>19.IBPluginDependency</string>
<string>19.ImportedFromIB2</string>
- <string>196.IBPluginDependency</string>
<string>196.ImportedFromIB2</string>
<string>200295.IBPluginDependency</string>
- <string>200295.IBPropertyAccessControl</string>
<string>200295.IBShouldRemoveOnLegacySave</string>
<string>203.IBPluginDependency</string>
- <string>203.IBPropertyAccessControl</string>
<string>203.ImportedFromIB2</string>
<string>204.IBPluginDependency</string>
- <string>204.IBPropertyAccessControl</string>
<string>204.ImportedFromIB2</string>
<string>23.IBPluginDependency</string>
- <string>23.IBPropertyAccessControl</string>
<string>23.ImportedFromIB2</string>
<string>24.IBEditorWindowLastContentRect</string>
<string>24.IBPluginDependency</string>
<string>24.ImportedFromIB2</string>
<string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string>
- <string>244.IBPropertyAccessControl</string>
- <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
+ <string>244.IBPluginDependency</string>
<string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string>
<string>244.editorWindowContentRectSynchronizationRect</string>
@@ -3412,7 +3382,6 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string>244.windowTemplate.maxSize</string>
<string>244.windowTemplate.minSize</string>
<string>245.IBPluginDependency</string>
- <string>245.IBPropertyAccessControl</string>
<string>245.ImportedFromIB2</string>
<string>269.IBPluginDependency</string>
<string>269.ImportedFromIB2</string>
@@ -3423,7 +3392,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string>272.IBPluginDependency</string>
<string>272.ImportedFromIB2</string>
<string>285.IBEditorWindowLastContentRect</string>
- <string>285.IBPropertyAccessControl</string>
+ <string>285.IBPluginDependency</string>
<string>285.IBViewEditorWindowController.showingBoundsRectangles</string>
<string>285.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>285.IBWindowTemplateEditedContentRect</string>
@@ -3434,202 +3403,137 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string>285.windowTemplate.maxSize</string>
<string>285.windowTemplate.minSize</string>
<string>286.IBPluginDependency</string>
- <string>286.IBPropertyAccessControl</string>
<string>286.ImportedFromIB2</string>
<string>29.IBEditorWindowLastContentRect</string>
<string>29.IBPluginDependency</string>
<string>29.ImportedFromIB2</string>
<string>29.editorWindowContentRectSynchronizationRect</string>
<string>292.IBPluginDependency</string>
- <string>292.IBPropertyAccessControl</string>
<string>292.ImportedFromIB2</string>
<string>293.IBPluginDependency</string>
- <string>293.IBPropertyAccessControl</string>
<string>293.ImportedFromIB2</string>
<string>295.IBPluginDependency</string>
- <string>295.IBPropertyAccessControl</string>
<string>295.ImportedFromIB2</string>
<string>296.IBPluginDependency</string>
- <string>296.IBPropertyAccessControl</string>
<string>296.ImportedFromIB2</string>
<string>297.IBPluginDependency</string>
- <string>297.IBPropertyAccessControl</string>
<string>297.ImportedFromIB2</string>
<string>298.IBPluginDependency</string>
- <string>298.IBPropertyAccessControl</string>
<string>298.ImportedFromIB2</string>
<string>300295.IBPluginDependency</string>
- <string>300295.IBPropertyAccessControl</string>
<string>300295.IBShouldRemoveOnLegacySave</string>
<string>300330.IBPluginDependency</string>
- <string>300330.IBPropertyAccessControl</string>
<string>300330.ImportedFromIB2</string>
<string>300337.IBPluginDependency</string>
- <string>300337.IBPropertyAccessControl</string>
<string>300337.ImportedFromIB2</string>
<string>300338.IBPluginDependency</string>
- <string>300338.IBPropertyAccessControl</string>
<string>300338.ImportedFromIB2</string>
<string>300358.IBPluginDependency</string>
- <string>300358.IBPropertyAccessControl</string>
<string>300358.ImportedFromIB2</string>
<string>300359.IBPluginDependency</string>
- <string>300359.IBPropertyAccessControl</string>
<string>300359.ImportedFromIB2</string>
<string>300360.IBPluginDependency</string>
- <string>300360.IBPropertyAccessControl</string>
<string>300361.IBPluginDependency</string>
- <string>300361.IBPropertyAccessControl</string>
<string>300362.IBPluginDependency</string>
- <string>300362.IBPropertyAccessControl</string>
<string>300362.ImportedFromIB2</string>
<string>300363.IBPluginDependency</string>
- <string>300363.IBPropertyAccessControl</string>
<string>300364.IBPluginDependency</string>
- <string>300364.IBPropertyAccessControl</string>
<string>300364.ImportedFromIB2</string>
<string>300365.IBPluginDependency</string>
- <string>300365.IBPropertyAccessControl</string>
<string>300368.IBPluginDependency</string>
- <string>300368.IBPropertyAccessControl</string>
<string>300368.ImportedFromIB2</string>
<string>300369.IBPluginDependency</string>
- <string>300369.IBPropertyAccessControl</string>
<string>300370.IBPluginDependency</string>
- <string>300370.IBPropertyAccessControl</string>
<string>300370.ImportedFromIB2</string>
<string>300371.IBPluginDependency</string>
- <string>300371.IBPropertyAccessControl</string>
<string>300421.IBPluginDependency</string>
- <string>300421.IBPropertyAccessControl</string>
<string>300421.ImportedFromIB2</string>
<string>300422.IBPluginDependency</string>
- <string>300422.IBPropertyAccessControl</string>
<string>300422.ImportedFromIB2</string>
<string>300423.IBPluginDependency</string>
- <string>300423.IBPropertyAccessControl</string>
<string>300423.ImportedFromIB2</string>
<string>300424.IBPluginDependency</string>
- <string>300424.IBPropertyAccessControl</string>
<string>300424.ImportedFromIB2</string>
<string>300440.IBPluginDependency</string>
- <string>300440.IBPropertyAccessControl</string>
<string>300441.IBPluginDependency</string>
- <string>300441.IBPropertyAccessControl</string>
<string>300447.IBPluginDependency</string>
- <string>300447.IBPropertyAccessControl</string>
<string>300447.ImportedFromIB2</string>
<string>300450.IBPluginDependency</string>
- <string>300450.IBPropertyAccessControl</string>
<string>300451.IBPluginDependency</string>
- <string>300451.IBPropertyAccessControl</string>
<string>300451.ImportedFromIB2</string>
<string>300452.IBPluginDependency</string>
- <string>300452.IBPropertyAccessControl</string>
<string>300453.IBPluginDependency</string>
- <string>300453.IBPropertyAccessControl</string>
<string>300453.ImportedFromIB2</string>
<string>300454.IBPluginDependency</string>
- <string>300454.IBPropertyAccessControl</string>
<string>300455.IBPluginDependency</string>
- <string>300455.IBPropertyAccessControl</string>
<string>300455.ImportedFromIB2</string>
<string>300456.IBPluginDependency</string>
- <string>300456.IBPropertyAccessControl</string>
<string>300457.IBPluginDependency</string>
- <string>300457.IBPropertyAccessControl</string>
<string>300457.ImportedFromIB2</string>
<string>300458.IBPluginDependency</string>
- <string>300458.IBPropertyAccessControl</string>
<string>300459.IBPluginDependency</string>
- <string>300459.IBPropertyAccessControl</string>
<string>300459.ImportedFromIB2</string>
<string>300460.IBPluginDependency</string>
- <string>300460.IBPropertyAccessControl</string>
<string>300472.IBPluginDependency</string>
- <string>300472.IBPropertyAccessControl</string>
<string>300472.ImportedFromIB2</string>
<string>300473.IBPluginDependency</string>
- <string>300473.IBPropertyAccessControl</string>
<string>305.IBPluginDependency</string>
<string>305.ImportedFromIB2</string>
<string>310.IBPluginDependency</string>
- <string>310.IBPropertyAccessControl</string>
<string>310.ImportedFromIB2</string>
<string>348.IBPluginDependency</string>
- <string>348.IBPropertyAccessControl</string>
<string>348.ImportedFromIB2</string>
<string>349.IBPluginDependency</string>
<string>349.ImportedFromIB2</string>
<string>350.IBPluginDependency</string>
- <string>350.IBPropertyAccessControl</string>
<string>350.ImportedFromIB2</string>
<string>351.IBPluginDependency</string>
- <string>351.IBPropertyAccessControl</string>
<string>351.ImportedFromIB2</string>
<string>352.IBPluginDependency</string>
<string>352.ImportedFromIB2</string>
<string>353.IBPluginDependency</string>
<string>353.ImportedFromIB2</string>
<string>354.IBPluginDependency</string>
- <string>354.IBPropertyAccessControl</string>
- <string>354.IBUserGuides</string>
<string>354.ImportedFromIB2</string>
<string>363.IBPluginDependency</string>
- <string>363.IBPropertyAccessControl</string>
<string>363.ImportedFromIB2</string>
<string>364.IBPluginDependency</string>
- <string>364.IBPropertyAccessControl</string>
<string>364.ImportedFromIB2</string>
<string>365.IBPluginDependency</string>
- <string>365.IBPropertyAccessControl</string>
<string>365.ImportedFromIB2</string>
<string>368.IBPluginDependency</string>
- <string>368.IBPropertyAccessControl</string>
<string>368.ImportedFromIB2</string>
<string>369.IBPluginDependency</string>
- <string>369.IBPropertyAccessControl</string>
<string>369.ImportedFromIB2</string>
<string>370.IBPluginDependency</string>
- <string>370.IBPropertyAccessControl</string>
<string>370.ImportedFromIB2</string>
<string>371.IBPluginDependency</string>
- <string>371.IBPropertyAccessControl</string>
<string>371.ImportedFromIB2</string>
<string>372.IBPluginDependency</string>
- <string>372.IBPropertyAccessControl</string>
<string>372.ImportedFromIB2</string>
<string>374.IBPluginDependency</string>
- <string>374.IBPropertyAccessControl</string>
<string>374.ImportedFromIB2</string>
<string>375.IBPluginDependency</string>
- <string>375.IBPropertyAccessControl</string>
<string>375.ImportedFromIB2</string>
<string>376.IBPluginDependency</string>
- <string>376.IBPropertyAccessControl</string>
<string>376.ImportedFromIB2</string>
<string>377.IBPluginDependency</string>
- <string>377.IBPropertyAccessControl</string>
<string>377.ImportedFromIB2</string>
<string>379.IBPluginDependency</string>
- <string>379.IBPropertyAccessControl</string>
<string>379.ImportedFromIB2</string>
<string>380.IBPluginDependency</string>
<string>380.ImportedFromIB2</string>
<string>381.IBPluginDependency</string>
<string>381.ImportedFromIB2</string>
<string>382.IBPluginDependency</string>
- <string>382.IBPropertyAccessControl</string>
<string>382.ImportedFromIB2</string>
<string>383.IBPluginDependency</string>
<string>383.ImportedFromIB2</string>
<string>384.IBPluginDependency</string>
<string>384.ImportedFromIB2</string>
<string>385.IBPluginDependency</string>
- <string>385.IBPropertyAccessControl</string>
<string>385.ImportedFromIB2</string>
<string>386.IBPluginDependency</string>
- <string>386.IBPropertyAccessControl</string>
<string>386.ImportedFromIB2</string>
<string>419.IBPluginDependency</string>
<string>419.ImportedFromIB2</string>
@@ -3654,21 +3558,16 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string>533.IBPluginDependency</string>
<string>533.ImportedFromIB2</string>
<string>535.IBPluginDependency</string>
- <string>535.IBPropertyAccessControl</string>
<string>535.ImportedFromIB2</string>
<string>536.IBPluginDependency</string>
<string>536.ImportedFromIB2</string>
<string>537.IBPluginDependency</string>
- <string>537.IBPropertyAccessControl</string>
<string>537.ImportedFromIB2</string>
<string>538.IBPluginDependency</string>
- <string>538.IBPropertyAccessControl</string>
<string>538.ImportedFromIB2</string>
<string>541.IBPluginDependency</string>
- <string>541.IBPropertyAccessControl</string>
<string>541.ImportedFromIB2</string>
<string>543.IBPluginDependency</string>
- <string>543.IBPropertyAccessControl</string>
<string>543.ImportedFromIB2</string>
<string>544.IBPluginDependency</string>
<string>544.ImportedFromIB2</string>
@@ -3681,13 +3580,10 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string>57.ImportedFromIB2</string>
<string>57.editorWindowContentRectSynchronizationRect</string>
<string>573.IBPluginDependency</string>
- <string>573.IBPropertyAccessControl</string>
<string>573.ImportedFromIB2</string>
<string>574.IBPluginDependency</string>
- <string>574.IBPropertyAccessControl</string>
<string>574.ImportedFromIB2</string>
<string>575.IBPluginDependency</string>
- <string>575.IBPropertyAccessControl</string>
<string>575.ImportedFromIB2</string>
<string>58.IBPluginDependency</string>
<string>58.ImportedFromIB2</string>
@@ -3697,20 +3593,17 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1" id="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="3" id="11"/>
- <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3725,358 +3618,270 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{168, 821}, {113, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{202, 626}, {154, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{271, 666}, {301, 153}}</string>
- <string>{{437, 548}, {484, 308}}</string>
- <reference ref="11"/>
- <boolean value="NO" id="6"/>
- <string>{{437, 548}, {484, 308}}</string>
- <reference ref="9"/>
- <string>{{184, 290}, {484, 308}}</string>
- <reference ref="6"/>
- <reference ref="9"/>
+ <string>{{437, 749}, {484, 308}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{437, 749}, {484, 308}}</string>
+ <integer value="1"/>
+ <string>{{184, 290}, {481, 345}}</string>
+ <integer value="0"/>
+ <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{58, 803}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{68, 585}, {454, 271}}</string>
- <reference ref="11"/>
- <reference ref="9"/>
- <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <integer value="1"/>
<string>{{68, 585}, {454, 271}}</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{433, 406}, {486, 327}}</string>
- <reference ref="6"/>
- <reference ref="9"/>
+ <integer value="0"/>
+ <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{145, 1011}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{67, 819}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <object class="NSMutableArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>{{79, 616}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="11"/>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <integer value="1"/>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -4084,9 +3889,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -4124,7 +3927,16 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">1</int>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>
diff --git a/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib
index 3f516a318..12c5a14e8 100644
--- a/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib
+++ b/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib
Binary files differ
diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index fdbdfe48c..7129ac61f 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -75,10 +75,6 @@
#include "darwinEvents.h"
#include "quartzKeyboard.h"
#include "quartz.h"
-//#include "darwinClut8.h"
-
-#include "GL/visualConfigs.h"
-
#ifdef ENABLE_DEBUG_LOG
FILE *debug_log_fp = NULL;
@@ -157,10 +153,6 @@ const int NUMFORMATS = sizeof(formats)/sizeof(formats[0]);
#define XORG_RELEASE "?"
#endif
-void DDXRingBell(int volume, int pitch, int duration) {
- // FIXME -- make some noise, yo
-}
-
void
DarwinPrintBanner(void)
{
@@ -185,18 +177,23 @@ static Bool DarwinSaveScreen(ScreenPtr pScreen, int on)
}
/*
- * DarwinAddScreen
+ * DarwinScreenInit
* This is a callback from dix during AddScreen() from InitOutput().
* Initialize the screen and communicate information about it back to dix.
*/
-static Bool DarwinAddScreen(int index, ScreenPtr pScreen, int argc, char **argv) {
+static Bool DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) {
int dpi;
static int foundIndex = 0;
Bool ret;
DarwinFramebufferPtr dfb;
// reset index of found screens for each server generation
- if (index == 0) foundIndex = 0;
+ if (index == 0) {
+ foundIndex = 0;
+
+ // reset the visual list
+ miClearVisualTypes();
+ }
// allocate space for private per screen storage
dfb = xalloc(sizeof(DarwinFramebufferRec));
@@ -210,9 +207,6 @@ static Bool DarwinAddScreen(int index, ScreenPtr pScreen, int argc, char **argv)
if (! ret)
return FALSE;
- // reset the visual list
- miClearVisualTypes();
-
// setup a single visual appropriate for our pixel type
if(!miSetVisualTypesAndMasks(dfb->depth, dfb->visuals, dfb->bitsPerRGB,
dfb->preferredCVC, dfb->redMask,
@@ -223,17 +217,10 @@ static Bool DarwinAddScreen(int index, ScreenPtr pScreen, int argc, char **argv)
// TODO: Make PseudoColor visuals not suck in TrueColor mode
// if(dfb->depth > 8)
// miSetVisualTypesAndMasks(8, PseudoColorMask, 8, PseudoColor, 0, 0, 0);
-
-#if 0
- /*
- * These aren't used anymore. xpr/xprScreen.c initializes the dfb struct
- * above based on the display properties.
- */
if(dfb->depth > 15)
- miSetVisualTypesAndMasks(15, LARGE_VISUALS, 5, TrueColor, 0x7c00, 0x03e0, 0x001f);
+ miSetVisualTypesAndMasks(15, TrueColorMask, 5, TrueColor, RM_ARGB(0,5,5,5), GM_ARGB(0,5,5,5), BM_ARGB(0,5,5,5));
if(dfb->depth > 24)
- miSetVisualTypesAndMasks(24, LARGE_VISUALS, 8, TrueColor, 0x00ff0000, 0x0000ff00, 0x000000ff);
-#endif
+ miSetVisualTypesAndMasks(24, TrueColorMask, 8, TrueColor, RM_ARGB(0,8,8,8), GM_ARGB(0,8,8,8), BM_ARGB(0,8,8,8));
miSetPixmapDepths();
@@ -255,29 +242,6 @@ static Bool DarwinAddScreen(int index, ScreenPtr pScreen, int argc, char **argv)
return FALSE;
}
-// ErrorF("Screen type: %d, %d=%d, %d=%d, %d=%d, %x=%x=%x, %x=%x=%x, %x=%x=%x\n", pScreen->visuals->class,
-// pScreen->visuals->offsetRed, dfb->bitsPerRGB * 2,
-// pScreen->visuals->offsetGreen, dfb->bitsPerRGB,
-// pScreen->visuals->offsetBlue, 0,
-// pScreen->visuals->redMask, dfb->redMask, ((1<<dfb->bitsPerRGB)-1) << pScreen->visuals->offsetRed,
-// pScreen->visuals->greenMask, dfb->greenMask, ((1<<dfb->bitsPerRGB)-1) << pScreen->visuals->offsetGreen,
-// pScreen->visuals->blueMask, dfb->blueMask, ((1<<dfb->bitsPerRGB)-1) << pScreen->visuals->offsetBlue);
-
- // set the RGB order correctly for TrueColor
-// if (dfb->bitsPerPixel > 8) {
-// for (i = 0, visual = pScreen->visuals; // someday we may have more than 1
-// i < pScreen->numVisuals; i++, visual++) {
-// if (visual->class == TrueColor) {
-// visual->offsetRed = bitsPerRGB * 2;
-// visual->offsetGreen = bitsPerRGB;
-// visual->offsetBlue = 0;
-// visual->redMask = ((1<<bitsPerRGB)-1) << visual->offsetRed;
-// visual->greenMask = ((1<<bitsPerRGB)-1) << visual->offsetGreen;
-// visual->blueMask = ((1<<bitsPerRGB)-1) << visual->offsetBlue;
-// }
-// }
-// }
-
#ifdef RENDER
if (! fbPictureInit(pScreen, 0, 0)) {
return FALSE;
@@ -302,21 +266,6 @@ static Bool DarwinAddScreen(int index, ScreenPtr pScreen, int argc, char **argv)
return FALSE;
}
- /* Set the colormap to the statically defined one if we're in 8 bit
- * mode and we're using a fixed color map. Essentially this translates
- * to Darwin/x86 in 8-bit mode.
- */
-// if(dfb->depth == 8) {
-// ColormapPtr map = RootlessGetColormap (pScreen);
-// for( i = 0; i < map->pVisual->ColormapEntries; i++ ) {
-// Entry *ent = map->red + i;
-// ErrorF("Setting lo %d -> r: %04x g: %04x b: %04x\n", i, darwinClut8[i].red, darwinClut8[i].green, darwinClut8[i].blue);
-// ent->co.local.red = darwinClut8[i].red;
-// ent->co.local.green = darwinClut8[i].green;
-// ent->co.local.blue = darwinClut8[i].blue;
-// }
-// }
-
dixScreenOrigins[index].x = dfb->x;
dixScreenOrigins[index].y = dfb->y;
@@ -614,7 +563,7 @@ DarwinAdjustScreenOrigins(ScreenInfo *pScreenInfo)
* The display mode dependent code gets called three times. The mode
* specific InitOutput routines are expected to discover the number
* of potentially useful screens and cache routes to them internally.
- * Inside DarwinAddScreen are two other mode specific calls.
+ * Inside DarwinScreenInit are two other mode specific calls.
* A mode specific AddScreen routine is called for each screen to
* actually initialize the screen with the ScreenPtr structure.
* After other screen setup has been done, a mode specific
@@ -634,16 +583,12 @@ void InitOutput( ScreenInfo *pScreenInfo, int argc, char **argv )
for (i = 0; i < NUMFORMATS; i++)
pScreenInfo->formats[i] = formats[i];
-#ifdef GLXEXT
- setVisualConfigs();
-#endif
-
// Discover screens and do mode specific initialization
QuartzInitOutput(argc, argv);
// Add screens
for (i = 0; i < darwinScreensFound; i++) {
- AddScreen( DarwinAddScreen, argc, argv );
+ AddScreen(DarwinScreenInit, argc, argv);
}
DarwinAdjustScreenOrigins(pScreenInfo);
diff --git a/hw/xquartz/darwin.h b/hw/xquartz/darwin.h
index 7fb9396e5..586044fba 100644
--- a/hw/xquartz/darwin.h
+++ b/hw/xquartz/darwin.h
@@ -36,22 +36,7 @@
#include "threadSafety.h"
-typedef struct {
- void *framebuffer;
- int x;
- int y;
- int width;
- int height;
- int pitch;
- int depth;
- int visuals;
- int bitsPerRGB;
- int bitsPerPixel;
- int preferredCVC;
- Pixel redMask;
- Pixel greenMask;
- Pixel blueMask;
-} DarwinFramebufferRec, *DarwinFramebufferPtr;
+#include "darwinfb.h"
// From darwin.c
void DarwinPrintBanner(void);
diff --git a/hw/xquartz/darwinClut8.h b/hw/xquartz/darwinClut8.h
deleted file mode 100644
index 8e914f3fd..000000000
--- a/hw/xquartz/darwinClut8.h
+++ /dev/null
@@ -1,531 +0,0 @@
-/*
- * Darwin default 8-bit Colormap for StaticColor
- */
-
-#ifndef _DARWIN_CLUT8_
-#define _DARWIN_CLUT8_
-
-#ifdef USE_NEW_CLUT
-
-static xColorItem darwinClut8[] = {
- { 0, 0xffff, 0xffff, 0xffff, 0, 0 },
- { 1, 0xfefe, 0xfefe, 0xfefe, 0, 0 },
- { 2, 0xfdfd, 0xfdfd, 0xfdfd, 0, 0 },
- { 3, 0xb8b8, 0x2727, 0x2b2b, 0, 0 },
- { 4, 0xfcfc, 0xfcfc, 0xfcfc, 0, 0 },
- { 5, 0xffff, 0xffff, 0x0, 0, 0 },
- { 6, 0xfafa, 0xfafa, 0xfafa, 0, 0 },
- { 7, 0xf9f9, 0xf9f9, 0xf9f9, 0, 0 },
- { 8, 0xf8f8, 0xf8f8, 0xf8f8, 0, 0 },
- { 9, 0xf7f7, 0xf7f7, 0xf7f7, 0, 0 },
- { 10, 0xf6f6, 0xf6f6, 0xf6f6, 0, 0 },
- { 11, 0xf5f5, 0xf5f5, 0xf5f5, 0, 0 },
- { 12, 0xf4f4, 0xf4f4, 0xf4f4, 0, 0 },
- { 13, 0xf2f2, 0xf2f2, 0xf2f2, 0, 0 },
- { 14, 0xf1f1, 0xf1f1, 0xf1f1, 0, 0 },
- { 15, 0x0, 0x0, 0x0, 0, 0 },
- { 16, 0xefef, 0xefef, 0xefef, 0, 0 },
- { 17, 0xeeee, 0xeeee, 0xeeee, 0, 0 },
- { 18, 0xeded, 0xeded, 0xeded, 0, 0 },
- { 19, 0xebeb, 0xebeb, 0xebeb, 0, 0 },
- { 20, 0xe8e8, 0xe8e8, 0xe8e8, 0, 0 },
- { 21, 0xe7e7, 0xe7e7, 0xe7e7, 0, 0 },
- { 22, 0xc9c9, 0x3838, 0x3e3e, 0, 0 },
- { 23, 0xe5e5, 0xe5e5, 0xe5e5, 0, 0 },
- { 24, 0xffff, 0x0, 0xffff, 0, 0 },
- { 25, 0xfbfb, 0xfbfb, 0xfbfb, 0, 0 },
- { 26, 0xdede, 0x6c6c, 0x7272, 0, 0 },
- { 27, 0xe0e0, 0xe0e0, 0xe0e0, 0, 0 },
- { 28, 0xe8e8, 0x8686, 0x9090, 0, 0 },
- { 29, 0xdede, 0xdede, 0xdede, 0, 0 },
- { 30, 0xdddd, 0xdddd, 0xdddd, 0, 0 },
- { 31, 0xd3d3, 0x7e7e, 0x8d8d, 0, 0 },
- { 32, 0xd9d9, 0xd9d9, 0xd9d9, 0, 0 },
- { 33, 0xf3f3, 0x9696, 0xa6a6, 0, 0 },
- { 34, 0xb1b1, 0x1c1c, 0x3939, 0, 0 },
- { 35, 0xffff, 0x0, 0x0, 0, 0 },
- { 36, 0xbebe, 0x5e5e, 0x7272, 0, 0 },
- { 37, 0xd3d3, 0xd3d3, 0xd3d3, 0, 0 },
- { 38, 0xc6c6, 0x2e2e, 0x6767, 0, 0 },
- { 39, 0xd1d1, 0xd1d1, 0xd1d1, 0, 0 },
- { 40, 0xa3a3, 0x606, 0x4545, 0, 0 },
- { 41, 0xcece, 0xcece, 0xcece, 0, 0 },
- { 42, 0xcccc, 0xcccc, 0xffff, 0, 0 },
- { 43, 0xcccc, 0xcccc, 0xcccc, 0, 0 },
- { 44, 0xc6c6, 0x8f8f, 0xa7a7, 0, 0 },
- { 45, 0xe1e1, 0xd3d3, 0xd9d9, 0, 0 },
- { 46, 0xcece, 0x9e9e, 0xb4b4, 0, 0 },
- { 47, 0xcaca, 0xcaca, 0xcaca, 0, 0 },
- { 48, 0xbfbf, 0x3f3f, 0x7d7d, 0, 0 },
- { 49, 0xc9c9, 0xc9c9, 0xc9c9, 0, 0 },
- { 50, 0xf4f4, 0x8989, 0xbebe, 0, 0 },
- { 51, 0xc6c6, 0xc6c6, 0xc6c6, 0, 0 },
- { 52, 0xd6d6, 0x5151, 0x9797, 0, 0 },
- { 53, 0xc9c9, 0x2c2c, 0x8484, 0, 0 },
- { 54, 0x9696, 0x1a1a, 0x6a6a, 0, 0 },
- { 55, 0xc2c2, 0xc2c2, 0xc2c2, 0, 0 },
- { 56, 0xf3f3, 0x6f6f, 0xc6c6, 0, 0 },
- { 57, 0xe5e5, 0x4c4c, 0xbbbb, 0, 0 },
- { 58, 0xb7b7, 0x5a5a, 0x9c9c, 0, 0 },
- { 59, 0xbfbf, 0xbfbf, 0xbfbf, 0, 0 },
- { 60, 0xbebe, 0xbebe, 0xbebe, 0, 0 },
- { 61, 0xbdbd, 0xbdbd, 0xbdbd, 0, 0 },
- { 62, 0xb8b8, 0x2121, 0xa2a2, 0, 0 },
- { 63, 0xd3d3, 0x4444, 0xc0c0, 0, 0 },
- { 64, 0xc2c2, 0x6666, 0xb7b7, 0, 0 },
- { 65, 0xf4f4, 0x6666, 0xe6e6, 0, 0 },
- { 66, 0xfcfc, 0x7373, 0xfdfd, 0, 0 },
- { 67, 0xb9b9, 0xb9b9, 0xb9b9, 0, 0 },
- { 68, 0xeaea, 0xdfdf, 0xeaea, 0, 0 },
- { 69, 0xd4d4, 0x7171, 0xd5d5, 0, 0 },
- { 70, 0xf9f9, 0x8b8b, 0xffff, 0, 0 },
- { 71, 0xf5f5, 0xadad, 0xffff, 0, 0 },
- { 72, 0xbcbc, 0x9292, 0xc2c2, 0, 0 },
- { 73, 0xc7c7, 0x4f4f, 0xd9d9, 0, 0 },
- { 74, 0xa0a0, 0x4444, 0xafaf, 0, 0 },
- { 75, 0xc8c8, 0x8c8c, 0xd5d5, 0, 0 },
- { 76, 0xd7d7, 0x7474, 0xf7f7, 0, 0 },
- { 77, 0xb4b4, 0xb4b4, 0xb4b4, 0, 0 },
- { 78, 0xdada, 0x9595, 0xf9f9, 0, 0 },
- { 79, 0xeded, 0xcbcb, 0xffff, 0, 0 },
- { 80, 0xb2b2, 0xb2b2, 0xb2b2, 0, 0 },
- { 81, 0xa1a1, 0x6161, 0xd7d7, 0, 0 },
- { 82, 0xb2b2, 0x8585, 0xe2e2, 0, 0 },
- { 83, 0x5959, 0x2626, 0x9c9c, 0, 0 },
- { 84, 0x7c7c, 0x5151, 0xcccc, 0, 0 },
- { 85, 0xb0b0, 0xb0b0, 0xb0b0, 0, 0 },
- { 86, 0xb4b4, 0x8e8e, 0xfcfc, 0, 0 },
- { 87, 0xd5d5, 0xc0c0, 0xffff, 0, 0 },
- { 88, 0x5d5d, 0x3232, 0xcccc, 0, 0 },
- { 89, 0x7b7b, 0x5c5c, 0xe5e5, 0, 0 },
- { 90, 0xc0c0, 0xb0b0, 0xfdfd, 0, 0 },
- { 91, 0x6060, 0x5353, 0xadad, 0, 0 },
- { 92, 0x1212, 0xc0c, 0x7e7e, 0, 0 },
- { 93, 0x2e2e, 0x2929, 0x9999, 0, 0 },
- { 94, 0x7979, 0x7878, 0xe9e9, 0, 0 },
- { 95, 0x5b5b, 0x5c5c, 0xd0d0, 0, 0 },
- { 96, 0x6969, 0x6a6a, 0xcccc, 0, 0 },
- { 97, 0x9393, 0x9494, 0xf8f8, 0, 0 },
- { 98, 0x9292, 0x9292, 0xc3c3, 0, 0 },
- { 99, 0x4141, 0x4444, 0xbaba, 0, 0 },
- { 100, 0xa8a8, 0xabab, 0xffff, 0, 0 },
- { 101, 0xa3a3, 0xa3a3, 0xa3a3, 0, 0 },
- { 102, 0xdbdb, 0xdddd, 0xeaea, 0, 0 },
- { 103, 0x3131, 0x4949, 0xaaaa, 0, 0 },
- { 104, 0x7070, 0x8f8f, 0xf9f9, 0, 0 },
- { 105, 0x4848, 0x6666, 0xc1c1, 0, 0 },
- { 106, 0x5c5c, 0x7e7e, 0xe9e9, 0, 0 },
- { 107, 0xe2e2, 0xe5e5, 0xebeb, 0, 0 },
- { 108, 0xb0b0, 0xcdcd, 0xffff, 0, 0 },
- { 109, 0x6c6c, 0x8989, 0xb7b7, 0, 0 },
- { 110, 0x3434, 0x6565, 0xafaf, 0, 0 },
- { 111, 0x8c8c, 0xb9b9, 0xffff, 0, 0 },
- { 112, 0x3737, 0x7979, 0xd4d4, 0, 0 },
- { 113, 0x5a5a, 0x9999, 0xeaea, 0, 0 },
- { 114, 0xe0e, 0x4c4c, 0x9595, 0, 0 },
- { 115, 0x7979, 0xb9b9, 0xffff, 0, 0 },
- { 116, 0x8a8a, 0xa3a3, 0xbcbc, 0, 0 },
- { 117, 0x2020, 0x6161, 0x9d9d, 0, 0 },
- { 118, 0x8f8f, 0xaeae, 0xcaca, 0, 0 },
- { 119, 0xa0a, 0x6060, 0xa8a8, 0, 0 },
- { 120, 0x3f3f, 0x9494, 0xd9d9, 0, 0 },
- { 121, 0x6363, 0xb5b5, 0xf9f9, 0, 0 },
- { 122, 0xe2e2, 0xe8e8, 0xeded, 0, 0 },
- { 123, 0x2828, 0x6a6a, 0x9999, 0, 0 },
- { 124, 0x5555, 0xb2b2, 0xe7e7, 0, 0 },
- { 125, 0x3232, 0x8989, 0xa9a9, 0, 0 },
- { 126, 0xcfcf, 0xdada, 0xdede, 0, 0 },
- { 127, 0x2929, 0xa1a1, 0xc7c7, 0, 0 },
- { 128, 0x8686, 0xa9a9, 0xb4b4, 0, 0 },
- { 129, 0x0, 0x5f5f, 0x7979, 0, 0 },
- { 130, 0xc0c, 0x7777, 0x8e8e, 0, 0 },
- { 131, 0x1212, 0x8f8f, 0xabab, 0, 0 },
- { 132, 0x4141, 0xbaba, 0xd5d5, 0, 0 },
- { 133, 0x2424, 0x8282, 0x8383, 0, 0 },
- { 134, 0x2c2c, 0xc4c4, 0xc3c3, 0, 0 },
- { 135, 0x1a1a, 0xabab, 0xa6a6, 0, 0 },
- { 136, 0x4b4b, 0xa8a8, 0xa2a2, 0, 0 },
- { 137, 0xa0a, 0x9393, 0x8585, 0, 0 },
- { 138, 0xd0d, 0xa5a5, 0x9696, 0, 0 },
- { 139, 0x2626, 0xbcbc, 0xacac, 0, 0 },
- { 140, 0x404, 0x8181, 0x7272, 0, 0 },
- { 141, 0x1919, 0xb3b3, 0x8686, 0, 0 },
- { 142, 0x2929, 0xc1c1, 0x9494, 0, 0 },
- { 143, 0x2121, 0x9c9c, 0x7171, 0, 0 },
- { 144, 0x202, 0x8c8c, 0x5050, 0, 0 },
- { 145, 0x3535, 0xd0d0, 0x8989, 0, 0 },
- { 146, 0x4646, 0xa5a5, 0x7676, 0, 0 },
- { 147, 0x202, 0x7d7d, 0x3939, 0, 0 },
- { 148, 0x2929, 0xc9c9, 0x7171, 0, 0 },
- { 149, 0x5757, 0xd6d6, 0x8f8f, 0, 0 },
- { 150, 0xa2a2, 0xb5b5, 0xaaaa, 0, 0 },
- { 151, 0x101, 0x8888, 0x2a2a, 0, 0 },
- { 152, 0x7474, 0xbebe, 0x8a8a, 0, 0 },
- { 153, 0x1919, 0xb6b6, 0x4747, 0, 0 },
- { 154, 0x2d2d, 0xc6c6, 0x5151, 0, 0 },
- { 155, 0x3838, 0xdede, 0x5d5d, 0, 0 },
- { 156, 0x4c4c, 0xf4f4, 0x6f6f, 0, 0 },
- { 157, 0x9191, 0x9c9c, 0x9393, 0, 0 },
- { 158, 0x0, 0x8e8e, 0x1919, 0, 0 },
- { 159, 0x1010, 0xafaf, 0x2828, 0, 0 },
- { 160, 0xe3e3, 0xe3e3, 0xe3e3, 0, 0 },
- { 161, 0x808, 0xa1a1, 0x1a1a, 0, 0 },
- { 162, 0x5959, 0xc2c2, 0x6161, 0, 0 },
- { 163, 0xf0f0, 0xf0f0, 0xf0f0, 0, 0 },
- { 164, 0x8f8f, 0x9c9c, 0x9090, 0, 0 },
- { 165, 0x2323, 0xcece, 0x2a2a, 0, 0 },
- { 166, 0x1212, 0xbaba, 0x1717, 0, 0 },
- { 167, 0x101, 0x8a8a, 0x202, 0, 0 },
- { 168, 0x303, 0x9a9a, 0x202, 0, 0 },
- { 169, 0x4040, 0xe4e4, 0x4040, 0, 0 },
- { 170, 0x808, 0xb2b2, 0x505, 0, 0 },
- { 171, 0x1313, 0xcccc, 0xf0f, 0, 0 },
- { 172, 0x3636, 0xd7d7, 0x3232, 0, 0 },
- { 173, 0x2828, 0xe9e9, 0x1f1f, 0, 0 },
- { 174, 0x5353, 0xfbfb, 0x4c4c, 0, 0 },
- { 175, 0x6f6f, 0xafaf, 0x6a6a, 0, 0 },
- { 176, 0x7171, 0xe0e0, 0x6767, 0, 0 },
- { 177, 0x3232, 0xc0c0, 0x1212, 0, 0 },
- { 178, 0x2929, 0xa5a5, 0x808, 0, 0 },
- { 179, 0x5c5c, 0xdddd, 0x3535, 0, 0 },
- { 180, 0x0, 0xffff, 0xffff, 0, 0 },
- { 181, 0x6363, 0xc8c8, 0x4545, 0, 0 },
- { 182, 0x8686, 0xfdfd, 0x5b5b, 0, 0 },
- { 183, 0x7171, 0xf6f6, 0x3939, 0, 0 },
- { 184, 0x5555, 0xcccc, 0x1515, 0, 0 },
- { 185, 0x0, 0xffff, 0x0, 0, 0 },
- { 186, 0x9090, 0xcaca, 0x6e6e, 0, 0 },
- { 187, 0x4343, 0xa7a7, 0x101, 0, 0 },
- { 188, 0x8d8d, 0xe4e4, 0x3737, 0, 0 },
- { 189, 0xb3b3, 0xf0f0, 0x6464, 0, 0 },
- { 190, 0x8585, 0x8e8e, 0x7a7a, 0, 0 },
- { 191, 0xb0b0, 0xfafa, 0x4d4d, 0, 0 },
- { 192, 0xd6d6, 0xd6d6, 0xd6d6, 0, 0 },
- { 193, 0x8888, 0xd0d0, 0x1a1a, 0, 0 },
- { 194, 0x6a6a, 0xa7a7, 0x303, 0, 0 },
- { 195, 0x9898, 0xbfbf, 0x4141, 0, 0 },
- { 196, 0xcdcd, 0xf8f8, 0x5151, 0, 0 },
- { 197, 0x9494, 0xa4a4, 0x5555, 0, 0 },
- { 198, 0x9191, 0xb0b0, 0xa0a, 0, 0 },
- { 199, 0xdada, 0xf1f1, 0x3c3c, 0, 0 },
- { 200, 0xbaba, 0xcaca, 0x5353, 0, 0 },
- { 201, 0xb9b9, 0xc3c3, 0x2828, 0, 0 },
- { 202, 0xb1b1, 0xbaba, 0x1212, 0, 0 },
- { 203, 0xd2d2, 0xd9d9, 0x2626, 0, 0 },
- { 204, 0xe8e8, 0xecec, 0x2d2d, 0, 0 },
- { 205, 0x9898, 0x9696, 0x202, 0, 0 },
- { 206, 0xadad, 0xadad, 0x5c5c, 0, 0 },
- { 207, 0xe2e2, 0xd8d8, 0x3838, 0, 0 },
- { 208, 0xd9d9, 0xc4c4, 0x3838, 0, 0 },
- { 209, 0xa8a8, 0x9a9a, 0x5050, 0, 0 },
- { 210, 0x0, 0x0, 0xffff, 0, 0 },
- { 211, 0xbebe, 0xaeae, 0x5e5e, 0, 0 },
- { 212, 0x9a9a, 0x9898, 0x8e8e, 0, 0 },
- { 213, 0xacac, 0x8d8d, 0xd0d, 0, 0 },
- { 214, 0xc5c5, 0xa0a0, 0x2b2b, 0, 0 },
- { 215, 0xdbdb, 0xb5b5, 0x4848, 0, 0 },
- { 216, 0xdddd, 0x0, 0x0, 0, 0 },
- { 217, 0x9c9c, 0x6d6d, 0x303, 0, 0 },
- { 218, 0xd4d4, 0xa8a8, 0x4747, 0, 0 },
- { 219, 0xb7b7, 0x7171, 0x1717, 0, 0 },
- { 220, 0xdcdc, 0xa1a1, 0x5a5a, 0, 0 },
- { 221, 0xb9b9, 0x9c9c, 0x7c7c, 0, 0 },
- { 222, 0xb4b4, 0xabab, 0xa2a2, 0, 0 },
- { 223, 0x9e9e, 0x4b4b, 0x101, 0, 0 },
- { 224, 0xc8c8, 0x7878, 0x3535, 0, 0 },
- { 225, 0xd2d2, 0x8d8d, 0x5151, 0, 0 },
- { 226, 0xadad, 0x5252, 0xf0f, 0, 0 },
- { 227, 0x0, 0xbbbb, 0x0, 0, 0 },
- { 228, 0xb2b2, 0x6666, 0x3838, 0, 0 },
- { 229, 0xb1b1, 0xa6a6, 0x9f9f, 0, 0 },
- { 230, 0xb1b1, 0x8787, 0x6f6f, 0, 0 },
- { 231, 0xa4a4, 0x3434, 0x303, 0, 0 },
- { 232, 0xeeee, 0x9e9e, 0x8585, 0, 0 },
- { 233, 0xc9c9, 0x7373, 0x5a5a, 0, 0 },
- { 234, 0xe6e6, 0x9494, 0x7c7c, 0, 0 },
- { 235, 0xa9a9, 0x2222, 0x606, 0, 0 },
- { 236, 0xdbdb, 0x8787, 0x7474, 0, 0 },
- { 237, 0xb0b0, 0x2e2e, 0x1515, 0, 0 },
- { 238, 0xb7b7, 0x5a5a, 0x5050, 0, 0 },
- { 239, 0xb2b2, 0x4242, 0x3b3b, 0, 0 },
- { 240, 0xcdcd, 0x7373, 0x6e6e, 0, 0 },
- { 241, 0xd9d9, 0x5858, 0x5858, 0, 0 },
- { 242, 0xacac, 0xacac, 0xacac, 0, 0 },
- { 243, 0xa0a0, 0xa0a0, 0xa0a0, 0, 0 },
- { 244, 0x9a9a, 0x9a9a, 0x9a9a, 0, 0 },
- { 245, 0x9292, 0x9292, 0x9292, 0, 0 },
- { 246, 0x8e8e, 0x8e8e, 0x8e8e, 0, 0 },
- { 247, 0xbbbb, 0xbbbb, 0xbbbb, 0, 0 },
- { 248, 0x8181, 0x8181, 0x8181, 0, 0 },
- { 249, 0x8888, 0x8888, 0x8888, 0, 0 },
- { 250, 0x7777, 0x7777, 0x7777, 0, 0 },
- { 251, 0x5555, 0x5555, 0x5555, 0, 0 },
- { 252, 0x4444, 0x4444, 0x4444, 0, 0 },
- { 253, 0x2222, 0x2222, 0x2222, 0, 0 },
- { 254, 0x7b7b, 0x7b7b, 0x7b7b, 0, 0 },
- { 255, 0x0, 0x0, 0x0, 0, 0 },
-};
-
-#else /* !USE_NEW_CLUT */
-
-static xColorItem darwinClut8[] = {
- { 0, 0x0000, 0x0000, 0x0000, 0, 0 },
- { 1, 0xffff, 0xffff, 0xcccc, 0, 0 },
- { 2, 0xffff, 0xffff, 0x9999, 0, 0 },
- { 3, 0xffff, 0xffff, 0x6666, 0, 0 },
- { 4, 0xffff, 0xffff, 0x3333, 0, 0 },
- { 5, 0xffff, 0xffff, 0x0000, 0, 0 },
- { 6, 0xffff, 0xcccc, 0xffff, 0, 0 },
- { 7, 0xffff, 0xcccc, 0xcccc, 0, 0 },
- { 8, 0xffff, 0xcccc, 0x9999, 0, 0 },
- { 9, 0xffff, 0xcccc, 0x6666, 0, 0 },
- { 10, 0xffff, 0xcccc, 0x3333, 0, 0 },
- { 11, 0xffff, 0xcccc, 0x0000, 0, 0 },
- { 12, 0xffff, 0x9999, 0xffff, 0, 0 },
- { 13, 0xffff, 0x9999, 0xcccc, 0, 0 },
- { 14, 0xffff, 0x9999, 0x9999, 0, 0 },
- { 15, 0xffff, 0x9999, 0x6666, 0, 0 },
- { 16, 0xffff, 0x9999, 0x3333, 0, 0 },
- { 17, 0xffff, 0x9999, 0x0000, 0, 0 },
- { 18, 0xffff, 0x6666, 0xffff, 0, 0 },
- { 19, 0xffff, 0x6666, 0xcccc, 0, 0 },
- { 20, 0xffff, 0x6666, 0x9999, 0, 0 },
- { 21, 0xffff, 0x6666, 0x6666, 0, 0 },
- { 22, 0xffff, 0x6666, 0x3333, 0, 0 },
- { 23, 0xffff, 0x6666, 0x0000, 0, 0 },
- { 24, 0xffff, 0x3333, 0xffff, 0, 0 },
- { 25, 0xffff, 0x3333, 0xcccc, 0, 0 },
- { 26, 0xffff, 0x3333, 0x9999, 0, 0 },
- { 27, 0xffff, 0x3333, 0x6666, 0, 0 },
- { 28, 0xffff, 0x3333, 0x3333, 0, 0 },
- { 29, 0xffff, 0x3333, 0x0000, 0, 0 },
- { 30, 0xffff, 0x0000, 0xffff, 0, 0 },
- { 31, 0xffff, 0x0000, 0xcccc, 0, 0 },
- { 32, 0xffff, 0x0000, 0x9999, 0, 0 },
- { 33, 0xffff, 0x0000, 0x6666, 0, 0 },
- { 34, 0xffff, 0x0000, 0x3333, 0, 0 },
- { 35, 0xffff, 0x0000, 0x0000, 0, 0 },
- { 36, 0xcccc, 0xffff, 0xffff, 0, 0 },
- { 37, 0xcccc, 0xffff, 0xcccc, 0, 0 },
- { 38, 0xcccc, 0xffff, 0x9999, 0, 0 },
- { 39, 0xcccc, 0xffff, 0x6666, 0, 0 },
- { 40, 0xcccc, 0xffff, 0x3333, 0, 0 },
- { 41, 0xcccc, 0xffff, 0x0000, 0, 0 },
- { 42, 0xcccc, 0xcccc, 0xffff, 0, 0 },
- { 43, 0xcccc, 0xcccc, 0xcccc, 0, 0 },
- { 44, 0xcccc, 0xcccc, 0x9999, 0, 0 },
- { 45, 0xcccc, 0xcccc, 0x6666, 0, 0 },
- { 46, 0xcccc, 0xcccc, 0x3333, 0, 0 },
- { 47, 0xcccc, 0xcccc, 0x0000, 0, 0 },
- { 48, 0xcccc, 0x9999, 0xffff, 0, 0 },
- { 49, 0xcccc, 0x9999, 0xcccc, 0, 0 },
- { 50, 0xcccc, 0x9999, 0x9999, 0, 0 },
- { 51, 0xcccc, 0x9999, 0x6666, 0, 0 },
- { 52, 0xcccc, 0x9999, 0x3333, 0, 0 },
- { 53, 0xcccc, 0x9999, 0x0000, 0, 0 },
- { 54, 0xcccc, 0x6666, 0xffff, 0, 0 },
- { 55, 0xcccc, 0x6666, 0xcccc, 0, 0 },
- { 56, 0xcccc, 0x6666, 0x9999, 0, 0 },
- { 57, 0xcccc, 0x6666, 0x6666, 0, 0 },
- { 58, 0xcccc, 0x6666, 0x3333, 0, 0 },
- { 59, 0xcccc, 0x6666, 0x0000, 0, 0 },
- { 60, 0xcccc, 0x3333, 0xffff, 0, 0 },
- { 61, 0xcccc, 0x3333, 0xcccc, 0, 0 },
- { 62, 0xcccc, 0x3333, 0x9999, 0, 0 },
- { 63, 0xcccc, 0x3333, 0x6666, 0, 0 },
- { 64, 0xcccc, 0x3333, 0x3333, 0, 0 },
- { 65, 0xcccc, 0x3333, 0x0000, 0, 0 },
- { 66, 0xcccc, 0x0000, 0xffff, 0, 0 },
- { 67, 0xcccc, 0x0000, 0xcccc, 0, 0 },
- { 68, 0xcccc, 0x0000, 0x9999, 0, 0 },
- { 69, 0xcccc, 0x0000, 0x6666, 0, 0 },
- { 70, 0xcccc, 0x0000, 0x3333, 0, 0 },
- { 71, 0xcccc, 0x0000, 0x0000, 0, 0 },
- { 72, 0x9999, 0xffff, 0xffff, 0, 0 },
- { 73, 0x9999, 0xffff, 0xcccc, 0, 0 },
- { 74, 0x9999, 0xffff, 0x9999, 0, 0 },
- { 75, 0x9999, 0xffff, 0x6666, 0, 0 },
- { 76, 0x9999, 0xffff, 0x3333, 0, 0 },
- { 77, 0x9999, 0xffff, 0x0000, 0, 0 },
- { 78, 0x9999, 0xcccc, 0xffff, 0, 0 },
- { 79, 0x9999, 0xcccc, 0xcccc, 0, 0 },
- { 80, 0x9999, 0xcccc, 0x9999, 0, 0 },
- { 81, 0x9999, 0xcccc, 0x6666, 0, 0 },
- { 82, 0x9999, 0xcccc, 0x3333, 0, 0 },
- { 83, 0x9999, 0xcccc, 0x0000, 0, 0 },
- { 84, 0x9999, 0x9999, 0xffff, 0, 0 },
- { 85, 0x9999, 0x9999, 0xcccc, 0, 0 },
- { 86, 0x9999, 0x9999, 0x9999, 0, 0 },
- { 87, 0x9999, 0x9999, 0x6666, 0, 0 },
- { 88, 0x9999, 0x9999, 0x3333, 0, 0 },
- { 89, 0x9999, 0x9999, 0x0000, 0, 0 },
- { 90, 0x9999, 0x6666, 0xffff, 0, 0 },
- { 91, 0x9999, 0x6666, 0xcccc, 0, 0 },
- { 92, 0x9999, 0x6666, 0x9999, 0, 0 },
- { 93, 0x9999, 0x6666, 0x6666, 0, 0 },
- { 94, 0x9999, 0x6666, 0x3333, 0, 0 },
- { 95, 0x9999, 0x6666, 0x0000, 0, 0 },
- { 96, 0x9999, 0x3333, 0xffff, 0, 0 },
- { 97, 0x9999, 0x3333, 0xcccc, 0, 0 },
- { 98, 0x9999, 0x3333, 0x9999, 0, 0 },
- { 99, 0x9999, 0x3333, 0x6666, 0, 0 },
- { 100, 0x9999, 0x3333, 0x3333, 0, 0 },
- { 101, 0x9999, 0x3333, 0x0000, 0, 0 },
- { 102, 0x9999, 0x0000, 0xffff, 0, 0 },
- { 103, 0x9999, 0x0000, 0xcccc, 0, 0 },
- { 104, 0x9999, 0x0000, 0x9999, 0, 0 },
- { 105, 0x9999, 0x0000, 0x6666, 0, 0 },
- { 106, 0x9999, 0x0000, 0x3333, 0, 0 },
- { 107, 0x9999, 0x0000, 0x0000, 0, 0 },
- { 108, 0x6666, 0xffff, 0xffff, 0, 0 },
- { 109, 0x6666, 0xffff, 0xcccc, 0, 0 },
- { 110, 0x6666, 0xffff, 0x9999, 0, 0 },
- { 111, 0x6666, 0xffff, 0x6666, 0, 0 },
- { 112, 0x6666, 0xffff, 0x3333, 0, 0 },
- { 113, 0x6666, 0xffff, 0x0000, 0, 0 },
- { 114, 0x6666, 0xcccc, 0xffff, 0, 0 },
- { 115, 0x6666, 0xcccc, 0xcccc, 0, 0 },
- { 116, 0x6666, 0xcccc, 0x9999, 0, 0 },
- { 117, 0x6666, 0xcccc, 0x6666, 0, 0 },
- { 118, 0x6666, 0xcccc, 0x3333, 0, 0 },
- { 119, 0x6666, 0xcccc, 0x0000, 0, 0 },
- { 120, 0x6666, 0x9999, 0xffff, 0, 0 },
- { 121, 0x6666, 0x9999, 0xcccc, 0, 0 },
- { 122, 0x6666, 0x9999, 0x9999, 0, 0 },
- { 123, 0x6666, 0x9999, 0x6666, 0, 0 },
- { 124, 0x6666, 0x9999, 0x3333, 0, 0 },
- { 125, 0x6666, 0x9999, 0x0000, 0, 0 },
- { 126, 0x6666, 0x6666, 0xffff, 0, 0 },
- { 127, 0x6666, 0x6666, 0xcccc, 0, 0 },
- { 128, 0x6666, 0x6666, 0x9999, 0, 0 },
- { 129, 0x6666, 0x6666, 0x6666, 0, 0 },
- { 130, 0x6666, 0x6666, 0x3333, 0, 0 },
- { 131, 0x6666, 0x6666, 0x0000, 0, 0 },
- { 132, 0x6666, 0x3333, 0xffff, 0, 0 },
- { 133, 0x6666, 0x3333, 0xcccc, 0, 0 },
- { 134, 0x6666, 0x3333, 0x9999, 0, 0 },
- { 135, 0x6666, 0x3333, 0x6666, 0, 0 },
- { 136, 0x6666, 0x3333, 0x3333, 0, 0 },
- { 137, 0x6666, 0x3333, 0x0000, 0, 0 },
- { 138, 0x6666, 0x0000, 0xffff, 0, 0 },
- { 139, 0x6666, 0x0000, 0xcccc, 0, 0 },
- { 140, 0x6666, 0x0000, 0x9999, 0, 0 },
- { 141, 0x6666, 0x0000, 0x6666, 0, 0 },
- { 142, 0x6666, 0x0000, 0x3333, 0, 0 },
- { 143, 0x6666, 0x0000, 0x0000, 0, 0 },
- { 144, 0x3333, 0xffff, 0xffff, 0, 0 },
- { 145, 0x3333, 0xffff, 0xcccc, 0, 0 },
- { 146, 0x3333, 0xffff, 0x9999, 0, 0 },
- { 147, 0x3333, 0xffff, 0x6666, 0, 0 },
- { 148, 0x3333, 0xffff, 0x3333, 0, 0 },
- { 149, 0x3333, 0xffff, 0x0000, 0, 0 },
- { 150, 0x3333, 0xcccc, 0xffff, 0, 0 },
- { 151, 0x3333, 0xcccc, 0xcccc, 0, 0 },
- { 152, 0x3333, 0xcccc, 0x9999, 0, 0 },
- { 153, 0x3333, 0xcccc, 0x6666, 0, 0 },
- { 154, 0x3333, 0xcccc, 0x3333, 0, 0 },
- { 155, 0x3333, 0xcccc, 0x0000, 0, 0 },
- { 156, 0x3333, 0x9999, 0xffff, 0, 0 },
- { 157, 0x3333, 0x9999, 0xcccc, 0, 0 },
- { 158, 0x3333, 0x9999, 0x9999, 0, 0 },
- { 159, 0x3333, 0x9999, 0x6666, 0, 0 },
- { 160, 0x3333, 0x9999, 0x3333, 0, 0 },
- { 161, 0x3333, 0x9999, 0x0000, 0, 0 },
- { 162, 0x3333, 0x6666, 0xffff, 0, 0 },
- { 163, 0x3333, 0x6666, 0xcccc, 0, 0 },
- { 164, 0x3333, 0x6666, 0x9999, 0, 0 },
- { 165, 0x3333, 0x6666, 0x6666, 0, 0 },
- { 166, 0x3333, 0x6666, 0x3333, 0, 0 },
- { 167, 0x3333, 0x6666, 0x0000, 0, 0 },
- { 168, 0x3333, 0x3333, 0xffff, 0, 0 },
- { 169, 0x3333, 0x3333, 0xcccc, 0, 0 },
- { 170, 0x3333, 0x3333, 0x9999, 0, 0 },
- { 171, 0x3333, 0x3333, 0x6666, 0, 0 },
- { 172, 0x3333, 0x3333, 0x3333, 0, 0 },
- { 173, 0x3333, 0x3333, 0x0000, 0, 0 },
- { 174, 0x3333, 0x0000, 0xffff, 0, 0 },
- { 175, 0x3333, 0x0000, 0xcccc, 0, 0 },
- { 176, 0x3333, 0x0000, 0x9999, 0, 0 },
- { 177, 0x3333, 0x0000, 0x6666, 0, 0 },
- { 178, 0x3333, 0x0000, 0x3333, 0, 0 },
- { 179, 0x3333, 0x0000, 0x0000, 0, 0 },
- { 180, 0x0000, 0xffff, 0xffff, 0, 0 },
- { 181, 0x0000, 0xffff, 0xcccc, 0, 0 },
- { 182, 0x0000, 0xffff, 0x9999, 0, 0 },
- { 183, 0x0000, 0xffff, 0x6666, 0, 0 },
- { 184, 0x0000, 0xffff, 0x3333, 0, 0 },
- { 185, 0x0000, 0xffff, 0x0000, 0, 0 },
- { 186, 0x0000, 0xcccc, 0xffff, 0, 0 },
- { 187, 0x0000, 0xcccc, 0xcccc, 0, 0 },
- { 188, 0x0000, 0xcccc, 0x9999, 0, 0 },
- { 189, 0x0000, 0xcccc, 0x6666, 0, 0 },
- { 190, 0x0000, 0xcccc, 0x3333, 0, 0 },
- { 191, 0x0000, 0xcccc, 0x0000, 0, 0 },
- { 192, 0x0000, 0x9999, 0xffff, 0, 0 },
- { 193, 0x0000, 0x9999, 0xcccc, 0, 0 },
- { 194, 0x0000, 0x9999, 0x9999, 0, 0 },
- { 195, 0x0000, 0x9999, 0x6666, 0, 0 },
- { 196, 0x0000, 0x9999, 0x3333, 0, 0 },
- { 197, 0x0000, 0x9999, 0x0000, 0, 0 },
- { 198, 0x0000, 0x6666, 0xffff, 0, 0 },
- { 199, 0x0000, 0x6666, 0xcccc, 0, 0 },
- { 200, 0x0000, 0x6666, 0x9999, 0, 0 },
- { 201, 0x0000, 0x6666, 0x6666, 0, 0 },
- { 202, 0x0000, 0x6666, 0x3333, 0, 0 },
- { 203, 0x0000, 0x6666, 0x0000, 0, 0 },
- { 204, 0x0000, 0x3333, 0xffff, 0, 0 },
- { 205, 0x0000, 0x3333, 0xcccc, 0, 0 },
- { 206, 0x0000, 0x3333, 0x9999, 0, 0 },
- { 207, 0x0000, 0x3333, 0x6666, 0, 0 },
- { 208, 0x0000, 0x3333, 0x3333, 0, 0 },
- { 209, 0x0000, 0x3333, 0x0000, 0, 0 },
- { 210, 0x0000, 0x0000, 0xffff, 0, 0 },
- { 211, 0x0000, 0x0000, 0xcccc, 0, 0 },
- { 212, 0x0000, 0x0000, 0x9999, 0, 0 },
- { 213, 0x0000, 0x0000, 0x6666, 0, 0 },
- { 214, 0x0000, 0x0000, 0x3333, 0, 0 },
- { 215, 0xeeee, 0x0000, 0x0000, 0, 0 },
- { 216, 0xdddd, 0x0000, 0x0000, 0, 0 },
- { 217, 0xbbbb, 0x0000, 0x0000, 0, 0 },
- { 218, 0xaaaa, 0x0000, 0x0000, 0, 0 },
- { 219, 0x8888, 0x0000, 0x0000, 0, 0 },
- { 220, 0x7777, 0x0000, 0x0000, 0, 0 },
- { 221, 0x5555, 0x0000, 0x0000, 0, 0 },
- { 222, 0x4444, 0x0000, 0x0000, 0, 0 },
- { 223, 0x2222, 0x0000, 0x0000, 0, 0 },
- { 224, 0x1111, 0x0000, 0x0000, 0, 0 },
- { 225, 0x0000, 0xeeee, 0x0000, 0, 0 },
- { 226, 0x0000, 0xdddd, 0x0000, 0, 0 },
- { 227, 0x0000, 0xbbbb, 0x0000, 0, 0 },
- { 228, 0x0000, 0xaaaa, 0x0000, 0, 0 },
- { 229, 0x0000, 0x8888, 0x0000, 0, 0 },
- { 230, 0x0000, 0x7777, 0x0000, 0, 0 },
- { 231, 0x0000, 0x5555, 0x0000, 0, 0 },
- { 232, 0x0000, 0x4444, 0x0000, 0, 0 },
- { 233, 0x0000, 0x2222, 0x0000, 0, 0 },
- { 234, 0x0000, 0x1111, 0x0000, 0, 0 },
- { 235, 0x0000, 0x0000, 0xeeee, 0, 0 },
- { 236, 0x0000, 0x0000, 0xdddd, 0, 0 },
- { 237, 0x0000, 0x0000, 0xbbbb, 0, 0 },
- { 238, 0x0000, 0x0000, 0xaaaa, 0, 0 },
- { 239, 0x0000, 0x0000, 0x8888, 0, 0 },
- { 240, 0x0000, 0x0000, 0x7777, 0, 0 },
- { 241, 0x0000, 0x0000, 0x5555, 0, 0 },
- { 242, 0x0000, 0x0000, 0x4444, 0, 0 },
- { 243, 0x0000, 0x0000, 0x2222, 0, 0 },
- { 244, 0x0000, 0x0000, 0x1111, 0, 0 },
- { 245, 0xeeee, 0xeeee, 0xeeee, 0, 0 },
- { 246, 0xdddd, 0xdddd, 0xdddd, 0, 0 },
- { 247, 0xbbbb, 0xbbbb, 0xbbbb, 0, 0 },
- { 248, 0xaaaa, 0xaaaa, 0xaaaa, 0, 0 },
- { 249, 0x8888, 0x8888, 0x8888, 0, 0 },
- { 250, 0x7777, 0x7777, 0x7777, 0, 0 },
- { 251, 0x5555, 0x5555, 0x5555, 0, 0 },
- { 252, 0x4444, 0x4444, 0x4444, 0, 0 },
- { 253, 0x2222, 0x2222, 0x2222, 0, 0 },
- { 254, 0x1111, 0x1111, 0x1111, 0, 0 },
- { 255, 0xffff, 0xffff, 0xffff, 0, 0 }
-};
-#endif /* USE_NEW_CLUT */
-
-#endif /* _DARWIN_CLUT8_ */
diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c
index 54d05fb63..4822af479 100644
--- a/hw/xquartz/darwinEvents.c
+++ b/hw/xquartz/darwinEvents.c
@@ -67,9 +67,8 @@ in this Software without prior written authorization from The Open Group.
#define SCROLLWHEELLEFTFAKE 6
#define SCROLLWHEELRIGHTFAKE 7
-#define _APPLEWM_SERVER_
+#include <X11/extensions/applewmconst.h>
#include "applewmExt.h"
-#include <X11/extensions/applewm.h>
/* FIXME: Abstract this better */
void QuartzModeEQInit(void);
@@ -587,7 +586,7 @@ void DarwinSendDDXEvent(int type, int argc, ...) {
}
darwinEvents_lock(); {
- mieqEnqueue(darwinPointer, &xe);
+ mieqEnqueue(NULL, &xe);
DarwinPokeEQ();
} darwinEvents_unlock();
}
diff --git a/hw/xquartz/darwinfb.h b/hw/xquartz/darwinfb.h
new file mode 100644
index 000000000..dab6d4b86
--- /dev/null
+++ b/hw/xquartz/darwinfb.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2009 Apple, Inc.
+ * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above copyright
+ * holders shall not be used in advertising or otherwise to promote the sale,
+ * use or other dealings in this Software without prior written authorization.
+ */
+
+#ifndef _DARWIN_FB_H
+#define _DARWIN_DB_H
+
+#include "scrnintstr.h"
+
+typedef struct {
+ void *framebuffer;
+ int x;
+ int y;
+ int width;
+ int height;
+ int pitch;
+ int depth;
+ int visuals;
+ int bitsPerRGB;
+ int bitsPerPixel;
+ int preferredCVC;
+ Pixel redMask;
+ Pixel greenMask;
+ Pixel blueMask;
+} DarwinFramebufferRec, *DarwinFramebufferPtr;
+
+#define MASK_LH(l,h) (((1 << (1 + (h) - (l))) - 1) << (l))
+#define BM_ARGB(a,r,g,b) MASK_LH(0, (b) - 1)
+#define GM_ARGB(a,r,g,b) MASK_LH(b, (b) + (g) - 1)
+#define RM_ARGB(a,r,g,b) MASK_LH((b) + (g), (b) + (g) + (r) - 1)
+#define AM_ARGB(a,r,g,b) MASK_LH((b) + (g) + (r), (b) + (g) + (r) + (a) - 1)
+
+#endif /* _DARWIN_FB_H */
diff --git a/hw/xquartz/mach-startup/Makefile.am b/hw/xquartz/mach-startup/Makefile.am
index 0c609e384..334f06d43 100644
--- a/hw/xquartz/mach-startup/Makefile.am
+++ b/hw/xquartz/mach-startup/Makefile.am
@@ -3,7 +3,9 @@ AM_CPPFLAGS = \
-DXSERVER_VERSION=\"$(VERSION)\" \
-DX11BINDIR=\"$(bindir)\"
-x11appdir = $(APPLE_APPLICATIONS_DIR)/X11.app/Contents/MacOS
+AM_CFLAGS = $(XSERVER_CFLAGS) $(DIX_CFLAGS)
+
+x11appdir = $(APPLE_APPLICATIONS_DIR)/$(APPLE_APPLICATION_NAME).app/Contents/MacOS
x11app_PROGRAMS = X11.bin
dist_X11_bin_SOURCES = \
@@ -39,6 +41,11 @@ X11_bin_LDFLAGS += \
-Wl,-framework,OpenGL
endif
+if XQUARTZ_SPARKLE
+X11_bin_LDFLAGS += \
+ -Wl,-framework,Sparkle
+endif
+
if RECORD
X11_bin_LDADD += \
$(top_builddir)/record/librecord.la
diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c
index fd70f26ed..e887c469d 100644
--- a/hw/xquartz/mach-startup/bundle-main.c
+++ b/hw/xquartz/mach-startup/bundle-main.c
@@ -31,6 +31,10 @@
#include <CoreFoundation/CoreFoundation.h>
#include <AvailabilityMacros.h>
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
#include <X11/Xlib.h>
#include <unistd.h>
#include <stdio.h>
@@ -44,6 +48,7 @@
#include <sys/un.h>
#include <sys/time.h>
+#include <fcntl.h>
#include <mach/mach.h>
#include <mach/mach_error.h>
@@ -75,7 +80,7 @@ const char *__crashreporter_info__base = "X.Org X Server " XSERVER_VERSION " Bui
char __crashreporter_info__buf[4096];
char *__crashreporter_info__ = __crashreporter_info__buf;
-static char *server_bootstrap_name = "org.x.X11";
+static char *server_bootstrap_name = LAUNCHD_ID_PREFIX".X11";
#define DEBUG 1
@@ -322,7 +327,7 @@ kern_return_t do_start_x11_server(mach_port_t port, string_array_t argv,
char **_envp = alloca((envpCnt + 1) * sizeof(char *));
size_t i;
- /* If we didn't get handed a launchd DISPLAY socket, we shoul
+ /* If we didn't get handed a launchd DISPLAY socket, we should
* unset DISPLAY or we can run into problems with pbproxy
*/
if(!launchd_socket_handed_off)
@@ -350,7 +355,7 @@ kern_return_t do_start_x11_server(mach_port_t port, string_array_t argv,
return KERN_FAILURE;
}
-int startup_trigger(int argc, char **argv, char **envp) {
+static int startup_trigger(int argc, char **argv, char **envp) {
Display *display;
const char *s;
@@ -387,9 +392,9 @@ int startup_trigger(int argc, char **argv, char **envp) {
kr = bootstrap_look_up(bootstrap_port, server_bootstrap_name, &mp);
if (kr != KERN_SUCCESS) {
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
- fprintf(stderr, "bootstrap_look_up(): %s\n", bootstrap_strerror(kr));
+ fprintf(stderr, "bootstrap_look_up(%s): %s\n", server_bootstrap_name, bootstrap_strerror(kr));
#else
- fprintf(stderr, "bootstrap_look_up(): %ul\n", (unsigned long)kr);
+ fprintf(stderr, "bootstrap_look_up(%s): %ul\n", server_bootstrap_name, (unsigned long)kr);
#endif
exit(EXIT_FAILURE);
}
@@ -444,9 +449,10 @@ static void ensure_path(const char *dir) {
}
}
-static void setup_env() {
+static void setup_env(void) {
char *temp;
const char *pds = NULL;
+ const char *disp = getenv("DISPLAY");
/* Pass on our prefs domain to startx and its inheritors (mainly for
* quartz-wm and the Xquartz stub's MachIPC)
@@ -463,12 +469,40 @@ static void setup_env() {
}
}
}
+ /* We need to unset DISPLAY if it is not our socket */
+ if(disp) {
+ if(!pds) {
+ /* If we can't detet our id, we are beyond hope and need to just
+ * revert to the non-launchd startup */
+ unsetenv("DISPLAY");
+ } else {
+ /* s = basename(disp) */
+ const char *d, *s;
+ for(s = NULL, d = disp; *d; d++) {
+ if(*d == '/')
+ s = d + 1;
+ }
- /* If we're not org.x.X11, we want to unset DISPLAY, so we don't
- * use the launchd DISPLAY socket.
- */
- if(pds == NULL || strcmp(pds, "org.x.X11") != 0)
- unsetenv("DISPLAY");
+ if(s && *s) {
+ size_t pds_len = strlen(pds);
+ temp = (char *)malloc(sizeof(char) * pds_len);
+ if(!temp) {
+ fprintf(stderr, "Memory allocation error creating space for socket name test.\n");
+ }
+ strlcpy(temp, pds, pds_len - 3);
+ strlcat(temp, ":0", pds_len);
+
+ if(strcmp(temp, s) != 0) {
+ /* If we don't have a match, unset it. */
+ unsetenv("DISPLAY");
+ }
+ free(temp);
+ } else {
+ /* The DISPLAY environment variable is not formatted like a launchd socket, so reset. */
+ unsetenv("DISPLAY");
+ }
+ }
+ }
/* Make sure PATH is right */
ensure_path(X11BINDIR);
@@ -514,8 +548,43 @@ int main(int argc, char **argv, char **envp) {
* thread handle it.
*/
if(!listenOnly) {
- if(fork() == 0) {
- return startup_trigger(argc, argv, envp);
+ pid_t child1, child2;
+ int status;
+
+ /* Do the fork-twice trick to avoid having to reap zombies */
+ child1 = fork();
+ switch (child1) {
+ case -1: /* error */
+ break;
+
+ case 0: /* child1 */
+ child2 = fork();
+
+ switch (child2) {
+ int max_files, i;
+
+ case -1: /* error */
+ break;
+
+ case 0: /* child2 */
+ /* close all open files except for standard streams */
+ max_files = sysconf(_SC_OPEN_MAX);
+ for(i = 3; i < max_files; i++)
+ close(i);
+
+ /* ensure stdin is on /dev/null */
+ close(0);
+ open("/dev/null", O_RDONLY);
+
+ return startup_trigger(argc, argv, envp);
+
+ default: /* parent (child1) */
+ _exit(0);
+ }
+ break;
+
+ default: /* parent */
+ waitpid(child1, &status, 0);
}
}
@@ -523,7 +592,7 @@ int main(int argc, char **argv, char **envp) {
fprintf(stderr, "Waiting for startup parameters via Mach IPC.\n");
kr = mach_msg_server(mach_startup_server, mxmsgsz, mp, 0);
if (kr != KERN_SUCCESS) {
- fprintf(stderr, "org.x.X11(mp): %s\n", mach_error_string(kr));
+ fprintf(stderr, "%s.X11(mp): %s\n", LAUNCHD_ID_PREFIX, mach_error_string(kr));
return EXIT_FAILURE;
}
diff --git a/hw/xquartz/mach-startup/launchd_fd.c b/hw/xquartz/mach-startup/launchd_fd.c
index 44a243a58..fa623ea12 100644
--- a/hw/xquartz/mach-startup/launchd_fd.c
+++ b/hw/xquartz/mach-startup/launchd_fd.c
@@ -26,6 +26,10 @@
* prior written authorization.
*/
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
#include <launch.h>
#include <stdio.h>
#include <errno.h>
@@ -65,10 +69,13 @@ int launchd_display_fd() {
return ERROR_FD;
}
- listening_fd_array = launch_data_dict_lookup(sockets_dict, ":0");
+ listening_fd_array = launch_data_dict_lookup(sockets_dict, LAUNCHD_ID_PREFIX":0");
if (NULL == listening_fd_array) {
- fprintf(stderr,"launchd check-in: No known sockets found to answer requests on!\n");
- return ERROR_FD;
+ listening_fd_array = launch_data_dict_lookup(sockets_dict, ":0");
+ if (NULL == listening_fd_array) {
+ fprintf(stderr,"launchd check-in: No known sockets found to answer requests on! \"%s:0\" and \":0\" failed.\n", LAUNCHD_ID_PREFIX);
+ return ERROR_FD;
+ }
}
if (launch_data_array_get_count(listening_fd_array)!=1) {
diff --git a/hw/xquartz/mach-startup/stub.c b/hw/xquartz/mach-startup/stub.c
index 7eb894c70..7a557bd3f 100644
--- a/hw/xquartz/mach-startup/stub.c
+++ b/hw/xquartz/mach-startup/stub.c
@@ -40,15 +40,11 @@
#include <sys/socket.h>
#include <sys/un.h>
-static char *server_bootstrap_name = "org.x.X11";
-
-/* The launchd startup is only designed for the primary X11.app that is
- * org.x.X11... server_bootstrap_name might be differnet if we were triggered to
- * start by another X11.app.
- */
-#define kX11AppBundleId "org.x.X11"
+#define kX11AppBundleId LAUNCHD_ID_PREFIX".X11"
#define kX11AppBundlePath "/Contents/MacOS/X11"
+static char *server_bootstrap_name = kX11AppBundleId;
+
#include <mach/mach.h>
#include <mach/mach_error.h>
#include <servers/bootstrap.h>
@@ -222,7 +218,7 @@ int main(int argc, char **argv, char **envp) {
sig_t handler;
if(argc == 2 && !strcmp(argv[1], "-version")) {
- fprintf(stderr, "X.org Release 7.3\n");
+ fprintf(stderr, "X.org Release 7.4\n");
fprintf(stderr, "X.Org X Server %s\n", XSERVER_VERSION);
fprintf(stderr, "Build Date: %s\n", BUILD_DATE);
return EXIT_SUCCESS;
diff --git a/hw/xquartz/pbproxy/x-selection.h b/hw/xquartz/pbproxy/x-selection.h
index d5bfcb5e7..fc903d0af 100644
--- a/hw/xquartz/pbproxy/x-selection.h
+++ b/hw/xquartz/pbproxy/x-selection.h
@@ -41,6 +41,7 @@
struct propdata {
unsigned char *data;
size_t length;
+ int format;
};
struct atom_list {
diff --git a/hw/xquartz/pbproxy/x-selection.m b/hw/xquartz/pbproxy/x-selection.m
index cd540be98..4f2d848fb 100644
--- a/hw/xquartz/pbproxy/x-selection.m
+++ b/hw/xquartz/pbproxy/x-selection.m
@@ -77,7 +77,7 @@ static struct {
@implementation x_selection
-static struct propdata null_propdata = {NULL, 0};
+static struct propdata null_propdata = {NULL, 0, 0};
#ifdef DEBUG
static void
@@ -212,6 +212,7 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, Ato
pdata->data = buf;
pdata->length = buflen;
+ pdata->format = format;
return /*success*/ False;
}
@@ -223,21 +224,20 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, Ato
- (Atom) find_preferred:(struct propdata *)pdata
{
Atom a = None;
- size_t i;
+ size_t i, step;
Bool png = False, jpeg = False, utf8 = False, string = False;
TRACE ();
- if (pdata->length % sizeof (a))
+ if (pdata->format != 32)
{
- fprintf(stderr, "Atom list is not a multiple of the size of an atom!\n");
+ fprintf(stderr, "Atom list is expected to be formatted as an array of 32bit values.\n");
return None;
}
- for (i = 0; i < pdata->length; i += sizeof (a))
+ for (i = 0, step = pdata->format >> 3; i < pdata->length; i += step)
{
- a = None;
- memcpy (&a, pdata->data + i, sizeof (a));
+ a = (Atom)*(uint32_t *)(pdata->data + i);
if (a == atoms->image_png)
{
diff --git a/hw/xquartz/pseudoramiX.c b/hw/xquartz/pseudoramiX.c
index f4ceff32b..1de7af6dc 100644
--- a/hw/xquartz/pseudoramiX.c
+++ b/hw/xquartz/pseudoramiX.c
@@ -307,7 +307,7 @@ static int ProcPseudoramiXQueryScreens(ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.number = noPseudoramiXExtension ? 0 : pseudoramiXNumScreens;
- rep.length = rep.number * sz_XineramaScreenInfo >> 2;
+ rep.length = bytes_to_int32(rep.number * sz_XineramaScreenInfo);
if (client->swapped) {
register int n;
swaps (&rep.sequenceNumber, n);
diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c
index 3f8f8b9e9..ca8b24595 100644
--- a/hw/xquartz/quartz.c
+++ b/hw/xquartz/quartz.c
@@ -45,7 +45,7 @@
#include "X11Application.h"
-#include <X11/extensions/applewm.h>
+#include <X11/extensions/applewmconst.h>
#include <X11/extensions/randr.h>
// X headers
diff --git a/hw/xquartz/quartzAudio.c b/hw/xquartz/quartzAudio.c
index 21232665a..8cf241738 100644
--- a/hw/xquartz/quartzAudio.c
+++ b/hw/xquartz/quartzAudio.c
@@ -211,14 +211,20 @@ QuartzAudioIOProc(
/*
- * QuartzCoreAudioBell
- * Play a tone using the CoreAudio API
+ * DDXRingBell
+ * Play a tone using the CoreAudio API
*/
-static void QuartzCoreAudioBell(
+void DDXRingBell(
int volume, // volume is % of max
int pitch, // pitch is Hz
int duration ) // duration is milliseconds
{
+ if (quartzUseSysBeep) {
+ if (volume)
+ NSBeep();
+ return;
+ }
+
if (quartzAudioDevice == kAudioDeviceUnknown) return;
pthread_mutex_lock(&data.lock);
@@ -239,7 +245,7 @@ static void QuartzCoreAudioBell(
OSStatus status;
status = AudioDeviceStart(quartzAudioDevice, QuartzAudioIOProc);
if (status) {
- ErrorF("QuartzAudioBell: AudioDeviceStart returned %ld\n", (long)status);
+ ErrorF("DDXRingBell: AudioDeviceStart returned %ld\n", (long)status);
} else {
data.playing = TRUE;
}
@@ -247,40 +253,6 @@ static void QuartzCoreAudioBell(
pthread_mutex_unlock(&data.lock);
}
-
-/*
- * QuartzBell
- * Ring the bell
- */
-void QuartzBell(
- int volume, // volume in percent of max
- DeviceIntPtr pDevice,
- pointer ctrl,
- int class )
-{
- int pitch; // pitch in Hz
- int duration; // duration in milliseconds
-
- if (class == BellFeedbackClass) {
- pitch = ((BellCtrl*)ctrl)->pitch;
- duration = ((BellCtrl*)ctrl)->duration;
- } else if (class == KbdFeedbackClass) {
- pitch = ((KeybdCtrl*)ctrl)->bell_pitch;
- duration = ((KeybdCtrl*)ctrl)->bell_duration;
- } else {
- ErrorF("QuartzBell: bad bell class %d\n", class);
- return;
- }
-
- if (quartzUseSysBeep) {
- if (volume)
- NSBeep();
- } else {
- QuartzCoreAudioBell(volume, pitch, duration);
- }
-}
-
-
/*
* QuartzAudioInit
* Prepare to play the bell with the CoreAudio API
diff --git a/hw/xquartz/quartzAudio.h b/hw/xquartz/quartzAudio.h
index c406bbc2a..2a78b3957 100644
--- a/hw/xquartz/quartzAudio.h
+++ b/hw/xquartz/quartzAudio.h
@@ -32,9 +32,6 @@
#ifndef _QUARTZAUDIO_H
#define _QUARTZAUDIO_H
-#include "input.h"
-
void QuartzAudioInit(void);
-void QuartzBell(int volume, DeviceIntPtr pDevice, pointer ctrl, int class);
#endif
diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
index 2b8cb13f8..4abf4af7f 100644
--- a/hw/xquartz/quartzKeyboard.c
+++ b/hw/xquartz/quartzKeyboard.c
@@ -68,6 +68,9 @@
#include "X11/keysym.h"
#include "keysym2ucs.h"
+extern void
+CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master);
+
enum {
MOD_COMMAND = 256,
MOD_SHIFT = 512,
@@ -277,17 +280,13 @@ static void DarwinBuildModifierMaps(darwinKeyboardInfo *info) {
* Load the keyboard map from a file or system and convert
* it to an equivalent X keyboard map and modifier map.
*/
-static void DarwinLoadKeyboardMapping(KeySymsRec *keySyms) {
- pthread_mutex_lock(&keyInfo_mutex);
-
+static void DarwinLoadKeyboardMapping(KeySymsRec *keySyms) {
DarwinBuildModifierMaps(&keyInfo);
keySyms->map = keyInfo.keyMap;
keySyms->mapWidth = GLYPHS_PER_KEY;
keySyms->minKeyCode = MIN_KEYCODE;
keySyms->maxKeyCode = MAX_KEYCODE;
-
- pthread_mutex_unlock(&keyInfo_mutex);
}
/*
@@ -323,12 +322,17 @@ void DarwinKeyboardInit(DeviceIntPtr pDev) {
// for a kIOHIDParamConnectType connection.
assert(darwinParamConnect = NXOpenEventStatus());
- DarwinLoadKeyboardMapping(&keySyms);
-
bzero(&names, sizeof(names));
- InitKeyboardDeviceStruct(pDev, NULL, QuartzBell,
- DarwinChangeKeyboardControl);
+ /* We need to really have rules... or something... */
+ //XkbSetRulesDflts("base", "pc105", "us", NULL, NULL);
+
+ InitKeyboardDeviceStruct(pDev, NULL, NULL, DarwinChangeKeyboardControl);
+
+ pthread_mutex_lock(&keyInfo_mutex);
+ DarwinLoadKeyboardMapping(&keySyms);
+ DarwinKeyboardSetDeviceKeyMap(&keySyms, keyInfo.modMap);
+ pthread_mutex_unlock(&keyInfo_mutex);
/* Get our key repeat settings from GlobalPreferences */
(void)CFPreferencesAppSynchronize(CFSTR(".GlobalPreferences"));
@@ -349,7 +353,7 @@ void DarwinKeyboardInit(DeviceIntPtr pDev) {
XkbSetRepeatKeys(pDev, -1, AutoRepeatModeOn);
}
- DarwinKeyboardSetDeviceKeyMap(&keySyms, keyInfo.modMap);
+ CopyKeyClass(pDev, inputInfo.keyboard);
}
void DarwinKeyboardReloadHandler(int screenNum, xEventPtr xe, DeviceIntPtr pDev, int nevents) {
@@ -361,8 +365,11 @@ void DarwinKeyboardReloadHandler(int screenNum, xEventPtr xe, DeviceIntPtr pDev,
// xfree(pDev->key);
// }
+
+ pthread_mutex_lock(&keyInfo_mutex);
DarwinLoadKeyboardMapping(&keySyms);
DarwinKeyboardSetDeviceKeyMap(&keySyms, keyInfo.modMap);
+ pthread_mutex_unlock(&keyInfo_mutex);
}
//-----------------------------------------------------------------------------
@@ -398,21 +405,22 @@ int DarwinModifierNXKeyToNXKeycode(int key, int side) {
int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide) {
int key, side;
- pthread_mutex_lock(&keyInfo_mutex);
keycode += MIN_KEYCODE;
+
// search modifierKeycodes for this keycode+side
+ pthread_mutex_lock(&keyInfo_mutex);
for (key = 0; key < NX_NUMMODIFIERS; key++) {
for (side = 0; side <= 1; side++) {
if (keyInfo.modifierKeycodes[key][side] == keycode) break;
}
}
+ pthread_mutex_unlock(&keyInfo_mutex);
+
if (key == NX_NUMMODIFIERS) {
- pthread_mutex_unlock(&keyInfo_mutex);
return -1;
}
if (outSide) *outSide = side;
- pthread_mutex_unlock(&keyInfo_mutex);
return key;
}
diff --git a/hw/xquartz/xpr/xpr.h b/hw/xquartz/xpr/xpr.h
index b329ca118..c657e1586 100644
--- a/hw/xquartz/xpr/xpr.h
+++ b/hw/xquartz/xpr/xpr.h
@@ -53,8 +53,7 @@ void QuartzResumeXCursor(ScreenPtr pScreen, int x, int y);
* See CGWindowLevel.h
*/
-#define _APPLEWM_SERVER_
-#include <X11/extensions/applewm.h>
+#include <X11/extensions/applewmconst.h>
static const int normal_window_levels[AppleWMNumWindowLevels+1] = {
0, 3, 4, 5, INT_MIN + 30, INT_MIN + 29,
};
diff --git a/hw/xquartz/xpr/xprAppleWM.c b/hw/xquartz/xpr/xprAppleWM.c
index 9c44e20a2..4b31e3a11 100644
--- a/hw/xquartz/xpr/xprAppleWM.c
+++ b/hw/xquartz/xpr/xprAppleWM.c
@@ -33,8 +33,7 @@
#include "xpr.h"
-#define _APPLEWM_SERVER_
-#include <X11/extensions/applewmstr.h>
+#include <X11/extensions/applewmproto.h>
#include "applewmExt.h"
#include "rootless.h"
@@ -82,6 +81,34 @@ static int xprSetWindowLevel(
return Success;
}
+#if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 3
+static int xprAttachTransient(WindowPtr pWinChild, WindowPtr pWinParent) {
+ xp_window_id child_wid, parent_wid;
+ xp_window_changes wc;
+
+ child_wid = x_cvt_vptr_to_uint(RootlessFrameForWindow(pWinChild, TRUE));
+ if (child_wid == 0)
+ return BadWindow;
+
+ if(pWinParent) {
+ parent_wid = x_cvt_vptr_to_uint(RootlessFrameForWindow(pWinParent, TRUE));
+ if (parent_wid == 0)
+ return BadWindow;
+ } else {
+ parent_wid = 0;
+ }
+
+ wc.transient_for = parent_wid;
+
+ RootlessStopDrawing (pWinChild, FALSE);
+
+ if (xp_configure_window(child_wid, XP_ATTACH_TRANSIENT, &wc) != Success) {
+ return BadValue;
+ }
+
+ return Success;
+}
+#endif
static int xprFrameDraw(
WindowPtr pWin,
@@ -114,9 +141,14 @@ static AppleWMProcsRec xprAppleWMProcs = {
xp_frame_get_rect,
xp_frame_hit_test,
xprFrameDraw,
-#if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 2
- xp_set_dock_proxy
+#if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 3
+ xp_set_dock_proxy,
+ xprAttachTransient
+#elif defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 2
+ xp_set_dock_proxy,
+ NULL
#else
+ NULL,
NULL
#endif
};
diff --git a/hw/xquartz/xpr/xprCursor.c b/hw/xquartz/xpr/xprCursor.c
index 4345beea4..8c47b671c 100644
--- a/hw/xquartz/xpr/xprCursor.c
+++ b/hw/xquartz/xpr/xprCursor.c
@@ -128,7 +128,7 @@ load_cursor(CursorPtr src, int screen)
while (ycount-- > 0)
{
- xcount = (src->bits->width + 7) / 8;
+ xcount = bits_to_bytes(src->bits->width);
sptr = srow; mptr = mrow;
dptr = drow;
diff --git a/hw/xquartz/xpr/xprScreen.c b/hw/xquartz/xpr/xprScreen.c
index 1fac9ec60..3387ecf0a 100644
--- a/hw/xquartz/xpr/xprScreen.c
+++ b/hw/xquartz/xpr/xprScreen.c
@@ -48,6 +48,8 @@
#include "applewmExt.h"
#include "micmap.h"
+#include "rootlessCommon.h"
+
#ifdef DAMAGE
# include "damage.h"
#endif
@@ -275,22 +277,9 @@ xprAddScreen(int index, ScreenPtr pScreen)
if(depth == -1) {
depth = CGDisplaySamplesPerPixel(kCGDirectMainDisplay) * CGDisplayBitsPerSample(kCGDirectMainDisplay);
- //dfb->depth = CGDisplaySamplesPerPixel(kCGDirectMainDisplay) * CGDisplayBitsPerSample(kCGDirectMainDisplay);
- //dfb->bitsPerRGB = CGDisplayBitsPerSample(kCGDirectMainDisplay);
- //dfb->bitsPerPixel = CGDisplayBitsPerPixel(kCGDirectMainDisplay);
}
switch(depth) {
-// case -8: // broken
-// dfb->visuals = (1 << StaticGray) | (1 << GrayScale);
-// dfb->preferredCVC = GrayScale;
-// dfb->depth = 8;
-// dfb->bitsPerRGB = 8;
-// dfb->bitsPerPixel = 8;
-// dfb->redMask = 0;
-// dfb->greenMask = 0;
-// dfb->blueMask = 0;
-// break;
case 8: // pseudo-working
dfb->visuals = PseudoColorMask;
dfb->preferredCVC = PseudoColor;
@@ -302,27 +291,27 @@ xprAddScreen(int index, ScreenPtr pScreen)
dfb->blueMask = 0;
break;
case 15:
- dfb->visuals = LARGE_VISUALS;
+ dfb->visuals = TrueColorMask; //LARGE_VISUALS;
dfb->preferredCVC = TrueColor;
dfb->depth = 15;
dfb->bitsPerRGB = 5;
dfb->bitsPerPixel = 16;
- dfb->redMask = 0x7c00;
- dfb->greenMask = 0x03e0;
- dfb->blueMask = 0x001f;
+ dfb->redMask = RM_ARGB(0,5,5,5);
+ dfb->greenMask = GM_ARGB(0,5,5,5);
+ dfb->blueMask = BM_ARGB(0,5,5,5);
break;
// case 24:
default:
if(depth != 24)
ErrorF("Unsupported color depth requested. Defaulting to 24bit. (depth=%d darwinDesiredDepth=%d CGDisplaySamplesPerPixel=%d CGDisplayBitsPerSample=%d)\n", darwinDesiredDepth, depth, (int)CGDisplaySamplesPerPixel(kCGDirectMainDisplay), (int)CGDisplayBitsPerSample(kCGDirectMainDisplay));
- dfb->visuals = LARGE_VISUALS;
+ dfb->visuals = TrueColorMask; //LARGE_VISUALS;
dfb->preferredCVC = TrueColor;
dfb->depth = 24;
dfb->bitsPerRGB = 8;
dfb->bitsPerPixel = 32;
- dfb->redMask = 0x00ff0000;
- dfb->greenMask = 0x0000ff00;
- dfb->blueMask = 0x000000ff;
+ dfb->redMask = RM_ARGB(0,8,8,8);
+ dfb->greenMask = GM_ARGB(0,8,8,8);
+ dfb->blueMask = BM_ARGB(0,8,8,8);
break;
}
diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c
index 2d17aaf81..2f4b0d222 100644
--- a/hw/xwin/InitOutput.c
+++ b/hw/xwin/InitOutput.c
@@ -956,7 +956,7 @@ InitOutput (ScreenInfo *screenInfo, int argc, char *argv[])
if (!winReadConfigfile ())
winErrorFVerb (1, "InitOutput - Error reading config file\n");
#else
- winMsg(X_INFO, "XF86Config is not supported\n");
+ winMsg(X_INFO, "xorg.conf is not supported\n");
winMsg(X_INFO, "See http://x.cygwin.com/docs/faq/cygwin-x-faq.html "
"for more information\n");
winConfigFiles ();
diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am
index 0ecb526be..2c7972a7f 100644
--- a/hw/xwin/Makefile.am
+++ b/hw/xwin/Makefile.am
@@ -34,6 +34,7 @@ SRCS_MULTIWINDOWEXTWM = \
winwin32rootlesswndproc.c \
winwindowswm.c
DEFS_MULTIWINDOWEXTWM = -DXWIN_MULTIWINDOWEXTWM
+MULTIWINDOWEXTWM_LIBS = $(top_builddir)/miext/rootless/librootless.la
endif
if XWIN_NATIVEGDI
@@ -147,7 +148,7 @@ XWin_SOURCES = $(SRCS)
INCLUDES = -I$(top_srcdir)/miext/rootless
XWin_DEPENDENCIES = $(XWIN_LIBS)
-XWin_LDADD = $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS)
+XWin_LDADD = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS)
.rc.o:
$(WINDRES) --use-temp-file -i $< --input-format=rc -o $@ -O coff -DPROJECT_NAME=\"$(VENDOR_NAME_SHORT)\"
@@ -158,7 +159,7 @@ winprefsyacc.h: winprefsyacc.c
winprefslex.c: winprefslex.l winprefsyacc.c winprefsyacc.h
BUILT_SOURCES = winprefsyacc.h winprefsyacc.c winprefslex.c
-CLEANFILES = $(BUILT_SOURCES)
+CLEANFILES = $(BUILT_SOURCES) $(appman_DATA) $(fileman_DATA) XWin.man XWinrc.man
AM_YFLAGS = -d
AM_LFLAGS = -i
@@ -166,15 +167,34 @@ AM_CFLAGS = -DHAVE_XWIN_CONFIG_H $(DIX_CFLAGS) \
$(XWINMODULES_CFLAGS) \
-DXFree86Server
-dist_man1_MANS = XWin.man XWinrc.man
-
GLX_EXTRAS = \
glx/glwindows.h \
glx/glwrap.c \
glx/indirect.c
+MAN_SRCS = XWin.man.pre XWinrc.man.pre
+
+appmandir = $(APP_MAN_DIR)
+appman_DATA = XWin.$(APP_MAN_SUFFIX)
+
+filemandir = $(FILE_MAN_DIR)
+fileman_DATA = XWinrc.$(FILE_MAN_SUFFIX)
+
+XWin.$(APP_MAN_SUFFIX): XWin.man
+ -rm -f XWin.$(APP_MAN_SUFFIX)
+ $(LN_S) XWin.man XWin.$(APP_MAN_SUFFIX)
+
+XWinrc.$(FILE_MAN_SUFFIX): XWinrc.man
+ -rm -f XWinrc.$(FILE_MAN_SUFFIX)
+ $(LN_S) XWinrc.man XWinrc.$(FILE_MAN_SUFFIX)
+
+EXTRAMANDEFS = -D__logdir__=$(logdir) -D__sysconfdir__=$(sysconfdir) -D__datadir__=$(datadir)
+
+include $(top_srcdir)/cpprules.in
+
EXTRA_DIST = \
$(GLX_EXTRAS) \
+ $(MAN_SRCS) \
_usr_X11R6_lib_X11_system.XWinrc \
X-boxed.ico \
X.ico \
diff --git a/hw/xwin/XWin.man b/hw/xwin/XWin.man.pre
index 4e70c19f5..9649e2e60 100644
--- a/hw/xwin/XWin.man
+++ b/hw/xwin/XWin.man.pre
@@ -48,14 +48,14 @@ operations on the individual X windows.
.SH LOG
As it runs \fIXWin\fP writes messages indicating the most relevant events
to the console
-from which it was called and to a log file that by default is located at
-\fI/tmp/XWin.log\fP. This file is mainly for debugging purposes.
+from which it was called and to a log file that by default is located at \fI
+__logdir__/XWin.0.log\fP. This file is mainly for debugging purposes.
.SH PREFERENCES FILE
On startup \fIXWin\fP looks for the file \fI$HOME/.XWinrc\fP or, if
-the previous file does not exist,
-\fI/usr/X11R6/lib/X11/system.XWinrc\fP. \fI.XWinrc\fP allows setting
+the previous file does not exist, \fI
+__sysconfdir__/X11/system.XWinrc\fP. \fI.XWinrc\fP allows setting
preferences for the following:
.br
1- To include items into the menu associated with the \fIXWin\fP icon
@@ -102,7 +102,7 @@ respectively).
.B "\-emulate3buttons \fItimeout\fP"
Emulate a three button mouse; pressing both buttons within
.I timeout
-milliseconds causes an emulated middle button press. The default
+milliseconds causes an emulated middle button press. The default
.I timeout
is 50 milliseconds. Note that most mice with scroll wheel have middle
button functionality, usually you will need this option only if you have
@@ -155,8 +155,8 @@ prevents the Windows mouse cursor from being placed overtop of the X
cursor.
.TP 8
.B "\-logfile \fIFile_Name\fP"
-Change the log file from the default located at \fI/tmp/XWin.log\fP to
-the one indicated by \fIFile_Name\fP.
+Change the log file from the default located at \fI
+__logdir__/XWin.0.log\fP to the one indicated by \fIFile_Name\fP.
.TP 8
.B "\-logverbose \fIlevel\fP"
Control the degree of verbosity of the log messages with the integer
@@ -229,9 +229,10 @@ The \fIAlt-F4\fP key combination is enabled by default.
.TP 8
.B \-swcursor
Disable the usage of the windows cursor and use the X11 software cursor instead.
+.TP 8
.B \-silent-dup-error
-If another instance of XWin is found running, exit silently and don't display
-the error messge.
+If another instance of XWin is found running, exit silently and don't display
+the error message.
.TP 8
.B "\-xkblayout \fIlayout\fP"
.TP 8
@@ -244,8 +245,8 @@ the error messge.
.B "\-xkbvariant \fIvariant\fp"
These options implement the xkeyboard extension for loading
a particular keyboard map as the X server starts. The behavior is similar
-to the \fIsetxkbmap\fP program. The layout data is located at
-\fI/usr/X11R6/lib/X11/xkb/\fP. Additional information is found in the
+to the \fIsetxkbmap\fP program. The layout data is located at \fI
+__datadir__/X11/xkb/\fP. Additional information is found in the
README files therein and in the man page of \fIsetxkbmap\fP. For example
in order to load a German layout for a pc105 keyboard one uses
the options:
@@ -258,7 +259,7 @@ keyboard maps.
.SH "SEE ALSO"
-X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), XWinrc(1), setxkbmap(1)
+X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), XWinrc(__filemansuffix__), setxkbmap(1)
.SH BUGS
@@ -269,7 +270,7 @@ ones are:
- The display mode can not be changed once the X server has started.
.br
- The XWin software is developing rapidly; it is therefore likely that
-this man page is not up to date. It is always prudent to
+this man page is not up to date. It is always prudent to
look also at the output of \fIXWin -help\fP and to the Cygwin/X User Guide
at /usr/share/doc/cygwin-x-doc-x.x.x/ug/cygwin-x-ug.xxx in order to
check the options that are operative.
diff --git a/hw/xwin/XWinrc.man b/hw/xwin/XWinrc.man.pre
index 8e2498cdb..4fb436ddd 100755
--- a/hw/xwin/XWinrc.man
+++ b/hw/xwin/XWinrc.man.pre
@@ -9,7 +9,8 @@ XWinrc\- XWin Server Resource Configuration File.
The X Server for the X Window System on the Cygwin/X environment
running on Microsoft Windows, \fIXWin\fP can be optionally configured
with the \fIXWinrc\fP file. A system-wide configuration file should
-be placed in \fI/usr/X11R6/lib/X11/system.XWinrc\fP, a per-user file
+be placed in \fI
+__sysconfdir__/X11/system.XWinrc\fP, a per-user file
should be put at \fI$HOME/.XWinrc\fP. The \fIsystem.XWinrc\fP file is
read only if no \fI$HOME/.XWinrc\fP exist.
.PP
@@ -54,7 +55,7 @@ There are four kinds of instructions: miscellaneous, menu, icon and style.
.SH Miscellaneous instruction
.TP 8
.B DEBUG \fIString\fP
-The \fIString\fP is printed to the XWin.log file.
+The \fIString\fP is printed to the XWin log file.
.TP 8
.B TRAYICON \fIicon-specifier\fB
diff --git a/hw/xwin/winclipboardinit.c b/hw/xwin/winclipboardinit.c
index 3e73bc610..bec63ac8e 100644
--- a/hw/xwin/winclipboardinit.c
+++ b/hw/xwin/winclipboardinit.c
@@ -92,10 +92,11 @@ winInitClipboard (void)
HWND
winClipboardCreateMessagingWindow (void)
{
- WNDCLASS wc;
+ WNDCLASSEX wc;
HWND hwnd;
/* Setup our window class */
+ wc.cbSize=sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = winClipboardWindowProc;
wc.cbClsExtra = 0;
@@ -106,7 +107,8 @@ winClipboardCreateMessagingWindow (void)
wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = WIN_CLIPBOARD_WINDOW_CLASS;
- RegisterClass (&wc);
+ wc.hIconSm = 0;
+ RegisterClassEx (&wc);
/* Create the window */
hwnd = CreateWindowExA (0, /* Extended styles */
diff --git a/hw/xwin/winclipboardwndproc.c b/hw/xwin/winclipboardwndproc.c
index 65faedf65..292ca872b 100644
--- a/hw/xwin/winclipboardwndproc.c
+++ b/hw/xwin/winclipboardwndproc.c
@@ -38,9 +38,6 @@
#include "winclipboard.h"
#include "misc.h"
-extern void winFixClipboardChain();
-
-
/*
* Constants
*/
diff --git a/hw/xwin/wincreatewnd.c b/hw/xwin/wincreatewnd.c
index 85b6cf8a9..0c342e1ae 100644
--- a/hw/xwin/wincreatewnd.c
+++ b/hw/xwin/wincreatewnd.c
@@ -63,7 +63,7 @@ winCreateBoundingWindowFullScreen (ScreenPtr pScreen)
int iWidth = pScreenInfo->dwWidth;
int iHeight = pScreenInfo->dwHeight;
HWND *phwnd = &pScreenPriv->hwndScreen;
- WNDCLASS wc;
+ WNDCLASSEX wc;
char szTitle[256];
#if CYGDEBUG
@@ -71,17 +71,21 @@ winCreateBoundingWindowFullScreen (ScreenPtr pScreen)
#endif
/* Setup our window class */
+ wc.cbSize=sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = winWindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = g_hInstance;
- wc.hIcon = LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN));
+ wc.hIcon = (HICON)LoadImage (g_hInstance, MAKEINTRESOURCE(IDI_XWIN), IMAGE_ICON,
+ GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), 0);
wc.hCursor = 0;
wc.hbrBackground = 0;
wc.lpszMenuName = NULL;
wc.lpszClassName = WINDOW_CLASS;
- RegisterClass (&wc);
+ wc.hIconSm = (HICON)LoadImage (g_hInstance, MAKEINTRESOURCE(IDI_XWIN), IMAGE_ICON,
+ GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_DEFAULTSIZE);
+ RegisterClassEx (&wc);
/* Set display and screen-specific tooltip text */
if (g_pszQueryHost != NULL)
@@ -152,7 +156,7 @@ winCreateBoundingWindowWindowed (ScreenPtr pScreen)
int iPosX;
int iPosY;
HWND *phwnd = &pScreenPriv->hwndScreen;
- WNDCLASS wc;
+ WNDCLASSEX wc;
RECT rcClient, rcWorkArea;
DWORD dwWindowStyle;
BOOL fForceShowWindow = FALSE;
@@ -195,17 +199,21 @@ winCreateBoundingWindowWindowed (ScreenPtr pScreen)
dwWindowStyle |= WS_POPUP;
/* Setup our window class */
+ wc.cbSize=sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = winWindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = g_hInstance;
- wc.hIcon = LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN));
+ wc.hIcon = (HICON)LoadImage (g_hInstance, MAKEINTRESOURCE(IDI_XWIN), IMAGE_ICON,
+ GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), 0);
wc.hCursor = 0;
wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = WINDOW_CLASS;
- RegisterClass (&wc);
+ wc.hIconSm = (HICON)LoadImage (g_hInstance, MAKEINTRESOURCE(IDI_XWIN), IMAGE_ICON,
+ GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_DEFAULTSIZE);
+ RegisterClassEx (&wc);
/* Get size of work area */
winGetWorkArea (&rcWorkArea, pScreenInfo);
diff --git a/hw/xwin/wincursor.c b/hw/xwin/wincursor.c
index 952560844..ce98162ef 100644
--- a/hw/xwin/wincursor.c
+++ b/hw/xwin/wincursor.c
@@ -43,8 +43,6 @@
extern Bool g_fSoftwareCursor;
-#define BYTE_COUNT(x) (((x) + 7) / 8)
-
#define BRIGHTNESS(x) (x##Red * 0.299 + x##Green * 0.587 + x##Blue * 0.114)
#if 0
@@ -95,8 +93,16 @@ winPointerWarpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
return;
}
- /* Only update the Windows cursor position if we are active */
- if (pScreenPriv->hwndScreen == GetForegroundWindow ())
+ /*
+ Only update the Windows cursor position if root window is active,
+ or we are in a rootless mode
+ */
+ if ((pScreenPriv->hwndScreen == GetForegroundWindow ())
+ || pScreenPriv->pScreenInfo->fRootless
+#ifdef XWIN_MULTIWINDOW
+ || pScreenPriv->pScreenInfo->fMultiWindow
+#endif
+ )
{
/* Get the client area coordinates */
GetClientRect (pScreenPriv->hwndScreen, &rcClient);
@@ -191,7 +197,7 @@ winLoadCursor (ScreenPtr pScreen, CursorPtr pCursor, int screen)
/* Get the number of bytes required to store the whole cursor image
* This is roughly (sm_cx * sm_cy) / 8
* round up to 8 pixel boundary so we can convert whole bytes */
- nBytes = BYTE_COUNT(pScreenPriv->cursor.sm_cx) * pScreenPriv->cursor.sm_cy;
+ nBytes = bits_to_bytes(pScreenPriv->cursor.sm_cx) * pScreenPriv->cursor.sm_cy;
/* Get the effective width and height */
nCX = min(pScreenPriv->cursor.sm_cx, pCursor->bits->width);
@@ -206,11 +212,11 @@ winLoadCursor (ScreenPtr pScreen, CursorPtr pCursor, int screen)
* The first is for an empty mask */
if (pCursor->bits->emptyMask)
{
- int x, y, xmax = BYTE_COUNT(nCX);
+ int x, y, xmax = bits_to_bytes(nCX);
for (y = 0; y < nCY; ++y)
for (x = 0; x < xmax; ++x)
{
- int nWinPix = BYTE_COUNT(pScreenPriv->cursor.sm_cx) * y + x;
+ int nWinPix = bits_to_bytes(pScreenPriv->cursor.sm_cx) * y + x;
int nXPix = BitmapBytePad(pCursor->bits->width) * y + x;
pAnd[nWinPix] = 0;
@@ -222,11 +228,11 @@ winLoadCursor (ScreenPtr pScreen, CursorPtr pCursor, int screen)
}
else
{
- int x, y, xmax = BYTE_COUNT(nCX);
+ int x, y, xmax = bits_to_bytes(nCX);
for (y = 0; y < nCY; ++y)
for (x = 0; x < xmax; ++x)
{
- int nWinPix = BYTE_COUNT(pScreenPriv->cursor.sm_cx) * y + x;
+ int nWinPix = bits_to_bytes(pScreenPriv->cursor.sm_cx) * y + x;
int nXPix = BitmapBytePad(pCursor->bits->width) * y + x;
unsigned char mask = pCursor->bits->mask[nXPix];
@@ -315,7 +321,7 @@ winLoadCursor (ScreenPtr pScreen, CursorPtr pCursor, int screen)
(*pCur++) = 0;
else /* Within X11 icon bounds */
{
- int nWinPix = BYTE_COUNT(pScreenPriv->cursor.sm_cx) * y + (x/8);
+ int nWinPix = bits_to_bytes(pScreenPriv->cursor.sm_cx) * y + (x/8);
bit = pAnd[nWinPix];
bit = bit & (1<<(7-(x&7)));
diff --git a/hw/xwin/windialogs.c b/hw/xwin/windialogs.c
index 274c04618..31a3766a6 100755
--- a/hw/xwin/windialogs.c
+++ b/hw/xwin/windialogs.c
@@ -54,6 +54,10 @@ extern Bool g_fClipboardStarted;
#endif
extern Bool g_fSoftwareCursor;
+#if defined(XWIN_MULTIWINDOW)
+extern HICON g_hIconX;
+extern HICON g_hSmallIconX;
+#endif
/*
* Local function prototypes
@@ -146,7 +150,7 @@ winURLWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
SetCursor (cursor);
return TRUE;
}
- origCB = (WNDPROC)GetWindowLong (hwnd, GWL_USERDATA);
+ origCB = (WNDPROC)GetWindowLongPtr(hwnd, GWLP_USERDATA);
/* Otherwise fall through to original WndProc */
if (origCB)
return CallWindowProc (origCB, hwnd, msg, wParam, lParam);
@@ -163,19 +167,19 @@ static void
winOverrideURLButton (HWND hwnd, int id)
{
WNDPROC origCB;
- origCB = (WNDPROC)SetWindowLong (GetDlgItem (hwnd, id),
- GWL_WNDPROC, (LONG)winURLWndProc);
- SetWindowLong (GetDlgItem (hwnd, id), GWL_USERDATA, (LONG)origCB);
+ origCB = (WNDPROC)SetWindowLongPtr(GetDlgItem (hwnd, id),
+ GWLP_WNDPROC, (LONG_PTR)winURLWndProc);
+ SetWindowLongPtr(GetDlgItem (hwnd, id), GWLP_USERDATA, (LONG_PTR)origCB);
}
static void
winUnoverrideURLButton (HWND hwnd, int id)
{
WNDPROC origCB;
- origCB = (WNDPROC)SetWindowLong (GetDlgItem (hwnd, id),
- GWL_USERDATA, 0);
+ origCB = (WNDPROC)SetWindowLongPtr(GetDlgItem (hwnd, id),
+ GWLP_USERDATA, 0);
if (origCB)
- SetWindowLong (GetDlgItem (hwnd, id), GWL_WNDPROC, (LONG)origCB);
+ SetWindowLongPtr(GetDlgItem (hwnd, id), GWLP_WNDPROC, (LONG_PTR)origCB);
}
@@ -196,13 +200,13 @@ winInitDialog (HWND hwndDlg)
hwndDesk = GetDesktopWindow ();
/* Remove minimize and maximize buttons */
- SetWindowLong (hwndDlg, GWL_STYLE,
- GetWindowLong (hwndDlg, GWL_STYLE)
- & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX));
+ SetWindowLongPtr(hwndDlg, GWL_STYLE,
+ GetWindowLongPtr(hwndDlg, GWL_STYLE)
+ & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX));
/* Set Window not to show in the task bar */
- SetWindowLong (hwndDlg, GWL_EXSTYLE,
- GetWindowLong (hwndDlg, GWL_EXSTYLE) & ~WS_EX_APPWINDOW );
+ SetWindowLongPtr(hwndDlg, GWL_EXSTYLE,
+ GetWindowLongPtr(hwndDlg, GWL_EXSTYLE) & ~WS_EX_APPWINDOW );
/* Center dialog window in the screen. Not done for multi-monitor systems, where
* it is likely to end up split across the screens. In that case, it appears
@@ -229,8 +233,16 @@ winInitDialog (HWND hwndDlg)
SWP_NOSIZE | SWP_FRAMECHANGED);
}
- /* Set icon to standard app icon */
+#ifdef XWIN_MULTIWINDOW
+ if (g_hIconX) hIcon=g_hIconX;
+ else
+#endif
hIcon = LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN));
+
+#ifdef XWIN_MULTIWINDOW
+ if (g_hSmallIconX) hIconSmall=g_hSmallIconX;
+ else
+#endif
hIconSmall = LoadImage (g_hInstance,
MAKEINTRESOURCE(IDI_XWIN), IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON),
@@ -252,7 +264,7 @@ winDisplayExitDialog (winPrivScreenPtr pScreenPriv)
int i;
int liveClients = 0;
- /* Count up running clinets (clients[0] is serverClient) */
+ /* Count up running clients (clients[0] is serverClient) */
for (i = 1; i < currentMaxClients; i++)
if (clients[i] != NullClient)
liveClients++;
@@ -311,7 +323,7 @@ winDisplayExitDialog (winPrivScreenPtr pScreenPriv)
/* Set focus to the Cancel button */
PostMessage (g_hDlgExit, WM_NEXTDLGCTL,
- (int) GetDlgItem (g_hDlgExit, IDCANCEL), TRUE);
+ GetDlgItem (g_hDlgExit, IDCANCEL), TRUE);
}
#define CONNECTED_CLIENTS_FORMAT "There are currently %d clients connected."
@@ -579,7 +591,7 @@ winDisplayAboutDialog (winPrivScreenPtr pScreenPriv)
/* Set focus to the OK button */
PostMessage (g_hDlgAbout, WM_NEXTDLGCTL,
- (int) GetDlgItem (g_hDlgAbout, IDOK), TRUE);
+ GetDlgItem (g_hDlgAbout, IDOK), TRUE);
}
@@ -660,7 +672,7 @@ winAboutDlgProc (HWND hwndDialog, UINT message,
case ID_ABOUT_CHANGELOG:
{
- int iReturn;
+ HINSTANCE iReturn;
#ifdef __CYGWIN__
const char * pszCygPath = "/usr/X11R6/share/doc/"
"xorg-x11-xwin/changelog.html";
@@ -673,12 +685,12 @@ winAboutDlgProc (HWND hwndDialog, UINT message,
"devel/server/changelog.html";
#endif
- iReturn = (int) ShellExecute (NULL,
- "open",
- pszWinPath,
- NULL,
- NULL,
- SW_MAXIMIZE);
+ iReturn = ShellExecute (NULL,
+ "open",
+ pszWinPath,
+ NULL,
+ NULL,
+ SW_MAXIMIZE);
if (iReturn < 32)
{
ErrorF ("winAboutDlgProc - WM_COMMAND - ID_ABOUT_CHANGELOG - "
@@ -693,12 +705,12 @@ winAboutDlgProc (HWND hwndDialog, UINT message,
const char * pszPath = "http://x.cygwin.com/";
int iReturn;
- iReturn = (int) ShellExecute (NULL,
- "open",
- pszPath,
- NULL,
- NULL,
- SW_MAXIMIZE);
+ iReturn = ShellExecute (NULL,
+ "open",
+ pszPath,
+ NULL,
+ NULL,
+ SW_MAXIMIZE);
if (iReturn < 32)
{
ErrorF ("winAboutDlgProc - WM_COMMAND - ID_ABOUT_WEBSITE - "
@@ -713,12 +725,12 @@ winAboutDlgProc (HWND hwndDialog, UINT message,
const char * pszPath = "http://x.cygwin.com/docs/ug/";
int iReturn;
- iReturn = (int) ShellExecute (NULL,
- "open",
- pszPath,
- NULL,
- NULL,
- SW_MAXIMIZE);
+ iReturn = ShellExecute (NULL,
+ "open",
+ pszPath,
+ NULL,
+ NULL,
+ SW_MAXIMIZE);
if (iReturn < 32)
{
ErrorF ("winAboutDlgProc - WM_COMMAND - ID_ABOUT_UG - "
@@ -733,12 +745,12 @@ winAboutDlgProc (HWND hwndDialog, UINT message,
const char * pszPath = "http://x.cygwin.com/docs/faq/";
int iReturn;
- iReturn = (int) ShellExecute (NULL,
- "open",
- pszPath,
- NULL,
- NULL,
- SW_MAXIMIZE);
+ iReturn = ShellExecute (NULL,
+ "open",
+ pszPath,
+ NULL,
+ NULL,
+ SW_MAXIMIZE);
if (iReturn < 32)
{
ErrorF ("winAboutDlgProc - WM_COMMAND - ID_ABOUT_FAQ - "
diff --git a/hw/xwin/winlayouts.h b/hw/xwin/winlayouts.h
index 1fd345705..d1d21a12d 100644
--- a/hw/xwin/winlayouts.h
+++ b/hw/xwin/winlayouts.h
@@ -63,6 +63,7 @@ WinKBLayoutRec winKBLayouts[] =
{ 0x80c, -1, "pc105", "be", NULL, NULL, "French (Belgian)"},
{ 0xc0c, -1, "pc105", "ca", "fr", NULL, "French (Canada)"},
{ 0x100c, -1, "pc105", "ch", "fr", NULL, "French (Switzerland)"},
+ { 0x40d, -1, "pc105", "il", NULL, NULL, "Hebrew"},
{ 0x40e, -1, "pc105", "hu", NULL, NULL, "Hungarian"},
{ 0x40f, -1, "pc105", "is", NULL, NULL, "Icelandic"},
{ 0x410, -1, "pc105", "it", NULL, NULL, "Italian"},
diff --git a/hw/xwin/winms.h b/hw/xwin/winms.h
index 1ad30dc0b..60f7eb906 100644
--- a/hw/xwin/winms.h
+++ b/hw/xwin/winms.h
@@ -35,6 +35,9 @@
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
+#ifndef WINVER
+#define WINVER 0x0500
+#endif
#include <X11/Xwindows.h>
#include <windowsx.h>
diff --git a/hw/xwin/winmultiwindowicons.c b/hw/xwin/winmultiwindowicons.c
index 8200aad88..e16b2a3c8 100644
--- a/hw/xwin/winmultiwindowicons.c
+++ b/hw/xwin/winmultiwindowicons.c
@@ -36,6 +36,10 @@
#include "winmultiwindowclass.h"
#include "winprefs.h"
+#include "propertyst.h"
+
+#include "propertyst.h"
+#include "windowstr.h"
/*
* External global variables
@@ -66,7 +70,7 @@ winScaleXBitmapToWindows (int iconSize,
{
int row, column, effXBPP, effXDepth;
unsigned char *outPtr;
- unsigned char *iconData = 0;
+ char *iconData = 0;
int stride, xStride;
float factX, factY;
int posX, posY;
@@ -126,7 +130,7 @@ winScaleXBitmapToWindows (int iconSize,
posX = factX * column;
posY = factY * row;
- ptr = iconData + posY*xStride;
+ ptr = (unsigned char*) iconData + posY*xStride;
if (effXBPP == 1)
{
ptr += posX / 8;
@@ -187,10 +191,10 @@ winScaleXBitmapToWindows (int iconSize,
switch (effBPP)
{
case 32:
- *(outPtr++) = *(ptr++); // b
- *(outPtr++) = *(ptr++); // g
- *(outPtr++) = *(ptr++); // r
- *(outPtr++) = 0; // resvd
+ *(outPtr++) = *(ptr++); /* b */
+ *(outPtr++) = *(ptr++); /* g */
+ *(outPtr++) = *(ptr++); /* r */
+ *(outPtr++) = (effXDepth == 32) ? *(ptr++) : 0x0; /* alpha */
break;
case 24:
*(outPtr++) = *(ptr++);
@@ -231,7 +235,7 @@ winScaleXBitmapToWindows (int iconSize,
*(outPtr++) = (color & 31) << 2;
*(outPtr++) = ((color >> 5) & 31) << 2;
*(outPtr++) = ((color >> 10) & 31) << 2;
- *(outPtr++) = 0; // resvd
+ *(outPtr++) = 0; /* resvd */
break;
case 24:
*(outPtr++) = (color & 31) << 2;
@@ -260,6 +264,144 @@ winScaleXBitmapToWindows (int iconSize,
free (iconData);
}
+static HICON
+NetWMToWinIconAlpha(uint32_t *icon)
+{
+ int width = icon[0];
+ int height = icon[1];
+ uint32_t *pixels = &icon[2];
+ HICON result;
+ HDC hdc = GetDC(NULL);
+ uint32_t *DIB_pixels;
+ ICONINFO ii = {TRUE};
+ BITMAPV4HEADER bmh = {sizeof(bmh)};
+
+ /* Define an ARGB pixel format used for Color+Alpha icons */
+ bmh.bV4Width = width;
+ bmh.bV4Height = -height; /* Invert the image */
+ bmh.bV4Planes = 1;
+ bmh.bV4BitCount = 32;
+ bmh.bV4V4Compression = BI_BITFIELDS;
+ bmh.bV4AlphaMask = 0xFF000000;
+ bmh.bV4RedMask = 0x00FF0000;
+ bmh.bV4GreenMask = 0x0000FF00;
+ bmh.bV4BlueMask = 0x000000FF;
+
+ ii.hbmColor = CreateDIBSection(hdc, (BITMAPINFO*)&bmh,
+ DIB_RGB_COLORS, (void**)&DIB_pixels, NULL, 0);
+ ReleaseDC(NULL, hdc);
+ ii.hbmMask = CreateBitmap(width, height, 1, 1, NULL);
+ memcpy(DIB_pixels, pixels, height*width*4);
+
+ /* CreateIconIndirect() traditionally required DDBitmaps */
+ /* Systems from WinXP accept 32-bit ARGB DIBitmaps with full 8-bit alpha support */
+ /* The icon is created with a DIB + empty DDB mask (an MS example does the same) */
+ result = CreateIconIndirect(&ii);
+
+ DeleteObject(ii.hbmColor);
+ DeleteObject(ii.hbmMask);
+
+ winDebug("NetWMToWinIconAlpha - %d x %d = %p\n", icon[0], icon[1], result);
+ return result;
+}
+
+static HICON
+NetWMToWinIconThreshold(uint32_t *icon)
+{
+ int width = icon[0];
+ int height = icon[1];
+ uint32_t *pixels = &icon[2];
+ int row, col;
+ HICON result;
+ ICONINFO ii = {TRUE};
+
+ HDC hdc = GetDC(NULL);
+ HDC xorDC = CreateCompatibleDC(hdc);
+ HDC andDC = CreateCompatibleDC(hdc);
+ ii.hbmColor = CreateCompatibleBitmap(hdc, width, height);
+ ii.hbmMask = CreateCompatibleBitmap(hdc, width, height);
+ ReleaseDC(NULL, hdc);
+ SelectObject(xorDC, ii.hbmColor);
+ SelectObject(andDC, ii.hbmMask);
+
+ for (row = 0; row < height; row++) {
+ for (col = 0; col < width; col++) {
+ if ((*pixels & 0xFF000000) > 31<<24) { /* 31 alpha threshold, i.e. opaque above, transparent below */
+ SetPixelV(xorDC, col, row, RGB(((char*)pixels)[2], ((char*)pixels)[1],
+ ((char*)pixels)[0]));
+ SetPixelV(andDC, col, row, RGB(0, 0, 0)); /* black mask */
+ }
+ else {
+ SetPixelV(xorDC, col, row, RGB(0, 0, 0));
+ SetPixelV(andDC, col, row, RGB(255, 255, 255)); /* white mask */
+ }
+ pixels++;
+ }
+ }
+ DeleteDC(xorDC);
+ DeleteDC(andDC);
+
+ result = CreateIconIndirect(&ii);
+
+ DeleteObject(ii.hbmColor);
+ DeleteObject(ii.hbmMask );
+
+ winDebug("NetWMToWinIconThreshold - %d x %d = %p\n", icon[0], icon[1], result);
+ return result;
+}
+
+static HICON
+NetWMToWinIcon(int bpp, uint32_t *icon)
+{
+ static Bool hasIconAlphaChannel = FALSE;
+ static BOOL versionChecked = FALSE;
+
+ if (!versionChecked)
+ {
+ OSVERSIONINFOEX osvi = {0};
+ ULONGLONG dwlConditionMask = 0;
+
+ osvi.dwOSVersionInfoSize = sizeof (osvi);
+ osvi.dwMajorVersion = 5;
+ osvi.dwMinorVersion = 1;
+
+ /* Windows versions later than XP have icon alpha channel suport, 2000 does not */
+ VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL);
+ VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, VER_GREATER_EQUAL);
+ hasIconAlphaChannel = VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION, dwlConditionMask);
+ versionChecked = TRUE;
+
+ ErrorF("OS has icon alpha channel support: %s\n", hasIconAlphaChannel ? "yes" : "no");
+ }
+
+ if (hasIconAlphaChannel && (bpp==32))
+ return NetWMToWinIconAlpha(icon);
+ else
+ return NetWMToWinIconThreshold(icon);
+}
+
+static pointer
+GetWindowProp(WindowPtr pWin, Atom name, long int *size_return)
+{
+ struct _Window *pwin;
+ struct _Property *prop;
+
+ if (!pWin || !name) {
+ ErrorF ("GetWindowProp - pWin or name was NULL\n");
+ return 0;
+ }
+ pwin = (struct _Window*) pWin;
+ if (!pwin->optional) return NULL;
+ for (prop = (struct _Property *) pwin->optional->userProps;
+ prop;
+ prop=prop->next){
+ if (prop->propertyName == name) {
+ *size_return=prop->size;
+ return prop->data;
+ }
+ }
+ return NULL;
+}
/*
* Attempt to create a custom icon from the WM_HINTS bitmaps
@@ -273,23 +415,57 @@ winXIconToHICON (WindowPtr pWin, int iconSize)
PixmapPtr iconPtr;
PixmapPtr maskPtr;
int planes, bpp, effBPP, stride, maskStride, i;
+ int biggest_size = 0;
HDC hDC;
ICONINFO ii;
WinXWMHints hints;
- HICON hIcon;
+ HICON hIcon = NULL;
+ uint32_t *biggest_icon = NULL;
- winMultiWindowGetWMHints (pWin, &hints);
- if (!hints.icon_pixmap) return NULL;
+ /* Try to get _NET_WM_ICON icons first */
+ static Atom _XA_NET_WM_ICON;
+ static int generation;
+ uint32_t *icon, *icon_data = NULL;
+ long int size=0;
- iconPtr = (PixmapPtr) LookupIDByType (hints.icon_pixmap, RT_PIXMAP);
-
- if (!iconPtr) return NULL;
-
hDC = GetDC (GetDesktopWindow ());
planes = GetDeviceCaps (hDC, PLANES);
bpp = GetDeviceCaps (hDC, BITSPIXEL);
ReleaseDC (GetDesktopWindow (), hDC);
+
+ if (generation != serverGeneration) {
+ generation = serverGeneration;
+ _XA_NET_WM_ICON = MakeAtom("_NET_WM_ICON", 12, TRUE);
+ }
+
+ if (_XA_NET_WM_ICON) icon_data = GetWindowProp(pWin, _XA_NET_WM_ICON, &size);
+ if (icon_data)
+ {
+ for(icon = icon_data;
+ icon < &icon_data[size] && *icon;
+ icon = &icon[icon[0]*icon[1]+2])
+ {
+ if (icon[0]==iconSize && icon[1]==iconSize)
+ return NetWMToWinIcon(bpp, icon);
+ /* Find the biggest icon and let Windows scale the size */
+ else if (biggest_size < icon[0])
+ {
+ biggest_icon = icon;
+ biggest_size = icon[0];
+ }
+ }
+ if (biggest_icon)
+ return NetWMToWinIcon(bpp, biggest_icon);
+ }
+ winDebug("winXIconToHICON - pWin %x: no suitable NetIcon\n",(int)pWin, iconSize);
+
+ winMultiWindowGetWMHints (pWin, &hints);
+ if (!hints.icon_pixmap) return NULL;
+
+ iconPtr = (PixmapPtr) LookupIDByType (hints.icon_pixmap, RT_PIXMAP);
+ if (!iconPtr) return NULL;
+
/* 15 BPP is really 16BPP as far as we care */
if (bpp == 15)
effBPP = 16;
diff --git a/hw/xwin/winmultiwindowwindow.c b/hw/xwin/winmultiwindowwindow.c
index f4f61a889..e2b5ed291 100644
--- a/hw/xwin/winmultiwindowwindow.c
+++ b/hw/xwin/winmultiwindowwindow.c
@@ -44,7 +44,9 @@
* External global variables
*/
-extern HWND g_hDlgDepthChange;
+extern HICON g_hIconX;
+extern HICON g_hSmallIconX;
+extern HWND g_hDlgDepthChange;
/*
* Prototypes for local functions
@@ -74,6 +76,35 @@ winFindWindow (pointer value, XID id, pointer cdata);
#define SubStrSend(pWin,pParent) (StrSend(pWin) || SubSend(pParent))
+static
+void winInitMultiWindowClass(void)
+{
+ static wATOM atomXWinClass=0;
+ WNDCLASSEX wcx;
+
+ if (atomXWinClass==0)
+ {
+ /* Setup our window class */
+ wcx.cbSize=sizeof(WNDCLASSEX);
+ wcx.style = CS_HREDRAW | CS_VREDRAW;
+ wcx.lpfnWndProc = winTopLevelWindowProc;
+ wcx.cbClsExtra = 0;
+ wcx.cbWndExtra = 0;
+ wcx.hInstance = g_hInstance;
+ wcx.hIcon = g_hIconX;
+ wcx.hCursor = 0;
+ wcx.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
+ wcx.lpszMenuName = NULL;
+ wcx.lpszClassName = WINDOW_CLASS_X;
+ wcx.hIconSm = g_hSmallIconX;
+
+#if CYGMULTIWINDOW_DEBUG
+ ErrorF ("winCreateWindowsWindow - Creating class: %s\n", WINDOW_CLASS_X);
+#endif
+
+ atomXWinClass = RegisterClassEx (&wcx);
+ }
+}
/*
* CreateWindow - See Porting Layer Definition - p. 37
@@ -477,18 +508,15 @@ winCreateWindowsWindow (WindowPtr pWin)
int iHeight;
HWND hWnd;
HWND hFore = NULL;
- WNDCLASSEX wc;
winWindowPriv(pWin);
HICON hIcon;
HICON hIconSmall;
-#define CLASS_NAME_LENGTH 512
- char pszClass[CLASS_NAME_LENGTH], pszWindowID[12];
- char *res_name, *res_class, *res_role;
- static int s_iWindowID = 0;
winPrivScreenPtr pScreenPriv = pWinPriv->pScreenPriv;
WinXSizeHints hints;
WindowPtr pDaddy;
+ winInitMultiWindowClass();
+
#if CYGMULTIWINDOW_DEBUG
ErrorF ("winCreateWindowsWindow - pWin: %08x\n", pWin);
#endif
@@ -510,58 +538,6 @@ winCreateWindowsWindow (WindowPtr pWin)
iWidth = pWin->drawable.width;
iHeight = pWin->drawable.height;
- winSelectIcons(pWin, &hIcon, &hIconSmall);
-
- /* Set standard class name prefix so we can identify window easily */
- strncpy (pszClass, WINDOW_CLASS_X, sizeof(pszClass));
-
- if (winMultiWindowGetClassHint (pWin, &res_name, &res_class))
- {
- strncat (pszClass, "-", 1);
- strncat (pszClass, res_name, CLASS_NAME_LENGTH - strlen (pszClass));
- strncat (pszClass, "-", 1);
- strncat (pszClass, res_class, CLASS_NAME_LENGTH - strlen (pszClass));
-
- /* Check if a window class is provided by the WM_WINDOW_ROLE property,
- * if not use the WM_CLASS information.
- * For further information see:
- * http://tronche.com/gui/x/icccm/sec-5.html
- */
- if (winMultiWindowGetWindowRole (pWin, &res_role) )
- {
- strcat (pszClass, "-");
- strcat (pszClass, res_role);
- free (res_role);
- }
-
- free (res_name);
- free (res_class);
- }
-
- /* Add incrementing window ID to make unique class name */
- snprintf (pszWindowID, sizeof(pszWindowID), "-%x", s_iWindowID++);
- pszWindowID[sizeof(pszWindowID)-1] = 0;
- strcat (pszClass, pszWindowID);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winCreateWindowsWindow - Creating class: %s\n", pszClass);
-#endif
-
- /* Setup our window class */
- wc.cbSize = sizeof(wc);
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = winTopLevelWindowProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = g_hInstance;
- wc.hIcon = hIcon;
- wc.hIconSm = hIconSmall;
- wc.hCursor = 0;
- wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = pszClass;
- RegisterClassEx (&wc);
-
if (winMultiWindowGetTransientFor (pWin, &pDaddy))
{
if (pDaddy)
@@ -575,7 +551,7 @@ winCreateWindowsWindow (WindowPtr pWin)
/* Make it OVERLAPPED in create call since WS_POPUP doesn't support */
/* CW_USEDEFAULT, change back to popup after creation */
hWnd = CreateWindowExA (WS_EX_TOOLWINDOW, /* Extended styles */
- pszClass, /* Class name */
+ WINDOW_CLASS_X, /* Class name */
WINDOW_TITLE_X, /* Window name */
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
iX, /* Horizontal position */
@@ -591,23 +567,27 @@ winCreateWindowsWindow (WindowPtr pWin)
ErrorF ("winCreateWindowsWindow - CreateWindowExA () failed: %d\n",
(int) GetLastError ());
}
+ pWinPriv->hWnd = hWnd;
+
+ /* Set application or .XWinrc defined Icons */
+ winSelectIcons(pWin, &hIcon, &hIconSmall);
+ if (hIcon) SendMessage (hWnd, WM_SETICON, ICON_BIG, (LPARAM) hIcon);
+ if (hIconSmall) SendMessage (hWnd, WM_SETICON, ICON_SMALL, (LPARAM) hIconSmall);
/* Change style back to popup, already placed... */
- SetWindowLong (hWnd, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
+ SetWindowLongPtr(hWnd, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
SetWindowPos (hWnd, 0, 0, 0, 0, 0,
SWP_FRAMECHANGED | SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
/* Make sure it gets the proper system menu for a WS_POPUP, too */
GetSystemMenu (hWnd, TRUE);
- pWinPriv->hWnd = hWnd;
-
/* Cause any .XWinrc menus to be added in main WNDPROC */
PostMessage (hWnd, WM_INIT_SYS_MENU, 0, 0);
- SetProp (pWinPriv->hWnd, WIN_WID_PROP, (HANDLE) winGetWindowID(pWin));
+ SetProp (hWnd, WIN_WID_PROP, (HANDLE) winGetWindowID(pWin));
/* Flag that this Windows window handles its own activation */
- SetProp (pWinPriv->hWnd, WIN_NEEDMANAGE_PROP, (HANDLE) 0);
+ SetProp (hWnd, WIN_NEEDMANAGE_PROP, (HANDLE) 0);
/* Call engine-specific create window procedure */
(*pScreenPriv->pwinFinishCreateWindowsWindow) (pWin);
@@ -624,11 +604,6 @@ winDestroyWindowsWindow (WindowPtr pWin)
{
MSG msg;
winWindowPriv(pWin);
- HICON hiconClass;
- HICON hiconSmClass;
- HMODULE hInstance;
- int iReturn;
- char pszClass[512];
BOOL oldstate = winInDestroyWindowsWindow;
#if CYGMULTIWINDOW_DEBUG
@@ -641,12 +616,6 @@ winDestroyWindowsWindow (WindowPtr pWin)
winInDestroyWindowsWindow = TRUE;
- /* Store the info we need to destroy after this window is gone */
- hInstance = (HINSTANCE) GetClassLong (pWinPriv->hWnd, GCL_HMODULE);
- hiconClass = (HICON) GetClassLong (pWinPriv->hWnd, GCL_HICON);
- hiconSmClass = (HICON) GetClassLong (pWinPriv->hWnd, GCL_HICONSM);
- iReturn = GetClassName (pWinPriv->hWnd, pszClass, 512);
-
SetProp (pWinPriv->hWnd, WIN_WINDOW_PROP, NULL);
/* Destroy the Windows window */
DestroyWindow (pWinPriv->hWnd);
@@ -663,22 +632,6 @@ winDestroyWindowsWindow (WindowPtr pWin)
}
}
- /* Only if we were able to get the name */
- if (iReturn)
- {
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winDestroyWindowsWindow - Unregistering %s: ", pszClass);
-#endif
- iReturn = UnregisterClass (pszClass, hInstance);
-
-#if CYGMULTIWINDOW_DEBUG
- ErrorF ("winDestroyWindowsWindow - %d Deleting Icon: ", iReturn);
-#endif
-
- winDestroyIcon(hiconClass);
- winDestroyIcon(hiconSmClass);
- }
-
winInDestroyWindowsWindow = oldstate;
#if CYGMULTIWINDOW_DEBUG
diff --git a/hw/xwin/winmultiwindowwm.c b/hw/xwin/winmultiwindowwm.c
index 194dbf64c..18d9aedc2 100644
--- a/hw/xwin/winmultiwindowwm.c
+++ b/hw/xwin/winmultiwindowwm.c
@@ -1,5 +1,6 @@
/*
*Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
+ *Copyright (C) Colin Harrison 2005-2009
*
*Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -26,6 +27,7 @@
*from the XFree86 Project.
*
* Authors: Kensuke Matsuzaki
+ * Colin Harrison
*/
/* X headers */
@@ -56,8 +58,13 @@
#include "objbase.h"
#include "ddraw.h"
#include "winwindow.h"
+#include "winprefs.h"
+#include "window.h"
+#include "pixmapstr.h"
+#include "windowstr.h"
+
#ifdef XWIN_MULTIWINDOWEXTWM
-#include "windowswmstr.h"
+#include <X11/extensions/windowswmstr.h>
#else
/* We need the native HWND atom for intWM, so for consistency use the
same name as extWM would if we were building with enabled... */
@@ -65,6 +72,8 @@
#endif
extern void winDebug(const char *format, ...);
+extern void winReshapeMultiWindow(WindowPtr pWin);
+extern void winUpdateRgnMultiWindow(WindowPtr pWin);
#ifndef CYGDEBUG
#define CYGDEBUG NO
@@ -186,6 +195,11 @@ PreserveWin32Stack(WMInfoPtr pWMInfo, Window iWindow, UINT direction);
static Bool
CheckAnotherWindowManager (Display *pDisplay, DWORD dwScreen);
+static void
+winApplyHints (Display *pDisplay, Window iWindow, HWND hWnd, HWND *zstyle);
+
+void
+winUpdateWindowPosition (HWND hWnd, Bool reshape, HWND *zstyle);
/*
* Local globals
@@ -240,6 +254,12 @@ PushMessage (WMMsgQueuePtr pQueue, WMMsgNodePtr pNode)
case WM_WM_MAP:
ErrorF ("\tWM_WM_MAP\n");
break;
+ case WM_WM_MAP2:
+ ErrorF ("\tWM_WM_MAP2\n");
+ break;
+ case WM_WM_MAP3:
+ ErrorF ("\tWM_WM_MAP3\n");
+ break;
case WM_WM_UNMAP:
ErrorF ("\tWM_WM_UNMAP\n");
break;
@@ -700,10 +720,42 @@ winMultiWindowWMProc (void *pArg)
1);
UpdateName (pWMInfo, pNode->msg.iWindow);
winUpdateIcon (pNode->msg.iWindow);
-#if 0
- /* Handles the case where there are AOT windows above it in W32 */
- PreserveWin32Stack (pWMInfo, pNode->msg.iWindow, GW_HWNDPREV);
+ break;
+
+ case WM_WM_MAP2:
+#if CYGMULTIWINDOW_DEBUG
+ ErrorF ("\tWM_WM_MAP2\n");
+#endif
+ XChangeProperty (pWMInfo->pDisplay,
+ pNode->msg.iWindow,
+ pWMInfo->atmPrivMap,
+ XA_INTEGER,//pWMInfo->atmPrivMap,
+ 32,
+ PropModeReplace,
+ (unsigned char *) &(pNode->msg.hwndWindow),
+ 1);
+ break;
+
+ case WM_WM_MAP3:
+#if CYGMULTIWINDOW_DEBUG
+ ErrorF ("\tWM_WM_MAP3\n");
#endif
+ /* Put a note as to the HWND associated with this Window */
+ XChangeProperty (pWMInfo->pDisplay,
+ pNode->msg.iWindow,
+ pWMInfo->atmPrivMap,
+ XA_INTEGER,//pWMInfo->atmPrivMap,
+ 32,
+ PropModeReplace,
+ (unsigned char *) &(pNode->msg.hwndWindow),
+ 1);
+ UpdateName (pWMInfo, pNode->msg.iWindow);
+ winUpdateIcon (pNode->msg.iWindow);
+ {
+ HWND zstyle = HWND_NOTOPMOST;
+ winApplyHints (pWMInfo->pDisplay, pNode->msg.iWindow, pNode->msg.hwndWindow, &zstyle);
+ winUpdateWindowPosition (pNode->msg.hwndWindow, TRUE, &zstyle);
+ }
break;
case WM_WM_UNMAP:
@@ -1435,3 +1487,182 @@ winDeinitMultiWindowWM (void)
ErrorF ("winDeinitMultiWindowWM - Noting shutdown in progress\n");
g_shutdown = TRUE;
}
+
+/* Windows window styles */
+#define HINT_NOFRAME (1l<<0)
+#define HINT_BORDER (1L<<1)
+#define HINT_SIZEBOX (1l<<2)
+#define HINT_CAPTION (1l<<3)
+/* These two are used on their own */
+#define HINT_MAX (1L<<0)
+#define HINT_MIN (1L<<1)
+
+static void
+winApplyHints (Display *pDisplay, Window iWindow, HWND hWnd, HWND *zstyle)
+{
+ static Atom windowState, motif_wm_hints, windowType;
+ static Atom hiddenState, fullscreenState, belowState, aboveState;
+ static Atom dockWindow;
+ static int generation;
+ Atom type, *pAtom = NULL;
+ int format;
+ unsigned long hint = 0, maxmin = 0, style, nitems = 0 , left = 0;
+ WindowPtr pWin = GetProp (hWnd, WIN_WINDOW_PROP);
+
+ if (!hWnd) return;
+ if (!IsWindow (hWnd)) return;
+
+ if (generation != serverGeneration) {
+ generation = serverGeneration;
+ windowState = XInternAtom(pDisplay, "_NET_WM_STATE", False);
+ motif_wm_hints = XInternAtom(pDisplay, "_MOTIF_WM_HINTS", False);
+ windowType = XInternAtom(pDisplay, "_NET_WM_WINDOW_TYPE", False);
+ hiddenState = XInternAtom(pDisplay, "_NET_WM_STATE_HIDDEN", False);
+ fullscreenState = XInternAtom(pDisplay, "_NET_WM_STATE_FULLSCREEN", False);
+ belowState = XInternAtom(pDisplay, "_NET_WM_STATE_BELOW", False);
+ aboveState = XInternAtom(pDisplay, "_NET_WM_STATE_ABOVE", False);
+ dockWindow = XInternAtom(pDisplay, "_NET_WM_WINDOW_TYPE_DOCK", False);
+ }
+
+ if (XGetWindowProperty(pDisplay, iWindow, windowState, 0L,
+ 1L, False, XA_ATOM, &type, &format,
+ &nitems, &left, (unsigned char **)&pAtom) == Success)
+ {
+ if (pAtom && nitems == 1)
+ {
+ if (*pAtom == hiddenState) maxmin |= HINT_MIN;
+ else if (*pAtom == fullscreenState) maxmin |= HINT_MAX;
+ if (*pAtom == belowState) *zstyle = HWND_BOTTOM;
+ else if (*pAtom == aboveState) *zstyle = HWND_TOPMOST;
+ }
+ if (pAtom) XFree(pAtom);
+ }
+
+ nitems = left = 0;
+ MwmHints *mwm_hint = NULL;
+ if (XGetWindowProperty(pDisplay, iWindow, motif_wm_hints, 0L,
+ PropMwmHintsElements, False, motif_wm_hints, &type, &format,
+ &nitems, &left, (unsigned char **)&mwm_hint) == Success)
+ {
+ if (mwm_hint && nitems == PropMwmHintsElements && (mwm_hint->flags & MwmHintsDecorations))
+ {
+ if (!mwm_hint->decorations) hint |= HINT_NOFRAME;
+ else if (!(mwm_hint->decorations & MwmDecorAll))
+ {
+ if (mwm_hint->decorations & MwmDecorBorder) hint |= HINT_BORDER;
+ if (mwm_hint->decorations & MwmDecorHandle) hint |= HINT_SIZEBOX;
+ if (mwm_hint->decorations & MwmDecorTitle) hint |= HINT_CAPTION;
+ }
+ }
+ if (mwm_hint) XFree(mwm_hint);
+ }
+
+ nitems = left = 0;
+ pAtom = NULL;
+ if (XGetWindowProperty(pDisplay, iWindow, windowType, 0L,
+ 1L, False, XA_ATOM, &type, &format,
+ &nitems, &left, (unsigned char **)&pAtom) == Success)
+ {
+ if (pAtom && nitems == 1)
+ {
+ if (*pAtom == dockWindow)
+ {
+ hint = (hint & ~HINT_NOFRAME) | HINT_SIZEBOX; /* Xming puts a sizebox on dock windows */
+ *zstyle = HWND_TOPMOST;
+ }
+ }
+ if (pAtom) XFree(pAtom);
+ }
+
+ /* Apply Styles, overriding hint settings from above */
+ style = winOverrideStyle((unsigned long)pWin);
+ if (style & STYLE_TOPMOST) *zstyle = HWND_TOPMOST;
+ else if (style & STYLE_MAXIMIZE) maxmin = (hint & ~HINT_MIN) | HINT_MAX;
+ else if (style & STYLE_MINIMIZE) maxmin = (hint & ~HINT_MAX) | HINT_MIN;
+ else if (style & STYLE_BOTTOM) *zstyle = HWND_BOTTOM;
+
+ if (maxmin & HINT_MAX) SendMessage(hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
+ else if (maxmin & HINT_MIN) SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
+
+ if (style & STYLE_NOTITLE)
+ hint = (hint & ~HINT_NOFRAME & ~HINT_BORDER & ~HINT_CAPTION) | HINT_SIZEBOX;
+ else if (style & STYLE_OUTLINE)
+ hint = (hint & ~HINT_NOFRAME & ~HINT_SIZEBOX & ~HINT_CAPTION) | HINT_BORDER;
+ else if (style & STYLE_NOFRAME)
+ hint = (hint & ~HINT_BORDER & ~HINT_CAPTION & ~HINT_SIZEBOX) | HINT_NOFRAME;
+
+ style = GetWindowLongPtr(hWnd, GWL_STYLE) & ~WS_CAPTION & ~WS_SIZEBOX; /* Just in case */
+ if (!style) return;
+ if (!hint) /* All on, but no resize of children is allowed */
+ style = style | WS_CAPTION | (GetParent(hWnd) ? 0 : WS_SIZEBOX);
+ else if (hint & HINT_NOFRAME); /* All off, so do nothing */
+ else style = style | ((hint & HINT_BORDER) ? WS_BORDER : 0) |
+ ((hint & HINT_SIZEBOX) ? (GetParent(hWnd) ? 0 : WS_SIZEBOX) : 0) |
+ ((hint & HINT_CAPTION) ? WS_CAPTION : 0);
+ SetWindowLongPtr (hWnd, GWL_STYLE, style);
+}
+
+void
+winUpdateWindowPosition (HWND hWnd, Bool reshape, HWND *zstyle)
+{
+ int iX, iY, iWidth, iHeight;
+ int iDx, iDy;
+ RECT rcNew;
+ WindowPtr pWin = GetProp (hWnd, WIN_WINDOW_PROP);
+ DrawablePtr pDraw = NULL;
+
+ if (!pWin) return;
+ pDraw = &pWin->drawable;
+ if (!pDraw) return;
+
+ /* Get the X and Y location of the X window */
+ iX = pWin->drawable.x + GetSystemMetrics (SM_XVIRTUALSCREEN);
+ iY = pWin->drawable.y + GetSystemMetrics (SM_YVIRTUALSCREEN);
+
+ /* Get the height and width of the X window */
+ iWidth = pWin->drawable.width;
+ iHeight = pWin->drawable.height;
+
+ /* Setup a rectangle with the X window position and size */
+ SetRect (&rcNew, iX, iY, iX + iWidth, iY + iHeight);
+
+#if 0
+ ErrorF ("winUpdateWindowPosition - (%d, %d)-(%d, %d)\n",
+ rcNew.left, rcNew.top,
+ rcNew.right, rcNew.bottom);
+#endif
+
+ AdjustWindowRectEx (&rcNew, GetWindowLongPtr (hWnd, GWL_STYLE), FALSE, WS_EX_APPWINDOW);
+
+ /* Don't allow window decoration to disappear off to top-left as a result of this adjustment */
+ if (rcNew.left < GetSystemMetrics(SM_XVIRTUALSCREEN))
+ {
+ iDx = GetSystemMetrics(SM_XVIRTUALSCREEN) - rcNew.left;
+ rcNew.left += iDx;
+ rcNew.right += iDx;
+ }
+
+ if (rcNew.top < GetSystemMetrics(SM_YVIRTUALSCREEN))
+ {
+ iDy = GetSystemMetrics(SM_YVIRTUALSCREEN) - rcNew.top;
+ rcNew.top += iDy;
+ rcNew.bottom += iDy;
+ }
+
+#if 0
+ ErrorF ("winUpdateWindowPosition - (%d, %d)-(%d, %d)\n",
+ rcNew.left, rcNew.top,
+ rcNew.right, rcNew.bottom);
+#endif
+
+ /* Position the Windows window */
+ SetWindowPos (hWnd, *zstyle, rcNew.left, rcNew.top,
+ rcNew.right - rcNew.left, rcNew.bottom - rcNew.top,
+ 0);
+
+ if (reshape)
+ {
+ winReshapeMultiWindow(pWin);
+ winUpdateRgnMultiWindow(pWin);
+ }
+}
diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c
index becae2949..543a1652f 100644
--- a/hw/xwin/winmultiwindowwndproc.c
+++ b/hw/xwin/winmultiwindowwndproc.c
@@ -51,6 +51,8 @@ extern Bool g_fKeyboardHookLL;
extern Bool g_fSoftwareCursor;
extern Bool g_fButton[3];
+extern void winUpdateWindowPosition (HWND hWnd, Bool reshape, HWND *zstyle);
+
/*
* Local globals
@@ -290,6 +292,20 @@ static void winRaiseWindow(WindowPtr pWin)
}
}
+static
+void winStartMousePolling(winPrivScreenPtr s_pScreenPriv)
+{
+ /*
+ * Timer to poll mouse position. This is needed to make
+ * programs like xeyes follow the mouse properly when the
+ * mouse pointer is outside of any X window.
+ */
+ if (g_uipMousePollingTimerID == 0)
+ g_uipMousePollingTimerID = SetTimer (s_pScreenPriv->hwndScreen,
+ WIN_POLLING_MOUSE_TIMER_ID,
+ MOUSE_POLLING_INTERVAL,
+ NULL);
+}
/*
* winTopLevelWindowProc - Window procedure for all top-level Windows windows.
@@ -407,6 +423,8 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
SetWindowRgn (hwnd, hRgnWindow, TRUE);
DeleteObject(hRgnWindow);
+ SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)XMING_SIGNATURE);
+
return 0;
case WM_INIT_SYS_MENU:
@@ -439,6 +457,14 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
HandleCustomWM_INITMENU ((unsigned long)hwnd, wParam);
break;
+ case WM_ERASEBKGND:
+ /*
+ * Pretend that we did erase the background but we don't care,
+ * since we repaint the entire region anyhow
+ * This avoids some flickering when resizing.
+ */
+ return TRUE;
+
case WM_PAINT:
/* Only paint if our window handle is valid */
if (hwndScreen == NULL)
@@ -565,15 +591,8 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
ShowCursor (TRUE);
}
- /*
- * Timer to poll mouse events. This is needed to make
- * programs like xeyes follow the mouse properly.
- */
- if (g_uipMousePollingTimerID == 0)
- g_uipMousePollingTimerID = SetTimer (s_pScreenPriv->hwndScreen,
- WIN_POLLING_MOUSE_TIMER_ID,
- MOUSE_POLLING_INTERVAL,
- NULL);
+ winStartMousePolling(s_pScreenPriv);
+
break;
case WM_MOUSELEAVE:
@@ -589,15 +608,8 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
ShowCursor (TRUE);
}
- /*
- * Timer to poll mouse events. This is needed to make
- * programs like xeyes follow the mouse properly.
- */
- if (g_uipMousePollingTimerID == 0)
- g_uipMousePollingTimerID = SetTimer (s_pScreenPriv->hwndScreen,
- WIN_POLLING_MOUSE_TIMER_ID,
- MOUSE_POLLING_INTERVAL,
- NULL);
+ winStartMousePolling(s_pScreenPriv);
+
return 0;
case WM_LBUTTONDBLCLK:
@@ -605,12 +617,15 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
break;
g_fButton[0] = TRUE;
+ SetCapture(hwnd);
return winMouseButtonsHandle (s_pScreen, ButtonPress, Button1, wParam);
-
+
case WM_LBUTTONUP:
if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
break;
g_fButton[0] = FALSE;
+ ReleaseCapture();
+ winStartMousePolling(s_pScreenPriv);
return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button1, wParam);
case WM_MBUTTONDBLCLK:
@@ -618,35 +633,45 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
break;
g_fButton[1] = TRUE;
+ SetCapture(hwnd);
return winMouseButtonsHandle (s_pScreen, ButtonPress, Button2, wParam);
-
+
case WM_MBUTTONUP:
if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
break;
g_fButton[1] = FALSE;
+ ReleaseCapture();
+ winStartMousePolling(s_pScreenPriv);
return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button2, wParam);
-
+
case WM_RBUTTONDBLCLK:
case WM_RBUTTONDOWN:
if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
break;
g_fButton[2] = TRUE;
+ SetCapture(hwnd);
return winMouseButtonsHandle (s_pScreen, ButtonPress, Button3, wParam);
-
+
case WM_RBUTTONUP:
if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
break;
g_fButton[2] = FALSE;
+ ReleaseCapture();
+ winStartMousePolling(s_pScreenPriv);
return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button3, wParam);
case WM_XBUTTONDBLCLK:
case WM_XBUTTONDOWN:
if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
break;
+ SetCapture(hwnd);
return winMouseButtonsHandle (s_pScreen, ButtonPress, HIWORD(wParam) + 5, wParam);
+
case WM_XBUTTONUP:
if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput)
break;
+ ReleaseCapture();
+ winStartMousePolling(s_pScreenPriv);
return winMouseButtonsHandle (s_pScreen, ButtonRelease, HIWORD(wParam) + 5, wParam);
case WM_MOUSEWHEEL:
@@ -844,98 +869,57 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
if (!wParam)
return 0;
- /* Tell X to map the window */
- MapWindow (pWin, wClient(pWin));
-
/* */
if (!pWin->overrideRedirect)
{
- DWORD dwExStyle;
- DWORD dwStyle;
- RECT rcNew;
- int iDx, iDy;
-
/* Flag that this window needs to be made active when clicked */
SetProp (hwnd, WIN_NEEDMANAGE_PROP, (HANDLE) 1);
- /* Get the standard and extended window style information */
- dwExStyle = GetWindowLongPtr (hwnd, GWL_EXSTYLE);
- dwStyle = GetWindowLongPtr (hwnd, GWL_STYLE);
-
- /* */
- if (dwExStyle != WS_EX_APPWINDOW)
+ if (!(GetWindowLongPtr (hwnd, GWL_EXSTYLE) & WS_EX_APPWINDOW))
{
- /* Setup a rectangle with the X window position and size */
- SetRect (&rcNew,
- pDraw->x,
- pDraw->y,
- pDraw->x + pDraw->width,
- pDraw->y + pDraw->height);
-
-#if 0
- ErrorF ("winTopLevelWindowProc - (%d, %d)-(%d, %d)\n",
- rcNew.left, rcNew.top,
- rcNew.right, rcNew.bottom);
-#endif
-
- /* */
- AdjustWindowRectEx (&rcNew,
- WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW,
- FALSE,
- WS_EX_APPWINDOW);
-
- /* Calculate position deltas */
- iDx = pDraw->x - rcNew.left;
- iDy = pDraw->y - rcNew.top;
-
- /* Calculate new rectangle */
- rcNew.left += iDx;
- rcNew.right += iDx;
- rcNew.top += iDy;
- rcNew.bottom += iDy;
-
-#if 0
- ErrorF ("winTopLevelWindowProc - (%d, %d)-(%d, %d)\n",
- rcNew.left, rcNew.top,
- rcNew.right, rcNew.bottom);
-#endif
+ HWND zstyle = HWND_NOTOPMOST;
/* Set the window extended style flags */
SetWindowLongPtr (hwnd, GWL_EXSTYLE, WS_EX_APPWINDOW);
+ /* Set the transient style flags */
+ if (GetParent(hwnd)) SetWindowLongPtr (hwnd, GWL_STYLE,
+ WS_POPUP | WS_OVERLAPPED | WS_SYSMENU | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
/* Set the window standard style flags */
- SetWindowLongPtr (hwnd, GWL_STYLE,
- WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW);
+ else SetWindowLongPtr (hwnd, GWL_STYLE,
+ (WS_POPUP | WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS)
+ & ~WS_CAPTION & ~WS_SIZEBOX);
- /* Position the Windows window */
- SetWindowPos (hwnd, HWND_TOP,
- rcNew.left, rcNew.top,
- rcNew.right - rcNew.left, rcNew.bottom - rcNew.top,
- SWP_NOMOVE | SWP_FRAMECHANGED
- | SWP_SHOWWINDOW | SWP_NOACTIVATE);
-
- /* Bring the Windows window to the foreground */
+ winUpdateWindowPosition (hwnd, FALSE, &zstyle);
SetForegroundWindow (hwnd);
}
+ wmMsg.msg = WM_WM_MAP3;
}
else /* It is an overridden window so make it top of Z stack */
{
#if CYGWINDOWING_DEBUG
ErrorF ("overridden window is shown\n");
#endif
- SetWindowPos (hwnd, HWND_TOPMOST, 0, 0, 0, 0,
- SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
+ HWND forHwnd = GetForegroundWindow();
+ if (forHwnd != NULL)
+ {
+ if (GetWindowLongPtr(forHwnd, GWLP_USERDATA) & (LONG_PTR)XMING_SIGNATURE)
+ {
+ if (GetWindowLongPtr(forHwnd, GWL_EXSTYLE) & WS_EX_TOPMOST)
+ SetWindowPos (hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
+ else
+ SetWindowPos (hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
+ }
+ }
+ wmMsg.msg = WM_WM_MAP2;
}
- /* Setup the Window Manager message */
- wmMsg.msg = WM_WM_MAP;
- wmMsg.iWidth = pDraw->width;
- wmMsg.iHeight = pDraw->height;
-
/* Tell our Window Manager thread to map the window */
if (fWMMsgInitialized)
winSendMessageToWM (s_pScreenPriv->pWMInfo, &wmMsg);
+ winStartMousePolling(s_pScreenPriv);
+
return 0;
case WM_SIZING:
diff --git a/hw/xwin/winprefs.c b/hw/xwin/winprefs.c
index fe49ae224..d5bceb928 100644
--- a/hw/xwin/winprefs.c
+++ b/hw/xwin/winprefs.c
@@ -313,7 +313,7 @@ HandleCustomWM_INITMENU(unsigned long hwndIn,
if (!hwnd || !hmenu)
return;
- if (GetWindowLong (hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST)
+ if (GetWindowLongPtr(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST)
dwExStyle = MF_BYCOMMAND | MF_CHECKED;
else
dwExStyle = MF_BYCOMMAND | MF_UNCHECKED;
@@ -408,7 +408,7 @@ HandleCustomWM_COMMAND (unsigned long hwndIn,
return FALSE;
/* Get extended window style */
- dwExStyle = GetWindowLong (hwnd, GWL_EXSTYLE);
+ dwExStyle = GetWindowLongPtr(hwnd, GWL_EXSTYLE);
/* Handle topmost windows */
if (dwExStyle & WS_EX_TOPMOST)
diff --git a/hw/xwin/winscrinit.c b/hw/xwin/winscrinit.c
index 96778ab35..eab0c6ccf 100644
--- a/hw/xwin/winscrinit.c
+++ b/hw/xwin/winscrinit.c
@@ -378,22 +378,6 @@ winFinishScreenInitFB (int index,
pScreen->blockData = pScreen;
pScreen->wakeupData = pScreen;
-#ifdef XWIN_MULTIWINDOWEXTWM
- /*
- * Setup acceleration for multi-window external window manager mode.
- * To be compatible with the Damage extension, this must be done
- * before calling miDCInitialize, which calls DamageSetup.
- */
- if (pScreenInfo->fMWExtWM)
- {
- if (!RootlessAccelInit (pScreen))
- {
- ErrorF ("winFinishScreenInitFB - RootlessAccelInit () failed\n");
- return FALSE;
- }
- }
-#endif
-
#ifdef RENDER
/* Render extension initialization, calls miPictureInit */
if (!fbPictureInit (pScreen, NULL, 0))
diff --git a/hw/xwin/winshaddd.c b/hw/xwin/winshaddd.c
index 6e1f973a8..833444177 100644
--- a/hw/xwin/winshaddd.c
+++ b/hw/xwin/winshaddd.c
@@ -42,7 +42,7 @@
*/
extern HWND g_hDlgExit;
-
+extern char *g_pszLogFile;
/*
* FIXME: Headers are broken, DEFINE_GUID doesn't work correctly,
@@ -646,7 +646,6 @@ winShadowUpdateDD (ScreenPtr pScreen,
/* Has our memory pointer changed? */
if (pScreenInfo->pfb != pScreenPriv->pddsdShadow->lpSurface)
{
- extern char *g_pszLogFile;
ErrorF ("winShadowUpdateDD - Memory location of the shadow "
"surface has changed, trying to update the root window "
"pixmap header to point to the new address. If you get "
diff --git a/hw/xwin/winwin32rootless.c b/hw/xwin/winwin32rootless.c
index a17c219a5..c225a4495 100755
--- a/hw/xwin/winwin32rootless.c
+++ b/hw/xwin/winwin32rootless.c
@@ -398,9 +398,9 @@ winMWExtWMDestroyFrame (RootlessFrameID wid)
#endif
/* Store the info we need to destroy after this window is gone */
- hInstance = (HINSTANCE) GetClassLong (pRLWinPriv->hWnd, GCL_HMODULE);
- hiconClass = (HICON) GetClassLong (pRLWinPriv->hWnd, GCL_HICON);
- hiconSmClass = (HICON) GetClassLong (pRLWinPriv->hWnd, GCL_HICONSM);
+ hInstance = (HINSTANCE) GetClassLongPtr (pRLWinPriv->hWnd, GCLP_HMODULE);
+ hiconClass = (HICON) GetClassLongPtr (pRLWinPriv->hWnd, GCLP_HICON);
+ hiconSmClass = (HICON) GetClassLongPtr (pRLWinPriv->hWnd, GCLP_HICONSM);
iReturn = GetClassName (pRLWinPriv->hWnd, pszClass, CLASS_NAME_LENGTH);
pRLWinPriv->fClose = TRUE;
diff --git a/hw/xwin/winwin32rootlesswndproc.c b/hw/xwin/winwin32rootlesswndproc.c
index e624ded36..4d7afee42 100755
--- a/hw/xwin/winwin32rootlesswndproc.c
+++ b/hw/xwin/winwin32rootlesswndproc.c
@@ -783,6 +783,17 @@ winMWExtWMWindowProc (HWND hwnd, UINT message,
SendMessage (hwndScreen, message, wParam, lParam);
return 0;
+ case WM_ERASEBKGND:
+#if CYGDEBUG
+ winDebug ("winMWExtWMWindowProc - WM_ERASEBKGND\n");
+#endif
+ /*
+ * Pretend that we did erase the background but we don't care,
+ * since we repaint the entire region anyhow
+ * This avoids some flickering when resizing.
+ */
+ return TRUE;
+
case WM_PAINT:
/* BeginPaint gives us an hdc that clips to the invalidated region */
diff --git a/hw/xwin/winwindow.h b/hw/xwin/winwindow.h
index 38db55f5c..86c094334 100644
--- a/hw/xwin/winwindow.h
+++ b/hw/xwin/winwindow.h
@@ -2,6 +2,7 @@
#define _WINWINDOW_H_
/*
*Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
+ *Copyright (C) Colin Harrison 2005-2009
*
*Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -28,6 +29,7 @@
*from the XFree86 Project.
*
* Authors: Kensuke Matsuzaki
+ * Colin Harrison
*/
#ifndef NO
@@ -60,6 +62,8 @@
#define CYGWINDOWING_DEBUG NO
#endif
+#define XMING_SIGNATURE 0x12345678L
+
typedef struct _winPrivScreenRec *winPrivScreenPtr;
@@ -111,9 +115,25 @@ typedef struct _winWMMessageRec{
#define WM_WM_NAME_EVENT (WM_USER + 9)
#define WM_WM_HINTS_EVENT (WM_USER + 10)
#define WM_WM_CHANGE_STATE (WM_USER + 11)
+#define WM_WM_MAP2 (WM_USER + 12)
+#define WM_WM_MAP3 (WM_USER + 13)
#define WM_MANAGE (WM_USER + 100)
#define WM_UNMANAGE (WM_USER + 102)
+#define MwmHintsDecorations (1L << 1)
+
+#define MwmDecorAll (1l << 0)
+#define MwmDecorBorder (1l << 1)
+#define MwmDecorHandle (1l << 2)
+#define MwmDecorTitle (1l << 3)
+
+/* This structure only contains 3 elements... the Motif 2.0 structure
+contains 5... we only need the first 3... so that is all we will define */
+typedef struct MwmHints {
+ unsigned long flags, functions, decorations;
+} MwmHints;
+#define PropMwmHintsElements 3
+
void
winSendMessageToWM (void *pWMInfo, winWMMessagePtr msg);
diff --git a/hw/xwin/winwindowswm.c b/hw/xwin/winwindowswm.c
index 2eecd6bd6..61972c932 100755
--- a/hw/xwin/winwindowswm.c
+++ b/hw/xwin/winwindowswm.c
@@ -50,7 +50,7 @@ static DISPATCH_PROC(SProcWindowsWMDispatch);
static unsigned char WMReqCode = 0;
static int WMEventBase = 0;
-static RESTYPE ClientType, EventType; /* resource types for event masks */
+static RESTYPE ClientType, eventResourceType; /* resource types for event masks */
static XID eventResource;
/* Currently selected events */
@@ -85,10 +85,10 @@ winWindowsWMExtensionInit ()
ExtensionEntry* extEntry;
ClientType = CreateNewResourceType(WMFreeClient);
- EventType = CreateNewResourceType(WMFreeEvents);
+ eventResourceType = CreateNewResourceType(WMFreeEvents);
eventResource = FakeClientID(0);
- if (ClientType && EventType &&
+ if (ClientType && eventResourceType &&
(extEntry = AddExtension(WINDOWSWMNAME,
WindowsWMNumberEvents,
WindowsWMNumberErrors,
@@ -147,7 +147,7 @@ WMFreeClient (pointer data, XID id)
WMEventPtr *pHead, pCur, pPrev;
pEvent = (WMEventPtr) data;
- pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType);
+ pHead = (WMEventPtr *) LookupIDByType(eventResource, eventResourceType);
if (pHead)
{
pPrev = 0;
@@ -193,7 +193,7 @@ ProcWindowsWMSelectInput (register ClientPtr client)
REQUEST_SIZE_MATCH (xWindowsWMSelectInputReq);
pHead = (WMEventPtr *)SecurityLookupIDByType(client, eventResource,
- EventType, DixWriteAccess);
+ eventResourceType, DixWriteAccess);
if (stuff->mask != 0)
{
if (pHead)
@@ -235,7 +235,7 @@ ProcWindowsWMSelectInput (register ClientPtr client)
{
pHead = (WMEventPtr *) xalloc (sizeof (WMEventPtr));
if (!pHead ||
- !AddResource (eventResource, EventType, (pointer)pHead))
+ !AddResource (eventResource, eventResourceType, (pointer)pHead))
{
FreeResource (clientResource, RT_NONE);
return BadAlloc;
@@ -293,7 +293,7 @@ winWindowsWMSendEvent (int type, unsigned int mask, int which, int arg,
ErrorF ("winWindowsWMSendEvent %d %d %d %d, %d %d - %d %d\n",
type, mask, which, arg, x, y, w, h);
#endif
- pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType);
+ pHead = (WMEventPtr *) LookupIDByType(eventResource, eventResourceType);
if (!pHead)
return;
for (pEvent = *pHead; pEvent; pEvent = pEvent->next)
diff --git a/include/Makefile.am b/include/Makefile.am
index fda4b70ac..f8eef53e1 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -17,6 +17,7 @@ sdk_HEADERS = \
dixfontstr.h \
dixgrabs.h \
dixstruct.h \
+ events.h \
exevents.h \
extension.h \
extinit.h \
@@ -57,10 +58,11 @@ sdk_HEADERS = \
xkbrules.h \
xserver-properties.h
-nodist_sdk_HEADERS = xorg-server.h events.h eventconvert.h
+nodist_sdk_HEADERS = xorg-server.h
endif
AM_CFLAGS = $(DIX_CFLAGS)
EXTRA_DIST = \
- dix-config-apple-verbatim.h
+ dix-config-apple-verbatim.h \
+ eventconvert.h eventstr.h
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 26ac22388..798d9e73c 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -124,6 +124,12 @@
/* Have Quartz */
#undef XQUARTZ
+/* Support application updating through sparkle. */
+#undef XQUARTZ_SPARKLE
+
+/* Prefix to use for launchd identifiers */
+#undef LAUNCHD_ID_PREFIX
+
/* Build a standalone xpbproxy */
#undef STANDALONE_XPBPROXY
diff --git a/include/dix.h b/include/dix.h
index c4a639467..49dfe3774 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -229,6 +229,12 @@ extern _X_EXPORT void WakeupHandler(
int /*result*/,
pointer /*pReadmask*/);
+void
+EnableLimitedSchedulingLatency(void);
+
+void
+DisableLimitedSchedulingLatency(void);
+
typedef void (* WakeupHandlerProcPtr)(
pointer /* blockData */,
int /* result */,
@@ -485,7 +491,7 @@ extern _X_EXPORT int TryClientEvents(
extern _X_EXPORT void WindowsRestructured(void);
-extern Bool SetClientPointer(
+extern int SetClientPointer(
ClientPtr /* client */,
DeviceIntPtr /* device */);
@@ -586,6 +592,9 @@ extern Bool IsKeyboardDevice(DeviceIntPtr dev);
extern Bool IsPointerEvent(InternalEvent *event);
extern Bool IsMaster(DeviceIntPtr dev);
+extern _X_HIDDEN int CorePointerProc(DeviceIntPtr dev, int what);
+extern _X_HIDDEN int CoreKeyboardProc(DeviceIntPtr dev, int what);
+
/*
* These are deprecated compatibility functions and will be removed soon!
diff --git a/include/dixaccess.h b/include/dixaccess.h
index 3c62ee354..7180acd71 100644
--- a/include/dixaccess.h
+++ b/include/dixaccess.h
@@ -49,5 +49,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define DixManageAccess (1<<25) /* manage object */
#define DixDebugAccess (1<<26) /* debug object */
#define DixBellAccess (1<<27) /* audible sound */
+#define DixPostAccess (1<<28) /* post or follow-up call */
#endif /* DIX_ACCESS_H */
diff --git a/include/events.h b/include/events.h
index f6405c5c2..9f6a94c5b 100644
--- a/include/events.h
+++ b/include/events.h
@@ -24,207 +24,12 @@
#ifndef EVENTS_H
#define EVENTS_H
-
-/**
- * @file events.h
- * This file describes the event structures used internally by the X
- * server during event generation and event processing.
- *
- * When are internal events used?
- * Events from input devices are stored as internal events in the EQ and
- * processed as internal events until late in the processing cycle. Only then
- * do they switch to their respective wire events.
- */
-
-/**
- * Event types. Used exclusively internal to the server, not visible on the
- * protocol.
- *
- * Note: Keep KeyPress to Motion aligned with the core events.
- */
-enum {
- ET_KeyPress = 2,
- ET_KeyRelease,
- ET_ButtonPress,
- ET_ButtonRelease,
- ET_Motion,
- ET_Enter,
- ET_Leave,
- ET_FocusIn,
- ET_FocusOut,
- ET_ProximityIn,
- ET_ProximityOut,
- ET_DeviceChanged,
- ET_Hierarchy,
-#if XFreeXDGA
- ET_DGAEvent,
-#endif
- ET_Raw,
- ET_Internal = 0xFF /* First byte */
-} EventType;
-
-#define CHECKEVENT(ev) if (ev && ((InternalEvent*)(ev))->any.header != 0xFF) \
- FatalError("Wrong event type %d.\n", \
- ((InternalEvent*)(ev))->any.header);
-
-/**
- * Used for ALL input device events internal in the server until
- * copied into the matching protocol event.
- *
- * Note: We only use the device id because the DeviceIntPtr may become invalid while
- * the event is in the EQ.
- */
-typedef struct
-{
- unsigned char header; /**< Always ET_Internal */
- int type; /**< One of EventType */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms */
- int deviceid; /**< Device to post this event for */
- int sourceid; /**< The physical source device */
- union {
- uint32_t button; /**< Button number */
- uint32_t key; /**< Key code */
- } detail;
- uint16_t root_x; /**< Pos relative to root window in integral data */
- float root_x_frac; /**< Pos relative to root window in frac part */
- uint16_t root_y; /**< Pos relative to root window in integral part */
- float root_y_frac; /**< Pos relative to root window in frac part */
- uint8_t buttons[(MAX_BUTTONS + 7)/8]; /**< Button mask */
- struct {
- uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */
- uint8_t mode[(MAX_VALUATORS + 7)/8]; /**< Valuator mode (Abs or Rel)*/
- uint32_t data[MAX_VALUATORS]; /**< Valuator data */
- int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */
- } valuators;
- struct {
- uint32_t base; /**< XKB base modifiers */
- uint32_t latched; /**< XKB latched modifiers */
- uint32_t locked; /**< XKB locked modifiers */
- } mods;
- struct {
- uint8_t base; /**< XKB base group */
- uint8_t latched; /**< XKB latched group */
- uint8_t locked; /**< XKB locked group */
- } group;
- Window root; /**< Root window of the event */
- int corestate; /**< Core key/button state BEFORE the event */
-} DeviceEvent;
-
-
-/* Flags used in DeviceChangedEvent to signal if new/old slave is present. */
-#define DEVCHANGE_HAS_OLD_SLAVE 0x1
-#define DEVCHANGE_HAS_NEW_SLAVE 0x2
-/* Flags used in DeviceChangedEvent to signal whether the event was a
- * pointer event or a keyboard event */
-#define DEVCHANGE_POINTER_EVENT 0x4
-#define DEVCHANGE_KEYBOARD_EVENT 0x8
-/* device capabilities changed */
-#define DEVCHANGE_DEVICE_CHANGE 0x10
-
-/**
- * Sent whenever a device's capabilities have changed.
- */
-typedef struct
-{
- unsigned char header; /**< Always ET_Internal */
- int type; /**< ET_DeviceChanged */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms */
- int deviceid; /**< Device whose capabilities have changed */
- int flags; /**< Mask of ::HAS_OLD_SLAVE, ::HAS_NEW_SLAVE,
- ::POINTER_EVENT, ::KEYBOARD_EVENT */
- /** If flags & HAS_OLD_SLAVE is set, old_slaveid specifies SD previously
- * attached to this device. */
- int old_slaveid;
- /** If flags & HAS_OLD_SLAVE is set, old_slaveid specifies device now
- * attached to this device. */
- int new_slaveid;
-
- struct {
- int num_buttons; /**< Number of buttons */
- Atom names[MAX_BUTTONS];/**< Button names */
- } buttons;
-
- int num_valuators; /**< Number of axes */
- struct {
- uint32_t min; /**< Minimum value */
- uint32_t max; /**< Maximum value */
- /* FIXME: frac parts of min/max */
- uint32_t resolution; /**< Resolution counts/m */
- uint8_t mode; /**< Relative or Absolute */
- Atom name; /**< Axis name */
- } valuators[MAX_VALUATORS];
-
- struct {
- int min_keycode;
- int max_keycode;
- } keys;
-} DeviceChangedEvent;
-
-#if XFreeXDGA
-/**
- * DGAEvent, used by DGA to intercept and emulate input events.
- */
-typedef struct
-{
- unsigned char header; /**< Always ET_Internal */
- int type; /**< ET_DGAEvent */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms */
- int subtype; /**< KeyPress, KeyRelease, ButtonPress,
- ButtonRelease, MotionNotify */
- int detail; /**< Relative x coordinate */
- int dx; /**< Relative x coordinate */
- int dy; /**< Relative y coordinate */
- int screen; /**< Screen number this event applies to */
- uint16_t state; /**< Core modifier/button state */
-} DGAEvent;
-#endif
-
-/**
- * Raw event, contains the data as posted by the device.
- */
-typedef struct
-{
- unsigned char header; /**< Always ET_Internal */
- int type; /**< ET_Raw */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms */
- int subtype; /**< KeyPress, KeyRelease, ButtonPress,
- ButtonRelease, MotionNotify */
- int deviceid; /**< Device to post this event for */
- int sourceid; /**< The physical source device */
- union {
- uint32_t button; /**< Button number */
- uint32_t key; /**< Key code */
- } detail;
- struct {
- uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */
- int32_t data[MAX_VALUATORS]; /**< Valuator data */
- int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */
- int32_t data_raw[MAX_VALUATORS]; /**< Valuator data as posted */
- int32_t data_raw_frac[MAX_VALUATORS];/**< Fractional part for data_raw */
- } valuators;
-} RawDeviceEvent;
-
-/**
- * Event type used inside the X server for input event
- * processing.
- */
-typedef union {
- struct {
- unsigned char header; /**< Always ET_Internal */
- int type; /**< One of ET_* */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms. */
- } any;
- DeviceEvent device;
- DeviceChangedEvent changed;
+typedef struct _DeviceEvent DeviceEvent;
+typedef struct _DeviceChangedEvent DeviceChangedEvent;
#if XFreeXDGA
- DGAEvent dga;
+typedef struct _DGAEvent DGAEvent;
#endif
- RawDeviceEvent raw;
-} InternalEvent;
+typedef struct _RawDeviceEvent RawDeviceEvent;
+typedef union _InternalEvent InternalEvent;
#endif
diff --git a/include/eventstr.h b/include/eventstr.h
new file mode 100644
index 000000000..f082db34a
--- /dev/null
+++ b/include/eventstr.h
@@ -0,0 +1,232 @@
+/*
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef EVENTSTR_H
+#define EVENTSTR_H
+
+#include <events.h>
+/**
+ * @file events.h
+ * This file describes the event structures used internally by the X
+ * server during event generation and event processing.
+ *
+ * When are internal events used?
+ * Events from input devices are stored as internal events in the EQ and
+ * processed as internal events until late in the processing cycle. Only then
+ * do they switch to their respective wire events.
+ */
+
+/**
+ * Event types. Used exclusively internal to the server, not visible on the
+ * protocol.
+ *
+ * Note: Keep KeyPress to Motion aligned with the core events.
+ * Keep ET_Raw* in the same order as KeyPress - Motion
+ */
+enum EventType {
+ ET_KeyPress = 2,
+ ET_KeyRelease,
+ ET_ButtonPress,
+ ET_ButtonRelease,
+ ET_Motion,
+ ET_Enter,
+ ET_Leave,
+ ET_FocusIn,
+ ET_FocusOut,
+ ET_ProximityIn,
+ ET_ProximityOut,
+ ET_DeviceChanged,
+ ET_Hierarchy,
+#if XFreeXDGA
+ ET_DGAEvent,
+#endif
+ ET_RawKeyPress,
+ ET_RawKeyRelease,
+ ET_RawButtonPress,
+ ET_RawButtonRelease,
+ ET_RawMotion,
+ ET_Internal = 0xFF /* First byte */
+};
+
+#define CHECKEVENT(ev) if (ev && ((InternalEvent*)(ev))->any.header != 0xFF) \
+ FatalError("Wrong event type %d.\n", \
+ ((InternalEvent*)(ev))->any.header);
+
+/**
+ * Used for ALL input device events internal in the server until
+ * copied into the matching protocol event.
+ *
+ * Note: We only use the device id because the DeviceIntPtr may become invalid while
+ * the event is in the EQ.
+ */
+struct _DeviceEvent
+{
+ unsigned char header; /**< Always ET_Internal */
+ enum EventType type; /**< One of EventType */
+ int length; /**< Length in bytes */
+ Time time; /**< Time in ms */
+ int deviceid; /**< Device to post this event for */
+ int sourceid; /**< The physical source device */
+ union {
+ uint32_t button; /**< Button number */
+ uint32_t key; /**< Key code */
+ } detail;
+ uint16_t root_x; /**< Pos relative to root window in integral data */
+ float root_x_frac; /**< Pos relative to root window in frac part */
+ uint16_t root_y; /**< Pos relative to root window in integral part */
+ float root_y_frac; /**< Pos relative to root window in frac part */
+ uint8_t buttons[(MAX_BUTTONS + 7)/8]; /**< Button mask */
+ struct {
+ uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */
+ uint8_t mode[(MAX_VALUATORS + 7)/8]; /**< Valuator mode (Abs or Rel)*/
+ uint32_t data[MAX_VALUATORS]; /**< Valuator data */
+ int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */
+ } valuators;
+ struct {
+ uint32_t base; /**< XKB base modifiers */
+ uint32_t latched; /**< XKB latched modifiers */
+ uint32_t locked; /**< XKB locked modifiers */
+ uint32_t effective;/**< XKB effective modifiers */
+ } mods;
+ struct {
+ uint8_t base; /**< XKB base group */
+ uint8_t latched; /**< XKB latched group */
+ uint8_t locked; /**< XKB locked group */
+ uint8_t effective;/**< XKB effective group */
+ } group;
+ Window root; /**< Root window of the event */
+ int corestate; /**< Core key/button state BEFORE the event */
+ int key_repeat; /**< Internally-generated key repeat event */
+};
+
+
+/* Flags used in DeviceChangedEvent to signal if the slave has changed */
+#define DEVCHANGE_SLAVE_SWITCH 0x2
+/* Flags used in DeviceChangedEvent to signal whether the event was a
+ * pointer event or a keyboard event */
+#define DEVCHANGE_POINTER_EVENT 0x4
+#define DEVCHANGE_KEYBOARD_EVENT 0x8
+/* device capabilities changed */
+#define DEVCHANGE_DEVICE_CHANGE 0x10
+
+/**
+ * Sent whenever a device's capabilities have changed.
+ */
+struct _DeviceChangedEvent
+{
+ unsigned char header; /**< Always ET_Internal */
+ enum EventType type; /**< ET_DeviceChanged */
+ int length; /**< Length in bytes */
+ Time time; /**< Time in ms */
+ int deviceid; /**< Device whose capabilities have changed */
+ int flags; /**< Mask of ::HAS_NEW_SLAVE,
+ ::POINTER_EVENT, ::KEYBOARD_EVENT */
+ int masterid; /**< MD when event was generated */
+ int sourceid; /**< The device that caused the change */
+
+ struct {
+ int num_buttons; /**< Number of buttons */
+ Atom names[MAX_BUTTONS];/**< Button names */
+ } buttons;
+
+ int num_valuators; /**< Number of axes */
+ struct {
+ uint32_t min; /**< Minimum value */
+ uint32_t max; /**< Maximum value */
+ /* FIXME: frac parts of min/max */
+ uint32_t resolution; /**< Resolution counts/m */
+ uint8_t mode; /**< Relative or Absolute */
+ Atom name; /**< Axis name */
+ } valuators[MAX_VALUATORS];
+
+ struct {
+ int min_keycode;
+ int max_keycode;
+ } keys;
+};
+
+#if XFreeXDGA
+/**
+ * DGAEvent, used by DGA to intercept and emulate input events.
+ */
+struct _DGAEvent
+{
+ unsigned char header; /**< Always ET_Internal */
+ enum EventType type; /**< ET_DGAEvent */
+ int length; /**< Length in bytes */
+ Time time; /**< Time in ms */
+ int subtype; /**< KeyPress, KeyRelease, ButtonPress,
+ ButtonRelease, MotionNotify */
+ int detail; /**< Relative x coordinate */
+ int dx; /**< Relative x coordinate */
+ int dy; /**< Relative y coordinate */
+ int screen; /**< Screen number this event applies to */
+ uint16_t state; /**< Core modifier/button state */
+};
+#endif
+
+/**
+ * Raw event, contains the data as posted by the device.
+ */
+struct _RawDeviceEvent
+{
+ unsigned char header; /**< Always ET_Internal */
+ enum EventType type; /**< ET_Raw */
+ int length; /**< Length in bytes */
+ Time time; /**< Time in ms */
+ int deviceid; /**< Device to post this event for */
+ int sourceid; /**< The physical source device */
+ union {
+ uint32_t button; /**< Button number */
+ uint32_t key; /**< Key code */
+ } detail;
+ struct {
+ uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */
+ int32_t data[MAX_VALUATORS]; /**< Valuator data */
+ int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */
+ int32_t data_raw[MAX_VALUATORS]; /**< Valuator data as posted */
+ int32_t data_raw_frac[MAX_VALUATORS];/**< Fractional part for data_raw */
+ } valuators;
+};
+
+/**
+ * Event type used inside the X server for input event
+ * processing.
+ */
+union _InternalEvent {
+ struct {
+ unsigned char header; /**< Always ET_Internal */
+ enum EventType type; /**< One of ET_* */
+ int length; /**< Length in bytes */
+ Time time; /**< Time in ms. */
+ } any;
+ DeviceEvent device;
+ DeviceChangedEvent changed;
+#if XFreeXDGA
+ DGAEvent dga;
+#endif
+ RawDeviceEvent raw;
+};
+
+#endif
diff --git a/include/exevents.h b/include/exevents.h
index 861d0ddb1..39e1c70fe 100644
--- a/include/exevents.h
+++ b/include/exevents.h
@@ -33,6 +33,97 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <X11/extensions/XIproto.h>
#include "inputstr.h"
+/***************************************************************
+ * Interface available to drivers *
+ ***************************************************************/
+
+extern _X_EXPORT int InitProximityClassDeviceStruct(
+ DeviceIntPtr /* dev */);
+
+extern _X_EXPORT void InitValuatorAxisStruct(
+ DeviceIntPtr /* dev */,
+ int /* axnum */,
+ Atom /* label */,
+ int /* minval */,
+ int /* maxval */,
+ int /* resolution */,
+ int /* min_res */,
+ int /* max_res */);
+
+/* Input device properties */
+extern _X_EXPORT void XIDeleteAllDeviceProperties(
+ DeviceIntPtr /* device */
+);
+
+extern _X_EXPORT int XIDeleteDeviceProperty(
+ DeviceIntPtr /* device */,
+ Atom /* property */,
+ Bool /* fromClient */
+);
+
+extern _X_EXPORT int XIChangeDeviceProperty(
+ DeviceIntPtr /* dev */,
+ Atom /* property */,
+ Atom /* type */,
+ int /* format*/,
+ int /* mode*/,
+ unsigned long /* len*/,
+ pointer /* value*/,
+ Bool /* sendevent*/
+ );
+
+extern _X_EXPORT int XIGetDeviceProperty(
+ DeviceIntPtr /* dev */,
+ Atom /* property */,
+ XIPropertyValuePtr* /* value */
+);
+
+extern _X_EXPORT int XISetDevicePropertyDeletable(
+ DeviceIntPtr /* dev */,
+ Atom /* property */,
+ Bool /* deletable */
+);
+
+extern _X_EXPORT long XIRegisterPropertyHandler(
+ DeviceIntPtr dev,
+ int (*SetProperty) (DeviceIntPtr dev,
+ Atom property,
+ XIPropertyValuePtr prop,
+ BOOL checkonly),
+ int (*GetProperty) (DeviceIntPtr dev,
+ Atom property),
+ int (*DeleteProperty) (DeviceIntPtr dev,
+ Atom property)
+);
+
+extern _X_EXPORT void XIUnregisterPropertyHandler(
+ DeviceIntPtr dev,
+ long id
+);
+
+extern _X_EXPORT Atom XIGetKnownProperty(
+ char* name
+);
+
+extern _X_EXPORT DeviceIntPtr XIGetDevice(xEvent *ev);
+
+extern _X_EXPORT int XIPropToInt(
+ XIPropertyValuePtr val,
+ int *nelem_return,
+ int **buf_return
+);
+
+extern _X_EXPORT int XIPropToFloat(
+ XIPropertyValuePtr val,
+ int *nelem_return,
+ float **buf_return
+);
+
+/****************************************************************************
+ * End of driver interface *
+ ****************************************************************************/
+
+
/**
* Attached to the devPrivates of each client. Specifies the version number as
* supported by the client.
@@ -55,43 +146,35 @@ typedef struct _GrabParameters {
} GrabParameters;
-extern _X_EXPORT void RegisterOtherDevice (
+extern void
+RegisterOtherDevice (
DeviceIntPtr /* device */);
-extern _X_EXPORT int
+extern int
UpdateDeviceState (
DeviceIntPtr /* device */,
DeviceEvent* /* xE */);
-extern _X_EXPORT void ProcessOtherEvent (
+extern void
+ProcessOtherEvent (
InternalEvent* /* ev */,
DeviceIntPtr /* other */);
-extern _X_EXPORT int InitProximityClassDeviceStruct(
- DeviceIntPtr /* dev */);
-
-extern _X_EXPORT void InitValuatorAxisStruct(
- DeviceIntPtr /* dev */,
- int /* axnum */,
- Atom /* label */,
- int /* minval */,
- int /* maxval */,
- int /* resolution */,
- int /* min_res */,
- int /* max_res */);
-
-extern _X_EXPORT void DeviceFocusEvent(
+extern void
+DeviceFocusEvent(
DeviceIntPtr /* dev */,
int /* type */,
int /* mode */,
int /* detail */,
WindowPtr /* pWin */);
-extern int CheckGrabValues(
+extern int
+CheckGrabValues(
ClientPtr /* client */,
GrabParameters* /* param */);
-extern int GrabButton(
+extern int
+GrabButton(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
DeviceIntPtr /* modifier_device */,
@@ -100,7 +183,8 @@ extern int GrabButton(
GrabType /* grabtype */,
GrabMask* /* eventMask */);
-extern int GrabKey(
+extern int
+GrabKey(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
DeviceIntPtr /* modifier_device */,
@@ -109,34 +193,40 @@ extern int GrabKey(
GrabType /* grabtype */,
GrabMask* /* eventMask */);
-extern int GrabWindow(
+extern int
+GrabWindow(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
int /* type */,
GrabParameters* /* param */,
GrabMask* /* eventMask */);
-extern int SelectForWindow(
+extern int
+SelectForWindow(
DeviceIntPtr /* dev */,
WindowPtr /* pWin */,
ClientPtr /* client */,
Mask /* mask */,
Mask /* exclusivemasks */);
-extern _X_EXPORT int AddExtensionClient (
+extern int
+AddExtensionClient (
WindowPtr /* pWin */,
ClientPtr /* client */,
Mask /* mask */,
int /* mskidx */);
-extern _X_EXPORT void RecalculateDeviceDeliverableEvents(
+extern void
+RecalculateDeviceDeliverableEvents(
WindowPtr /* pWin */);
-extern _X_EXPORT int InputClientGone(
+extern int
+InputClientGone(
WindowPtr /* pWin */,
XID /* id */);
-extern _X_EXPORT int SendEvent (
+extern int
+SendEvent (
ClientPtr /* client */,
DeviceIntPtr /* d */,
Window /* dest */,
@@ -145,13 +235,15 @@ extern _X_EXPORT int SendEvent (
Mask /* mask */,
int /* count */);
-extern _X_EXPORT int SetButtonMapping (
+extern int
+SetButtonMapping (
ClientPtr /* client */,
DeviceIntPtr /* dev */,
int /* nElts */,
BYTE * /* map */);
-extern _X_EXPORT int ChangeKeyMapping(
+extern int
+ChangeKeyMapping(
ClientPtr /* client */,
DeviceIntPtr /* dev */,
unsigned /* len */,
@@ -161,15 +253,18 @@ extern _X_EXPORT int ChangeKeyMapping(
CARD8 /* keySymsPerKeyCode */,
KeySym * /* map */);
-extern _X_EXPORT void DeleteWindowFromAnyExtEvents(
+extern void
+DeleteWindowFromAnyExtEvents(
WindowPtr /* pWin */,
Bool /* freeResources */);
-extern _X_EXPORT int MaybeSendDeviceMotionNotifyHint (
+extern int
+MaybeSendDeviceMotionNotifyHint (
deviceKeyButtonPointer * /* pEvents */,
Mask /* mask */);
-extern _X_EXPORT void CheckDeviceGrabAndHintWindow (
+extern void
+CheckDeviceGrabAndHintWindow (
WindowPtr /* pWin */,
int /* type */,
deviceKeyButtonPointer * /* xE */,
@@ -177,101 +272,44 @@ extern _X_EXPORT void CheckDeviceGrabAndHintWindow (
ClientPtr /* client */,
Mask /* deliveryMask */);
-extern _X_EXPORT void MaybeStopDeviceHint(
+extern void
+MaybeStopDeviceHint(
DeviceIntPtr /* dev */,
ClientPtr /* client */);
-extern _X_EXPORT int DeviceEventSuppressForWindow(
+extern int
+DeviceEventSuppressForWindow(
WindowPtr /* pWin */,
ClientPtr /* client */,
Mask /* mask */,
int /* maskndx */);
-extern _X_EXPORT void SendEventToAllWindows(
+extern void
+SendEventToAllWindows(
DeviceIntPtr /* dev */,
Mask /* mask */,
xEvent * /* ev */,
int /* count */);
-/* Input device properties */
-extern _X_EXPORT void XIDeleteAllDeviceProperties(
- DeviceIntPtr /* device */
-);
-
-extern _X_EXPORT int XIDeleteDeviceProperty(
- DeviceIntPtr /* device */,
- Atom /* property */,
- Bool /* fromClient */
-);
-
-extern _X_EXPORT int XIChangeDeviceProperty(
- DeviceIntPtr /* dev */,
- Atom /* property */,
- Atom /* type */,
- int /* format*/,
- int /* mode*/,
- unsigned long /* len*/,
- pointer /* value*/,
- Bool /* sendevent*/
- );
-
-extern _X_EXPORT int XIGetDeviceProperty(
- DeviceIntPtr /* dev */,
- Atom /* property */,
- XIPropertyValuePtr* /* value */
-);
-
-extern _X_EXPORT int XISetDevicePropertyDeletable(
- DeviceIntPtr /* dev */,
- Atom /* property */,
- Bool /* deletable */
-);
-
-extern _X_EXPORT long XIRegisterPropertyHandler(
- DeviceIntPtr dev,
- int (*SetProperty) (DeviceIntPtr dev,
- Atom property,
- XIPropertyValuePtr prop,
- BOOL checkonly),
- int (*GetProperty) (DeviceIntPtr dev,
- Atom property),
- int (*DeleteProperty) (DeviceIntPtr dev,
- Atom property)
-);
-
-extern _X_EXPORT void XIUnregisterPropertyHandler(
- DeviceIntPtr dev,
- long id
-);
-
-extern _X_EXPORT Atom XIGetKnownProperty(
- char* name
-);
-
-extern _X_EXPORT DeviceIntPtr XIGetDevice(xEvent *ev);
-
-extern _X_EXPORT int XIPropToInt(
- XIPropertyValuePtr val,
- int *nelem_return,
- int **buf_return
-);
-
-extern _X_EXPORT int XIPropToFloat(
- XIPropertyValuePtr val,
- int *nelem_return,
- float **buf_return
-);
+extern _X_HIDDEN void XI2EventSwap(
+ xGenericEvent * /* from */,
+ xGenericEvent * /* to */);
/* For an event such as MappingNotify which affects client interpretation
* of input events sent by device dev, should we notify the client, or
* would it merely be irrelevant and confusing? */
-extern _X_EXPORT int XIShouldNotify(ClientPtr client, DeviceIntPtr dev);
+extern int
+XIShouldNotify(ClientPtr client, DeviceIntPtr dev);
extern void
XISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master,
DeviceChangedEvent *dce);
-extern void XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client,
+extern int
+XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client,
unsigned int len, unsigned char* mask);
+extern int
+XICheckInvalidMaskBits(unsigned char *mask, int len);
+
#endif /* EXEVENTS_H */
diff --git a/include/extinit.h b/include/extinit.h
index 0b36d3bcd..c3aa7b681 100644
--- a/include/extinit.h
+++ b/include/extinit.h
@@ -32,7 +32,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "extnsionst.h"
-extern _X_EXPORT void
+extern void
XInputExtensionInit(
void
);
diff --git a/include/input.h b/include/input.h
index 9711fa87d..7ab5e9d65 100644
--- a/include/input.h
+++ b/include/input.h
@@ -54,6 +54,7 @@ SOFTWARE.
#include <X11/Xproto.h>
#include "window.h" /* for WindowPtr */
#include "xkbrules.h"
+#include "events.h"
#define DEVICE_INIT 0
#define DEVICE_ON 1
@@ -96,8 +97,6 @@ SOFTWARE.
#define RevertToFollowKeyboard 3
#endif
-#include "events.h"
-
typedef unsigned long Leds;
typedef struct _OtherClients *OtherClientsPtr;
typedef struct _InputClients *InputClientsPtr;
@@ -221,6 +220,7 @@ extern void set_key_up(DeviceIntPtr pDev, int key_code, int type);
extern int key_is_down(DeviceIntPtr pDev, int key_code, int type);
extern void InitCoreDevices(void);
+extern void InitXTestDevices(void);
extern _X_EXPORT DeviceIntPtr AddInputDevice(
ClientPtr /*client*/,
@@ -365,7 +365,7 @@ extern _X_EXPORT Bool InitKeyboardDeviceStruct(
BellProcPtr /*bellProc*/,
KbdCtrlProcPtr /*controlProc*/);
-extern _X_EXPORT int ApplyPointerMapping(
+extern int ApplyPointerMapping(
DeviceIntPtr /* pDev */,
CARD8 * /* map */,
int /* len */,
@@ -483,6 +483,8 @@ extern int AllocDevicePair(ClientPtr client,
char* name,
DeviceIntPtr* ptr,
DeviceIntPtr* keybd,
+ DeviceProc ptr_proc,
+ DeviceProc keybd_proc,
Bool master);
extern void DeepCopyDeviceClasses(DeviceIntPtr from,
DeviceIntPtr to,
@@ -493,10 +495,14 @@ extern int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
KeyCode **modkeymap, int *max_keys_per_mod);
extern int change_modmap(ClientPtr client, DeviceIntPtr dev, KeyCode *map,
int max_keys_per_mod);
-extern int AllocXtstDevice(ClientPtr client,
+extern int AllocXTestDevice(ClientPtr client,
char* name,
DeviceIntPtr* ptr,
- DeviceIntPtr* keybd);
+ DeviceIntPtr* keybd,
+ DeviceIntPtr master_ptr,
+ DeviceIntPtr master_keybd);
+extern BOOL IsXTestDevice(DeviceIntPtr dev, DeviceIntPtr master);
+extern DeviceIntPtr GetXTestDevice(DeviceIntPtr master);
/* misc event helpers */
extern Mask GetEventFilter(DeviceIntPtr dev, xEvent *event);
diff --git a/include/inputstr.h b/include/inputstr.h
index 623b3c0e5..aeb01c0b7 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -69,7 +69,7 @@ SOFTWARE.
* events to the protocol, the server will not support these events until
* this number here is bumped.
*/
-#define XI2LASTEVENT 13 /* XI_PropertyEvent */
+#define XI2LASTEVENT 17 /* XI_RawMotion */
#define XI2MASKSIZE ((XI2LASTEVENT + 7)/8) /* no of bits for masks */
/**
@@ -119,7 +119,7 @@ typedef struct _InputClients {
* OtherInputMasks struct and exactly one InputClients struct hanging off
* inputClients. Each further client appends to the inputClients list.
* Each Mask field is per-device, with the device id as the index.
- * Exception: for non-device events (Presence events), the MAX_DEVICES
+ * Exception: for non-device events (Presence events), the MAXDEVICES
* deviceid is used.
*/
typedef struct _OtherInputMasks {
diff --git a/include/misc.h b/include/misc.h
index 61dd9474c..877c682d4 100644
--- a/include/misc.h
+++ b/include/misc.h
@@ -180,6 +180,36 @@ typedef struct _xReq *xReqPtr;
#endif
+/**
+ * Calculate the number of bytes needed to hold bits.
+ * @param bits The minimum number of bits needed.
+ * @return The number of bytes needed to hold bits.
+ */
+static inline int
+bits_to_bytes(const int bits) {
+ return ((bits + 7) >> 3);
+}
+/**
+ * Calculate the number of 4-byte units needed to hold the given number of
+ * bytes.
+ * @param bytes The minimum number of bytes needed.
+ * @return The number of 4-byte units needed to hold bytes.
+ */
+static inline int
+bytes_to_int32(const int bytes) {
+ return (((bytes) + 3) >> 2);
+}
+
+/**
+ * Calculate the number of bytes (in multiples of 4) needed to hold bytes.
+ * @param bytes The minimum number of bytes needed.
+ * @return The closest multiple of 4 that is equal or higher than bytes.
+ */
+static inline int
+pad_to_int32(const int bytes) {
+ return (((bytes) + 3) & ~3);
+}
+
/* some macros to help swap requests, replies, and events */
#define LengthRestB(stuff) \
diff --git a/include/ptrveloc.h b/include/ptrveloc.h
index 83d188c54..fa2156b0d 100644
--- a/include/ptrveloc.h
+++ b/include/ptrveloc.h
@@ -1,6 +1,6 @@
/*
*
- * Copyright © 2006-2008 Simon Thum simon dot thum at gmx dot de
+ * Copyright © 2006-2009 Simon Thum simon dot thum at gmx dot de
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -47,8 +47,8 @@ struct _DeviceVelocityRec;
* returns actual acceleration depending on velocity, acceleration control,...
*/
typedef float (*PointerAccelerationProfileFunc)
- (struct _DeviceVelocityRec* /*pVel*/,
- float /*velocity*/, float /*threshold*/, float /*acc*/);
+ (DeviceIntPtr dev, struct _DeviceVelocityRec* vel,
+ float velocity, float threshold, float accelCoeff);
/**
* a motion history, with just enough information to
@@ -91,33 +91,43 @@ typedef struct _DeviceVelocityRec {
extern _X_EXPORT void
-InitVelocityData(DeviceVelocityPtr s);
+InitVelocityData(DeviceVelocityPtr vel);
extern _X_EXPORT void
-InitTrackers(DeviceVelocityPtr s, int ntracker);
+InitTrackers(DeviceVelocityPtr vel, int ntracker);
-extern _X_EXPORT BOOL
-InitializePredictableAccelerationProperties(DeviceIntPtr pDev);
+extern _X_EXPORT short
+ProcessVelocityData2D(DeviceVelocityPtr vel, int dx, int dy, int time);
+
+extern _X_EXPORT float
+BasicComputeAcceleration(DeviceIntPtr dev, DeviceVelocityPtr vel,
+ float velocity, float threshold, float acc);
+
+extern _X_EXPORT void
+FreeVelocityData(DeviceVelocityPtr vel);
+
+extern _X_INTERNAL BOOL
+InitializePredictableAccelerationProperties(DeviceIntPtr dev);
extern _X_EXPORT int
-SetAccelerationProfile(DeviceVelocityPtr s, int profile_num);
+SetAccelerationProfile(DeviceVelocityPtr vel, int profile_num);
extern _X_EXPORT DeviceVelocityPtr
-GetDevicePredictableAccelData(DeviceIntPtr pDev);
+GetDevicePredictableAccelData(DeviceIntPtr dev);
extern _X_EXPORT void
-SetDeviceSpecificAccelerationProfile(DeviceVelocityPtr s,
+SetDeviceSpecificAccelerationProfile(DeviceVelocityPtr vel,
PointerAccelerationProfileFunc profile);
-extern _X_EXPORT void
-AccelerationDefaultCleanup(DeviceIntPtr pDev);
+extern _X_INTERNAL void
+AccelerationDefaultCleanup(DeviceIntPtr dev);
-extern _X_EXPORT void
-acceleratePointerPredictable(DeviceIntPtr pDev, int first_valuator,
+extern _X_INTERNAL void
+acceleratePointerPredictable(DeviceIntPtr dev, int first_valuator,
int num_valuators, int *valuators, int evtime);
-extern _X_EXPORT void
-acceleratePointerLightweight(DeviceIntPtr pDev, int first_valuator,
- int num_valuators, int *valuators, int ignore);
+extern _X_INTERNAL void
+acceleratePointerLightweight(DeviceIntPtr dev, int first_valuator,
+ int num_valuators, int *valuators, int ignored);
#endif /* POINTERVELOCITY_H */
diff --git a/include/resource.h b/include/resource.h
index 774f81b56..8ed4e569e 100644
--- a/include/resource.h
+++ b/include/resource.h
@@ -257,14 +257,6 @@ extern _X_EXPORT RESTYPE TypeMask;
#define X_DEPRECATED
#endif
-/* replaced by dixLookupResourceByType or dixLookupResourceByClass */
-extern int dixLookupResource(
- pointer *result,
- XID id,
- RESTYPE rtype,
- ClientPtr client,
- Mask access_mode) X_DEPRECATED;
-
/* replaced by dixLookupResourceByType */
extern _X_EXPORT pointer SecurityLookupIDByType(
ClientPtr client,
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index 48891fd99..2c7d86aaa 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -297,8 +297,6 @@ extern _X_EXPORT int XkbKeyboardErrorCode;
extern _X_EXPORT char * XkbBaseDirectory;
extern _X_EXPORT char * XkbBinDirectory;
-extern _X_EXPORT pointer XkbLastRepeatEvent;
-
extern _X_EXPORT CARD32 xkbDebugFlags;
#define _XkbTypedAlloc(t) ((t *)xalloc(sizeof(t)))
@@ -942,12 +940,12 @@ extern Bool XkbCopyDeviceKeymap(
DeviceIntPtr /* dst */,
DeviceIntPtr /* src */);
-extern int XkbGetKeysym(
- DeviceIntPtr /* dev */,
- DeviceEvent* /* event*/);
+extern void XkbFilterEvents(
+ ClientPtr /* pClient */,
+ int /* nEvents */,
+ xEvent* /* xE */);
#include "xkbfile.h"
-#include <X11/extensions/XKMformat.h>
#include "xkbrules.h"
#define _XkbListKeycodes 0
diff --git a/include/xkbstr.h b/include/xkbstr.h
index ec19b30c2..4afe010d2 100644
--- a/include/xkbstr.h
+++ b/include/xkbstr.h
@@ -123,8 +123,14 @@ typedef struct _XkbModAction {
unsigned char flags;
unsigned char mask;
unsigned char real_mods;
- unsigned int vmods;
+ /* FIXME: Make this an int. */
+ unsigned char vmods1;
+ unsigned char vmods2;
} XkbModAction;
+#define XkbModActionVMods(a) ((short) (((a)->vmods1 << 8) | (a)->vmods2))
+#define XkbSetModActionVMods(a,v) \
+ ((a)->vmods1 = (((v) >> 8) & 0xff), \
+ (a)->vmods2 = (v) & 0xff)
typedef struct _XkbGroupAction {
unsigned char type;
@@ -143,15 +149,23 @@ typedef struct _XkbISOAction {
/* FIXME: Make this an int. */
char group_XXX;
unsigned char affect;
- unsigned int vmods;
+ unsigned char vmods1;
+ unsigned char vmods2;
} XkbISOAction;
typedef struct _XkbPtrAction {
unsigned char type;
unsigned char flags;
- int x;
- int y;
+ /* FIXME: Make this an int. */
+ unsigned char high_XXX;
+ unsigned char low_XXX;
+ unsigned char high_YYY;
+ unsigned char low_YYY;
} XkbPtrAction;
+#define XkbPtrActionX(a) (Xkb2CharsToInt((a)->high_XXX,(a)->low_XXX))
+#define XkbPtrActionY(a) (Xkb2CharsToInt((a)->high_YYY,(a)->low_YYY))
+#define XkbSetPtrActionX(a,x) (XkbIntTo2Chars(x,(a)->high_XXX,(a)->low_XXX))
+#define XkbSetPtrActionY(a,y) (XkbIntTo2Chars(y,(a)->high_YYY,(a)->low_YYY))
typedef struct _XkbPtrBtnAction {
unsigned char type;
@@ -180,8 +194,20 @@ typedef struct _XkbSwitchScreenAction {
typedef struct _XkbCtrlsAction {
unsigned char type;
unsigned char flags;
- unsigned long ctrls;
+ /* FIXME: Make this an int. */
+ unsigned char ctrls3;
+ unsigned char ctrls2;
+ unsigned char ctrls1;
+ unsigned char ctrls0;
} XkbCtrlsAction;
+#define XkbActionSetCtrls(a, c) ((a)->ctrls3 = ((c) >> 24) & 0xff, \
+ (a)->ctrls2 = ((c) >> 16) & 0xff, \
+ (a)->ctrls1 = ((c) >> 8) & 0xff, \
+ (a)->ctrls0 = (c) & 0xff)
+#define XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|\
+ (((unsigned int)(a)->ctrls2)<<16)|\
+ (((unsigned int)(a)->ctrls1)<<8)|\
+ ((unsigned int) (a)->ctrls0))
typedef struct _XkbMessageAction {
unsigned char type;
@@ -194,10 +220,23 @@ typedef struct _XkbRedirectKeyAction {
unsigned char new_key;
unsigned char mods_mask;
unsigned char mods;
- unsigned int vmods_mask;
- unsigned int vmods;
+ /* FIXME: Make this an int. */
+ unsigned char vmods_mask0;
+ unsigned char vmods_mask1;
+ unsigned char vmods0;
+ unsigned char vmods1;
} XkbRedirectKeyAction;
+#define XkbSARedirectVMods(a) ((((unsigned int)(a)->vmods1)<<8)|\
+ ((unsigned int)(a)->vmods0))
+/* FIXME: This is blatantly not setting vmods. Yeesh. */
+#define XkbSARedirectSetVMods(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\
+ ((a)->vmods_mask0=((m)&0xff)))
+#define XkbSARedirectVModsMask(a) ((((unsigned int)(a)->vmods_mask1)<<8)|\
+ ((unsigned int)(a)->vmods_mask0))
+#define XkbSARedirectSetVModsMask(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\
+ ((a)->vmods_mask0=((m)&0xff)))
+
typedef struct _XkbDeviceBtnAction {
unsigned char type;
unsigned char flags;
diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
index ebeb44a37..d1594202e 100644
--- a/include/xorg-config.h.in
+++ b/include/xorg-config.h.in
@@ -51,15 +51,15 @@
/* Build DRI2 extension */
#undef DRI2
-/* Solaris 8 or later? */
-#undef __SOL8__
-
/* Define to 1 if you have the <stropts.h> header file. */
#undef HAVE_STROPTS_H
/* Define to 1 if you have the <sys/kd.h> header file. */
#undef HAVE_SYS_KD_H
+/* Define to 1 if you have the <sys/vt.h> header file. */
+#undef HAVE_SYS_VT_H
+
/* Define to 1 if you have the `walkcontext' function (used on Solaris for
xorg_backtrace in hw/xfree86/common/xf86Events.c */
#undef HAVE_WALKCONTEXT
@@ -118,9 +118,15 @@
/* Have pci_system_init_dev_mem() */
#undef HAVE_PCI_SYSTEM_INIT_DEV_MEM
+/* Define to 1 if you have the `pci_device_is_boot_vga' function. */
+#undef HAVE_PCI_DEVICE_IS_BOOT_VGA
+
/* Have pci_enable_device */
#undef HAVE_PCI_DEVICE_ENABLE
+/* Define to 1 if you have the `pci_device_vgaarb_init' function. */
+#undef HAVE_PCI_DEVICE_VGAARB_INIT
+
/* Path to text files containing PCI IDs */
#undef PCI_TXT_IDS_PATH
diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
index 3189ff3c8..76cab16b6 100644
--- a/include/xorg-server.h.in
+++ b/include/xorg-server.h.in
@@ -166,9 +166,6 @@
/* System is BSD-like */
#undef CSRG_BASED
-/* Solaris 8 or later? */
-#undef __SOL8__
-
/* System has PC console */
#undef PCCONS_SUPPORT
@@ -187,4 +184,7 @@
/* Use libpciaccess */
#undef XSERVER_LIBPCIACCESS
+/* X Access Control Extension */
+#undef XACE
+
#endif /* _XORG_SERVER_H_ */
diff --git a/include/xserver-properties.h b/include/xserver-properties.h
index 9b3b7bf8d..626d0ad27 100644
--- a/include/xserver-properties.h
+++ b/include/xserver-properties.h
@@ -32,6 +32,8 @@
/* BOOL. 0 - device disabled, 1 - device enabled */
#define XI_PROP_ENABLED "Device Enabled"
+/* BOOL. If present, device is a virtual XTEST device */
+#define XI_PROP_XTEST_DEVICE "XTEST Device"
/* Pointer acceleration properties */
/* INTEGER of any format */
diff --git a/mi/mi.h b/mi/mi.h
index 4431239cf..3db8bfcf1 100644
--- a/mi/mi.h
+++ b/mi/mi.h
@@ -224,7 +224,7 @@ extern _X_EXPORT void mieqProcessInputEvents(
extern DeviceIntPtr CopyGetMasterEvent(
DeviceIntPtr /* sdev */,
InternalEvent* /* original */,
- EventListPtr /* mlist */
+ InternalEvent* /* copy */
);
/**
diff --git a/mi/midispcur.c b/mi/midispcur.c
index 7b3ce292e..3fb7e02b5 100644
--- a/mi/midispcur.c
+++ b/mi/midispcur.c
@@ -51,7 +51,7 @@ in this Software without prior written authorization from The Open Group.
# include "picturestr.h"
#endif
-# include "inputstr.h" /* for MAX_DEVICES */
+# include "inputstr.h"
/* per-screen private data */
static int miDCScreenKeyIndex;
diff --git a/mi/mieq.c b/mi/mieq.c
index 0f07b168e..1b81e4d99 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -51,11 +51,11 @@ in this Software without prior written authorization from The Open Group.
# include <X11/extensions/geproto.h>
# include "extinit.h"
# include "exglobals.h"
+# include "eventstr.h"
#ifdef DPMSExtension
# include "dpmsproc.h"
-# define DPMS_SERVER
-# include <X11/extensions/dpms.h>
+# include <X11/extensions/dpmsconst.h>
#endif
#define QUEUE_SIZE 512
@@ -78,7 +78,6 @@ typedef struct _EventQueue {
} EventQueueRec, *EventQueuePtr;
static EventQueueRec miEventQueue;
-static EventListPtr masterEvents; /* for use in mieqProcessInputEvents */
#ifdef XQUARTZ
#include <pthread.h>
@@ -117,16 +116,6 @@ mieqInit(void)
miEventQueue.events[i].events = evlist;
}
- /* XXX: mE is just 1 event long, if we have Motion + Valuator they are
- * squashed into the first event to make passing it into the event
- * processing handlers easier. This should be fixed when the processing
- * handlers switch to EventListPtr instead of xEvent */
- masterEvents = InitEventList(1);
- if (!masterEvents)
- FatalError("Could not allocated MD event queue.\n");
- SetMinimumEventSize(masterEvents, 1,
- (1 + MAX_VALUATOR_EVENTS) * sizeof(xEvent));
-
SetInputCheck(&miEventQueue.head, &miEventQueue.tail);
return TRUE;
}
@@ -170,26 +159,26 @@ mieqEnqueue(DeviceIntPtr pDev, InternalEvent *e)
if (isMotion && isMotion == miEventQueue.lastMotion &&
oldtail != miEventQueue.head) {
- oldtail = (oldtail - 1) % QUEUE_SIZE;
+ oldtail = (oldtail - 1) % QUEUE_SIZE;
}
else {
- static int stuck = 0;
- /* Toss events which come in late. Usually this means your server's
+ static int stuck = 0;
+ /* 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 (((oldtail + 1) % QUEUE_SIZE) == miEventQueue.head) {
- if (!stuck) {
+ if (((oldtail + 1) % QUEUE_SIZE) == miEventQueue.head) {
+ if (!stuck) {
ErrorF("[mi] EQ overflowing. The server is probably stuck "
"in an infinite loop.\n");
- xorg_backtrace();
- stuck = 1;
- }
+ xorg_backtrace();
+ stuck = 1;
+ }
#ifdef XQUARTZ
- pthread_mutex_unlock(&miEventQueueMutex);
+ pthread_mutex_unlock(&miEventQueueMutex);
#endif
- return;
+ return;
}
- stuck = 0;
+ stuck = 0;
}
evlen = e->any.length;
@@ -218,7 +207,7 @@ mieqEnqueue(DeviceIntPtr pDev, InternalEvent *e)
e->any.time = miEventQueue.lastEventTime;
miEventQueue.lastEventTime = ((InternalEvent*)evt->event)->any.time;
- miEventQueue.events[oldtail].pScreen = EnqueueScreen(pDev);
+ miEventQueue.events[oldtail].pScreen = pDev ? EnqueueScreen(pDev) : NULL;
miEventQueue.events[oldtail].pDev = pDev;
miEventQueue.lastMotion = isMotion;
@@ -236,7 +225,7 @@ mieqSwitchScreen(DeviceIntPtr pDev, ScreenPtr pScreen, Bool fromDIX)
#endif
EnqueueScreen(pDev) = pScreen;
if (fromDIX)
- DequeueScreen(pDev) = pScreen;
+ DequeueScreen(pDev) = pScreen;
#ifdef XQUARTZ
pthread_mutex_unlock(&miEventQueueMutex);
#endif
@@ -278,10 +267,14 @@ ChangeDeviceID(DeviceIntPtr dev, InternalEvent* event)
event->device.deviceid = dev->id;
break;
#if XFreeXDGA
- case ET_DGAEvent:
- break;
+ case ET_DGAEvent:
+ break;
#endif
- case ET_Raw:
+ case ET_RawKeyPress:
+ case ET_RawKeyRelease:
+ case ET_RawButtonPress:
+ case ET_RawButtonRelease:
+ case ET_RawMotion:
event->raw.deviceid = dev->id;
break;
default:
@@ -313,16 +306,15 @@ FixUpEventForMaster(DeviceIntPtr mdev, DeviceIntPtr sdev,
* Copy the given event into master.
* @param sdev The slave device the original event comes from
* @param original The event as it came from the EQ
- * @param master The event after being copied
+ * @param copy The event after being copied
* @return The master device or NULL if the device is a floating slave.
*/
DeviceIntPtr
CopyGetMasterEvent(DeviceIntPtr sdev,
- InternalEvent* original, EventListPtr mlist)
+ InternalEvent* original, InternalEvent *copy)
{
DeviceIntPtr mdev;
int len = original->any.length;
- InternalEvent *mevent;
CHECKEVENT(original);
@@ -347,15 +339,9 @@ CopyGetMasterEvent(DeviceIntPtr sdev,
break;
}
-
- if (mlist->evlen < len)
- SetMinimumEventSize(mlist, 1, len);
-
- mevent = (InternalEvent*)mlist->event;
-
- memcpy(mevent, original, len);
- ChangeDeviceID(mdev, mevent);
- FixUpEventForMaster(mdev, sdev, original, mevent);
+ memcpy(copy, original, len);
+ ChangeDeviceID(mdev, copy);
+ FixUpEventForMaster(mdev, sdev, original, copy);
return mdev;
}
@@ -374,45 +360,55 @@ mieqProcessDeviceEvent(DeviceIntPtr dev,
mieqHandler handler;
int x = 0, y = 0;
DeviceIntPtr master;
+ InternalEvent mevent; /* master event */
CHECKEVENT(event);
/* Custom event handler */
handler = miEventQueue.handlers[event->any.type];
- if (screen && screen != DequeueScreen(dev) && !handler) {
- /* Assumption - screen switching can only occur on motion events. */
- DequeueScreen(dev) = screen;
- x = event->device.root_x;
- y = event->device.root_y;
- NewCurrentScreen (dev, DequeueScreen(dev), x, y);
+ switch (event->any.type) {
+ /* Catch events that include valuator information and check if they
+ * are changing the screen */
+ case ET_Motion:
+ case ET_KeyPress:
+ case ET_KeyRelease:
+ case ET_ButtonPress:
+ case ET_ButtonRelease:
+ if (dev && screen && screen != DequeueScreen(dev) && !handler) {
+ DequeueScreen(dev) = screen;
+ x = event->device.root_x;
+ y = event->device.root_y;
+ NewCurrentScreen (dev, DequeueScreen(dev), x, y);
+ }
+ break;
+ default:
+ break;
}
- else {
- master = CopyGetMasterEvent(dev, event, masterEvents);
+ master = CopyGetMasterEvent(dev, event, &mevent);
- /* If someone's registered a custom event handler, let them
- * steal it. */
- if (handler)
- {
- handler(DequeueScreen(dev)->myNum, event, dev);
- if (master)
- {
- master->u.lastSlave = dev;
- handler(DequeueScreen(master)->myNum,
- (InternalEvent*)masterEvents->event, master);
- }
- } else
- {
- /* process slave first, then master */
- dev->public.processInputProc(event, dev);
-
- /* Check for the SD's master in case the device got detached
- * during event processing */
- if (master && dev->u.master)
- master->public.processInputProc(
- (InternalEvent*)masterEvents->event,
- master);
- }
+ if (master)
+ master->u.lastSlave = dev;
+
+ /* If someone's registered a custom event handler, let them
+ * steal it. */
+ if (handler)
+ {
+ int screenNum = dev && DequeueScreen(dev) ? DequeueScreen(dev)->myNum : (screen ? screen->myNum : 0);
+ handler(screenNum, event, dev);
+ /* Check for the SD's master in case the device got detached
+ * during event processing */
+ if (master && dev->u.master)
+ handler(screenNum, &mevent, master);
+ } else
+ {
+ /* process slave first, then master */
+ dev->public.processInputProc(event, dev);
+
+ /* Check for the SD's master in case the device got detached
+ * during event processing */
+ if (master && dev->u.master)
+ master->public.processInputProc(&mevent, master);
}
}
@@ -454,7 +450,7 @@ mieqProcessInputEvents(void)
pthread_mutex_unlock(&miEventQueueMutex);
#endif
- master = (!IsMaster(dev) && dev->u.master) ? dev->u.master : NULL;
+ master = (dev && !IsMaster(dev) && dev->u.master) ? dev->u.master : NULL;
if (screenIsSaved == SCREEN_SAVER_ON)
dixSaveScreens (serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
diff --git a/mi/miinitext.c b/mi/miinitext.c
index 9520957ee..7f59126a4 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -156,17 +156,15 @@ typedef void (*InitExtension)(INITARGS);
#endif
#ifdef MITSHM
-#define _XSHM_SERVER_
-#include <X11/extensions/shmstr.h>
+#include <X11/extensions/shm.h>
#endif
#ifdef XTEST
-#define _XTEST_SERVER_
-#include <X11/extensions/XTest.h>
+#include <X11/extensions/xtestconst.h>
#endif
#include <X11/extensions/XKB.h>
#ifdef XCSECURITY
#include "securitysrv.h"
-#include <X11/extensions/securstr.h>
+#include <X11/extensions/secur.h>
#endif
#ifdef XSELINUX
#include "xselinux.h"
diff --git a/mi/miscrinit.c b/mi/miscrinit.c
index fe768f4a9..96113d65d 100644
--- a/mi/miscrinit.c
+++ b/mi/miscrinit.c
@@ -39,8 +39,8 @@ from The Open Group.
#include "dix.h"
#include "miline.h"
#ifdef MITSHM
-#define _XSHM_SERVER_
-#include <X11/extensions/XShm.h>
+#include <X11/extensions/shm.h>
+#include "shmint.h"
#endif
/* We use this structure to propogate some information from miScreenInit to
diff --git a/miext/Makefile.am b/miext/Makefile.am
index f138963b4..84ab70855 100644
--- a/miext/Makefile.am
+++ b/miext/Makefile.am
@@ -5,4 +5,7 @@ endif
if XQUARTZ
SUBDIRS += rootless
endif
+if XWIN_MULTIWINDOWEXTWM
+SUBDIRS += rootless
+endif
DIST_SUBDIRS = damage shadow cw rootless
diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index ade67359a..b7ec92a5b 100644
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -1856,6 +1856,25 @@ damageCloseScreen (int i, ScreenPtr pScreen)
}
/**
+ * Default implementations of the damage management functions.
+ */
+void miDamageCreate (DamagePtr pDamage)
+{
+}
+
+void miDamageRegister (DrawablePtr pDrawable, DamagePtr pDamage)
+{
+}
+
+void miDamageUnregister (DrawablePtr pDrawable, DamagePtr pDamage)
+{
+}
+
+void miDamageDestroy (DamagePtr pDamage)
+{
+}
+
+/**
* Public functions for consumption outside this file.
*/
@@ -1866,6 +1885,9 @@ DamageSetup (ScreenPtr pScreen)
#ifdef RENDER
PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
#endif
+ const DamageScreenFuncsRec miFuncs = {
+ miDamageCreate, miDamageRegister, miDamageUnregister, miDamageDestroy
+ };
if (dixLookupPrivate(&pScreen->devPrivates, damageScrPrivateKey))
return TRUE;
@@ -1894,6 +1916,8 @@ DamageSetup (ScreenPtr pScreen)
}
#endif
+ pScrPriv->funcs = miFuncs;
+
dixSetPrivate(&pScreen->devPrivates, damageScrPrivateKey, pScrPriv);
return TRUE;
}
@@ -1906,6 +1930,7 @@ DamageCreate (DamageReportFunc damageReport,
ScreenPtr pScreen,
void *closure)
{
+ damageScrPriv(pScreen);
DamagePtr pDamage;
pDamage = xalloc (sizeof (DamageRec));
@@ -1927,6 +1952,11 @@ DamageCreate (DamageReportFunc damageReport,
pDamage->damageReportPostRendering = NULL;
pDamage->damageDestroy = damageDestroy;
pDamage->damageMarker = NULL;
+ pDamage->pScreen = pScreen;
+ pDamage->devPrivates = NULL;
+
+ (*pScrPriv->funcs.Create) (pDamage);
+
return pDamage;
}
@@ -1934,6 +1964,17 @@ void
DamageRegister (DrawablePtr pDrawable,
DamagePtr pDamage)
{
+ ScreenPtr pScreen = pDrawable->pScreen;
+ damageScrPriv(pScreen);
+
+#if DAMAGE_VALIDATE_ENABLE
+ if (pDrawable->pScreen != pDamage->pScreen)
+ {
+ ErrorF ("DamageRegister called with mismatched screens\n");
+ abort ();
+ }
+#endif
+
if (pDrawable->type == DRAWABLE_WINDOW)
{
WindowPtr pWindow = (WindowPtr) pDrawable;
@@ -1956,6 +1997,7 @@ DamageRegister (DrawablePtr pDrawable,
pDamage->isWindow = FALSE;
pDamage->pDrawable = pDrawable;
damageInsertDamage (getDrawableDamageRef (pDrawable), pDamage);
+ (*pScrPriv->funcs.Register) (pDrawable, pDamage);
}
void
@@ -1970,6 +2012,11 @@ void
DamageUnregister (DrawablePtr pDrawable,
DamagePtr pDamage)
{
+ ScreenPtr pScreen = pDrawable->pScreen;
+ damageScrPriv(pScreen);
+
+ (*pScrPriv->funcs.Unregister) (pDrawable, pDamage);
+
if (pDrawable->type == DRAWABLE_WINDOW)
{
WindowPtr pWindow = (WindowPtr) pDrawable;
@@ -2004,10 +2051,16 @@ DamageUnregister (DrawablePtr pDrawable,
void
DamageDestroy (DamagePtr pDamage)
{
+ ScreenPtr pScreen = pDamage->pScreen;
+ damageScrPriv(pScreen);
+
if (pDamage->damageDestroy)
(*pDamage->damageDestroy) (pDamage, pDamage->closure);
- REGION_UNINIT (pDamage->pDrawable->pScreen, &pDamage->damage);
- REGION_UNINIT (pDamage->pDrawable->pScreen, &pDamage->pendingDamage);
+ (*pScrPriv->funcs.Destroy) (pDamage);
+ dixFreePrivates(pDamage->devPrivates);
+ pDamage->devPrivates = NULL;
+ REGION_UNINIT (pScreen, &pDamage->damage);
+ REGION_UNINIT (pScreen, &pDamage->pendingDamage);
xfree (pDamage);
}
@@ -2111,3 +2164,10 @@ DamageSetPostRenderingFunctions(DamagePtr pDamage, DamageReportFunc damageReport
pDamage->damageReportPostRendering = damageReportPostRendering;
pDamage->damageMarker = damageMarker;
}
+
+DamageScreenFuncsPtr
+DamageGetScreenFuncs (ScreenPtr pScreen)
+{
+ damageScrPriv(pScreen);
+ return &pScrPriv->funcs;
+}
diff --git a/miext/damage/damage.h b/miext/damage/damage.h
index 9ead92567..067016f38 100644
--- a/miext/damage/damage.h
+++ b/miext/damage/damage.h
@@ -43,6 +43,23 @@ typedef void (*DamageDestroyFunc) (DamagePtr pDamage, void *closure);
/* At some point DamageRegionRendered() must be called. */
typedef void (*DamageMarkerFunc) (DrawablePtr pDrawable, DamagePtr pDamage, RegionPtr pOldDamage, RegionPtr pRegion, void *closure);
+typedef void (*DamageScreenCreateFunc) (DamagePtr);
+typedef void (*DamageScreenRegisterFunc) (DrawablePtr, DamagePtr);
+typedef void (*DamageScreenUnregisterFunc) (DrawablePtr, DamagePtr);
+typedef void (*DamageScreenDestroyFunc) (DamagePtr);
+
+typedef struct _damageScreenFuncs {
+ DamageScreenCreateFunc Create;
+ DamageScreenRegisterFunc Register;
+ DamageScreenUnregisterFunc Unregister;
+ DamageScreenDestroyFunc Destroy;
+} DamageScreenFuncsRec, *DamageScreenFuncsPtr;
+
+extern _X_EXPORT void miDamageCreate (DamagePtr);
+extern _X_EXPORT void miDamageRegister (DrawablePtr, DamagePtr);
+extern _X_EXPORT void miDamageUnregister (DrawablePtr, DamagePtr);
+extern _X_EXPORT void miDamageDestroy (DamagePtr);
+
extern _X_EXPORT Bool
DamageSetup (ScreenPtr pScreen);
@@ -105,4 +122,7 @@ extern _X_EXPORT void
DamageSetPostRenderingFunctions(DamagePtr pDamage, DamageReportFunc damageReportPostRendering,
DamageMarkerFunc damageMarker);
+extern _X_EXPORT DamageScreenFuncsPtr
+DamageGetScreenFuncs (ScreenPtr);
+
#endif /* _DAMAGE_H_ */
diff --git a/miext/damage/damagestr.h b/miext/damage/damagestr.h
index 559a13659..d7435b2a1 100644
--- a/miext/damage/damagestr.h
+++ b/miext/damage/damagestr.h
@@ -53,6 +53,8 @@ typedef struct _damage {
Bool reportAfter;
RegionRec pendingDamage; /* will be flushed post submission at the latest */
RegionRec backupDamage; /* for use with damageMarker */
+ ScreenPtr pScreen;
+ PrivateRec *devPrivates;
} DamageRec;
typedef struct _damageScrPriv {
@@ -75,6 +77,9 @@ typedef struct _damageScrPriv {
GlyphsProcPtr Glyphs;
AddTrapsProcPtr AddTraps;
#endif
+
+ /* Table of wrappable function pointers */
+ DamageScreenFuncsRec funcs;
} DamageScrPrivRec, *DamageScrPrivPtr;
typedef struct _damageGCPriv {
diff --git a/os/WaitFor.c b/os/WaitFor.c
index 4b5952565..dfe85e515 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -111,8 +111,7 @@ mffs(fd_mask mask)
}
#ifdef DPMSExtension
-#define DPMS_SERVER
-#include <X11/extensions/dpms.h>
+#include <X11/extensions/dpmsconst.h>
#endif
struct _OsTimerRec {
diff --git a/os/access.c b/os/access.c
index 34478768b..8c5b50af0 100644
--- a/os/access.c
+++ b/os/access.c
@@ -415,8 +415,7 @@ DefineSelf (int fd)
*/
if (family == FamilyInternet &&
!(len == 4 &&
- ((addr[0] == 127 && addr[1] == 0 &&
- addr[2] == 0 && addr[3] == 1) ||
+ ((addr[0] == 127) ||
(addr[0] == 0 && addr[1] == 0 &&
addr[2] == 0 && addr[3] == 0)))
)
@@ -1458,7 +1457,7 @@ GetHosts (
for (host = validhosts; host; host = host->next)
{
nHosts++;
- n += (((host->len + 3) >> 2) << 2) + sizeof(xHostEntry);
+ n += pad_to_int32(host->len) + sizeof(xHostEntry);
}
if (n)
{
@@ -1474,7 +1473,7 @@ GetHosts (
((xHostEntry *)ptr)->length = len;
ptr += sizeof(xHostEntry);
acopy (host->addr, ptr, len);
- ptr += ((len + 3) >> 2) << 2;
+ ptr += pad_to_int32(len);
}
} else {
*data = NULL;
diff --git a/os/backtrace.c b/os/backtrace.c
index 3cfae3e16..a421140fb 100644
--- a/os/backtrace.c
+++ b/os/backtrace.c
@@ -29,19 +29,30 @@
#include "misc.h"
#ifdef HAVE_BACKTRACE
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+#include <dlfcn.h>
#include <execinfo.h>
void xorg_backtrace(void)
{
- void *array[32]; /* deeper nesting than this means something's wrong */
+ void *array[64];
+ char *mod;
int size, i;
- char **strings;
+ Dl_info info;
ErrorF("\nBacktrace:\n");
- size = backtrace(array, 32);
- strings = backtrace_symbols(array, size);
- for (i = 0; i < size; i++)
- ErrorF("%d: %s\n", i, strings[i]);
- free(strings);
+ size = backtrace(array, 64);
+ for (i = 0; i < size; i++) {
+ dladdr(array[i], &info);
+ mod = (info.dli_fname && *info.dli_fname) ? info.dli_fname : "(vdso)";
+ if (info.dli_saddr)
+ ErrorF("%d: %s (%s+0x%lx) [%p]\n", i, mod,
+ info.dli_sname, array[i] - info.dli_saddr, array[i]);
+ else
+ ErrorF("%d: %s (%p+0x%lx) [%p]\n", i, mod,
+ info.dli_fbase, array[i] - info.dli_fbase, array[i]);
+ }
}
#else /* not glibc or glibc < 2.1 */
diff --git a/os/io.c b/os/io.c
index 45e193801..64b64ae75 100644
--- a/os/io.c
+++ b/os/io.c
@@ -105,7 +105,7 @@ static OsCommPtr AvailableInput = (OsCommPtr)NULL;
#define get_req_len(req,cli) ((cli)->swapped ? \
lswaps((req)->length) : (req)->length)
-#include <X11/extensions/bigreqstr.h>
+#include <X11/extensions/bigreqsproto.h>
#define get_big_req_len(req,cli) ((cli)->swapped ? \
lswapl(((xBigReq *)(req))->length) : \
@@ -273,7 +273,7 @@ ReadRequestFromClient(ClientPtr client)
if (gotnow < sizeof(xBigReq))
{
/* Still need more data to tell just how big. */
- needed = sizeof(xBigReq) >> 2; /* needed is in CARD32s now */
+ needed = bytes_to_int32(sizeof(xBigReq)); /* needed is in CARD32s now */
need_header = TRUE;
}
else
@@ -377,7 +377,7 @@ ReadRequestFromClient(ClientPtr client)
{
move_header = TRUE;
if (gotnow < sizeof(xBigReq))
- needed = sizeof(xBigReq) >> 2;
+ needed = bytes_to_int32(sizeof(xBigReq));
else
needed = get_big_req_len(request, client);
}
@@ -445,7 +445,7 @@ ReadRequestFromClient(ClientPtr client)
oci->bufptr += (sizeof(xBigReq) - sizeof(xReq));
*(xReq *)oci->bufptr = *request;
oci->lenLastReq -= (sizeof(xBigReq) - sizeof(xReq));
- client->req_len -= (sizeof(xBigReq) - sizeof(xReq)) >> 2;
+ client->req_len -= bytes_to_int32(sizeof(xBigReq) - sizeof(xReq));
}
client->requestBuffer = (pointer)oci->bufptr;
#ifdef DEBUG_COMMUNICATION
diff --git a/os/osdep.h b/os/osdep.h
index b0d30e9ee..3d75bbaab 100644
--- a/os/osdep.h
+++ b/os/osdep.h
@@ -56,7 +56,9 @@ SOFTWARE.
#define BUFSIZE 4096
#define BUFWATERMARK 8192
+#if defined(XDMCP) || defined(HASXDMAUTH)
#include <X11/Xdmcp.h>
+#endif
#ifdef _POSIX_SOURCE
#include <limits.h>
@@ -109,9 +111,11 @@ SOFTWARE.
#include <stddef.h>
+#if defined(XDMCP) || defined(HASXDMAUTH)
typedef Bool (*ValidatorFunc)(ARRAY8Ptr Auth, ARRAY8Ptr Data, int packet_type);
typedef Bool (*GeneratorFunc)(ARRAY8Ptr Auth, ARRAY8Ptr Data, int packet_type);
typedef Bool (*AddAuthorFunc)(unsigned name_length, char *name, unsigned data_length, char *data);
+#endif
typedef struct _connectionInput {
struct _connectionInput *next;
@@ -244,6 +248,7 @@ extern int SecureRPCRemove (AuthRemCArgs);
extern int SecureRPCReset (AuthRstCArgs);
#endif
+#ifdef XDMCP
/* in xdmcp.c */
extern void XdmcpUseMsg (void);
extern int XdmcpOptions(int argc, char **argv, int i);
@@ -268,6 +273,7 @@ extern void XdmcpRegisterAuthentication (
struct sockaddr_in;
extern void XdmcpRegisterBroadcastAddress (struct sockaddr_in *addr);
+#endif
#ifdef HASXDMAUTH
extern void XdmAuthenticationInit (char *cookie, int cookie_length);
diff --git a/os/osinit.c b/os/osinit.c
index 17a2bedc7..e8fcd4540 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -59,6 +59,10 @@ SOFTWARE.
#ifdef HAVE_DLFCN_H
# include <dlfcn.h>
#endif
+#ifdef HAVE_BACKTRACE
+#include <execinfo.h>
+#endif
+
#include "dixstruct.h"
@@ -192,6 +196,16 @@ OsInit(void)
siglist[i], strerror(errno));
}
}
+#ifdef HAVE_BACKTRACE
+ /*
+ * initialize the backtracer, since the ctor calls dlopen(), which
+ * calls malloc(), which isn't signal-safe.
+ */
+ do {
+ void *array;
+ backtrace(&array, 1);
+ } while (0);
+#endif
#ifdef RTLD_DI_SETSIGNAL
/* Tell runtime linker to send a signal we can catch instead of SIGKILL
diff --git a/os/utils.c b/os/utils.c
index 00abd6396..3718b170c 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -482,7 +482,6 @@ void UseMsg(void)
ErrorF("-c turns off key-click\n");
ErrorF("c # key-click volume (0-100)\n");
ErrorF("-cc int default color visual class\n");
- ErrorF("-cursor enable the cursor (default)\n");
ErrorF("-nocursor disable the cursor\n");
ErrorF("-core generate core dump on fatal error\n");
ErrorF("-dpi int screen resolution in dots per inch\n");
@@ -666,10 +665,6 @@ ProcessCommandLine(int argc, char *argv[])
{
EnableCursor = FALSE;
}
- else if ( strcmp( argv[i], "-cursor") == 0)
- {
- EnableCursor = TRUE;
- }
else if ( strcmp( argv[i], "-dpi") == 0)
{
if(++i < argc)
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 32a09922b..0e14b36dd 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -775,7 +775,7 @@ ProcRRSetCrtcConfig (ClientPtr client)
int rc, i, j;
REQUEST_AT_LEAST_SIZE(xRRSetCrtcConfigReq);
- numOutputs = (stuff->length - (SIZEOF (xRRSetCrtcConfigReq) >> 2));
+ numOutputs = (stuff->length - bytes_to_int32(SIZEOF (xRRSetCrtcConfigReq)));
VERIFY_RR_CRTC(stuff->crtc, crtc, DixSetAttrAccess);
@@ -1205,7 +1205,7 @@ ProcRRGetCrtcGamma (ClientPtr client)
reply.type = X_Reply;
reply.sequenceNumber = client->sequence;
- reply.length = (len + 3) >> 2;
+ reply.length = bytes_to_int32(len);
reply.size = crtc->gammaSize;
if (client->swapped) {
swaps (&reply.sequenceNumber, n);
@@ -1234,7 +1234,7 @@ ProcRRSetCrtcGamma (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xRRSetCrtcGammaReq);
VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess);
- len = client->req_len - (sizeof (xRRSetCrtcGammaReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof (xRRSetCrtcGammaReq));
if (len < (stuff->size * 3 + 1) >> 1)
return BadLength;
@@ -1274,7 +1274,7 @@ ProcRRSetCrtcTransform (ClientPtr client)
filter = (char *) (stuff + 1);
nbytes = stuff->nbytesFilter;
- params = (xFixed *) (filter + ((nbytes + 3) & ~3));
+ params = (xFixed *) (filter + pad_to_int32(nbytes));
nparams = ((xFixed *) stuff + client->req_len) - params;
if (nparams < 0)
return BadLength;
@@ -1295,7 +1295,7 @@ transform_filter_length (RRTransformPtr transform)
return 0;
nbytes = strlen (transform->filter->name);
nparams = transform->nparams;
- return ((nbytes + 3) & ~3) + (nparams * sizeof (xFixed));
+ return pad_to_int32(nbytes) + (nparams * sizeof (xFixed));
}
static int
@@ -1334,7 +1334,7 @@ transform_encode (ClientPtr client, xRenderTransform *wire, PictTransform *pict)
{
xRenderTransform_from_PictTransform (wire, pict);
if (client->swapped)
- SwapLongs ((CARD32 *) wire, sizeof (xRenderTransform) >> 2);
+ SwapLongs ((CARD32 *) wire, bytes_to_int32(sizeof(xRenderTransform)));
}
int
@@ -1363,7 +1363,7 @@ ProcRRGetCrtcTransform (ClientPtr client)
extra = (char *) (reply + 1);
reply->type = X_Reply;
reply->sequenceNumber = client->sequence;
- reply->length = (CrtcTransformExtra + nextra) >> 2;
+ reply->length = bytes_to_int32(CrtcTransformExtra + nextra);
reply->hasTransforms = crtc->transforms;
diff --git a/randr/rrmode.c b/randr/rrmode.c
index 2a1007662..9642ddae3 100644
--- a/randr/rrmode.c
+++ b/randr/rrmode.c
@@ -288,7 +288,7 @@ ProcRRCreateMode (ClientPtr client)
RRModePtr mode;
REQUEST_AT_LEAST_SIZE (xRRCreateModeReq);
- rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
if (rc != Success)
return rc;
@@ -297,10 +297,10 @@ ProcRRCreateMode (ClientPtr client)
modeInfo = &stuff->modeInfo;
name = (char *) (stuff + 1);
- units_after = (stuff->length - (sizeof (xRRCreateModeReq) >> 2));
+ units_after = (stuff->length - bytes_to_int32(sizeof (xRRCreateModeReq)));
/* check to make sure requested name fits within the data provided */
- if ((int) (modeInfo->nameLength + 3) >> 2 > units_after)
+ if (bytes_to_int32(modeInfo->nameLength) > units_after)
return BadLength;
mode = RRModeCreateUser (pScreen, modeInfo, name, &error);
diff --git a/randr/rroutput.c b/randr/rroutput.c
index 127497eb8..2eff8c183 100644
--- a/randr/rroutput.c
+++ b/randr/rroutput.c
@@ -455,7 +455,7 @@ ProcRRGetOutputInfo (ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
- rep.length = OutputInfoExtra >> 2;
+ rep.length = bytes_to_int32(OutputInfoExtra);
rep.timestamp = pScrPriv->lastSetTime.milliseconds;
rep.crtc = output->crtc ? output->crtc->id : None;
rep.mmWidth = output->mmWidth;
@@ -468,14 +468,14 @@ ProcRRGetOutputInfo (ClientPtr client)
rep.nClones = output->numClones;
rep.nameLength = output->nameLength;
- extraLen = ((output->numCrtcs +
+ extraLen = ((output->numCrtcs +
output->numModes + output->numUserModes +
output->numClones +
- ((rep.nameLength + 3) >> 2)) << 2);
+ bytes_to_int32(rep.nameLength)) << 2);
if (extraLen)
{
- rep.length += extraLen >> 2;
+ rep.length += bytes_to_int32(extraLen);
extra = xalloc (extraLen);
if (!extra)
return BadAlloc;
diff --git a/randr/rrproperty.c b/randr/rrproperty.c
index 775d9e29f..6187b855f 100644
--- a/randr/rrproperty.c
+++ b/randr/rrproperty.c
@@ -429,7 +429,7 @@ ProcRRListOutputProperties (ClientPtr client)
return(BadAlloc);
rep.type = X_Reply;
- rep.length = (numProps * sizeof(Atom)) >> 2;
+ rep.length = bytes_to_int32(numProps * sizeof(Atom));
rep.sequenceNumber = client->sequence;
rep.nAtoms = numProps;
if (client->swapped)
@@ -510,7 +510,7 @@ ProcRRConfigureOutputProperty (ClientPtr client)
VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess);
- num_valid = stuff->length - (sizeof (xRRConfigureOutputPropertyReq) >> 2);
+ num_valid = stuff->length - bytes_to_int32(sizeof (xRRConfigureOutputPropertyReq));
return RRConfigureOutputProperty (output, stuff->property,
stuff->pending, stuff->range,
FALSE, num_valid,
@@ -544,7 +544,7 @@ ProcRRChangeOutputProperty (ClientPtr client)
return BadValue;
}
len = stuff->nUnits;
- if (len > ((0xffffffff - sizeof(xChangePropertyReq)) >> 2))
+ if (len > bytes_to_int32((0xffffffff - sizeof(xChangePropertyReq))))
return BadLength;
sizeInBytes = format>>3;
totalSize = len * sizeInBytes;
@@ -708,7 +708,7 @@ ProcRRGetOutputProperty (ClientPtr client)
}
reply.bytesAfter = n - (ind + len);
reply.format = prop_value->format;
- reply.length = (len + 3) >> 2;
+ reply.length = bytes_to_int32(len);
if (prop_value->format)
reply.nItems = len / (prop_value->format / 8);
else
diff --git a/randr/rrscreen.c b/randr/rrscreen.c
index a919ffdad..630ff5742 100644
--- a/randr/rrscreen.c
+++ b/randr/rrscreen.c
@@ -210,7 +210,7 @@ ProcRRGetScreenSizeRange (ClientPtr client)
int rc;
REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
- rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
if (rc != Success)
return rc;
@@ -261,7 +261,7 @@ ProcRRSetScreenSize (ClientPtr client)
int i, rc;
REQUEST_SIZE_MATCH(xRRSetScreenSizeReq);
- rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
if (rc != Success)
return rc;
@@ -331,7 +331,7 @@ rrGetScreenResources(ClientPtr client, Bool query)
CARD8 *names;
REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq);
- rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
if (rc != Success)
return rc;
@@ -381,8 +381,8 @@ rrGetScreenResources(ClientPtr client, Bool query)
rep.length = (pScrPriv->numCrtcs +
pScrPriv->numOutputs +
- num_modes * (SIZEOF(xRRModeInfo) >> 2) +
- ((rep.nbytesNames + 3) >> 2));
+ num_modes * bytes_to_int32(SIZEOF(xRRModeInfo)) +
+ bytes_to_int32(rep.nbytesNames));
extraLen = rep.length << 2;
if (extraLen)
@@ -455,7 +455,7 @@ rrGetScreenResources(ClientPtr client, Bool query)
names += mode->mode.nameLength;
}
xfree (modes);
- assert (((((char *) names - (char *) extra) + 3) >> 2) == rep.length);
+ assert (bytes_to_int32((char *) names - (char *) extra) == rep.length);
}
if (client->swapped) {
@@ -606,7 +606,7 @@ ProcRRGetScreenInfo (ClientPtr client)
RROutputPtr output;
REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
- rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
if (rc != Success)
return rc;
@@ -726,7 +726,7 @@ ProcRRGetScreenInfo (ClientPtr client)
if (data8 - (CARD8 *) extra != extraLen)
FatalError ("RRGetScreenInfo bad extra len %ld != %ld\n",
(unsigned long)(data8 - (CARD8 *) extra), extraLen);
- rep.length = (extraLen + 3) >> 2;
+ rep.length = bytes_to_int32(extraLen);
}
if (client->swapped) {
swaps(&rep.sequenceNumber, n);
diff --git a/randr/rrsdispatch.c b/randr/rrsdispatch.c
index f6821c309..e16090a41 100644
--- a/randr/rrsdispatch.c
+++ b/randr/rrsdispatch.c
@@ -375,10 +375,10 @@ SProcRRSetCrtcTransform (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xRRSetCrtcTransformReq);
swaps(&stuff->length, n);
swapl(&stuff->crtc, n);
- SwapLongs((CARD32 *)&stuff->transform, (sizeof(xRenderTransform)) >> 2);
+ SwapLongs((CARD32 *)&stuff->transform, bytes_to_int32(sizeof(xRenderTransform)));
swaps(&stuff->nbytesFilter, n);
filter = (char *)(stuff + 1);
- params = (CARD32 *) (filter + ((stuff->nbytesFilter + 3) & ~3));
+ params = (CARD32 *) (filter + pad_to_int32(stuff->nbytesFilter));
nparams = ((CARD32 *) stuff + client->req_len) - params;
if (nparams < 0)
return BadLength;
diff --git a/randr/rrxinerama.c b/randr/rrxinerama.c
index d81a857e1..97be7c1e6 100644
--- a/randr/rrxinerama.c
+++ b/randr/rrxinerama.c
@@ -313,7 +313,7 @@ ProcRRXineramaQueryScreens(ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.number = RRXineramaScreenCount (pScreen);
- rep.length = rep.number * sz_XineramaScreenInfo >> 2;
+ rep.length = bytes_to_int32(rep.number * sz_XineramaScreenInfo);
if(client->swapped) {
register int n;
swaps(&rep.sequenceNumber, n);
diff --git a/record/record.c b/record/record.c
index 3c4bb9ecb..84a96188a 100644
--- a/record/record.c
+++ b/record/record.c
@@ -38,8 +38,7 @@ and Jim Haggerty of Metheus.
#include "dixstruct.h"
#include "extnsionst.h"
-#define _XRECORD_SERVER_
-#include <X11/extensions/recordstr.h>
+#include <X11/extensions/recordproto.h>
#include "set.h"
#include "swaprep.h"
#include "inputstr.h"
@@ -372,7 +371,8 @@ RecordAProtocolElement(RecordContextPtr pContext, ClientPtr pClient,
replylen = pRep->length;
if (recordingClientSwapped) swapl(&replylen, n);
- replylen += numElemHeaders + (datalen >> 2) + (futurelen >> 2);
+ replylen += numElemHeaders + bytes_to_int32(datalen) +
+ bytes_to_int32(futurelen);
if (recordingClientSwapped) swapl(&replylen, n);
pRep->length = replylen;
} /* end if not continued reply */
@@ -480,7 +480,7 @@ RecordABigRequest(RecordContextPtr pContext, ClientPtr client, xReq *stuff)
(pointer)stuff, SIZEOF(xReq), bytesLeft);
/* reinsert the extended length field that was squished out */
- bigLength = client->req_len + (sizeof(bigLength) >> 2);
+ bigLength = client->req_len + bytes_to_int32(sizeof(bigLength));
if (client->swapped)
swapl(&bigLength, n);
RecordAProtocolElement(pContext, client, XRecordFromClient,
@@ -613,7 +613,7 @@ RecordAReply(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
if (pContext->continuedReply)
{
RecordAProtocolElement(pContext, client, XRecordFromServer,
- pri->replyData, pri->dataLenBytes, /* continuation */ -1);
+ (pointer)pri->replyData, pri->dataLenBytes, /* continuation */ -1);
if (!pri->bytesRemaining)
pContext->continuedReply = 0;
}
@@ -623,7 +623,7 @@ RecordAReply(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
if (majorop <= 127)
{ /* core reply */
RecordAProtocolElement(pContext, client, XRecordFromServer,
- pri->replyData, pri->dataLenBytes, pri->bytesRemaining);
+ (pointer)pri->replyData, pri->dataLenBytes, pri->bytesRemaining);
if (pri->bytesRemaining)
pContext->continuedReply = 1;
}
@@ -644,7 +644,7 @@ RecordAReply(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
minorop))
{
RecordAProtocolElement(pContext, client,
- XRecordFromServer, pri->replyData,
+ XRecordFromServer, (pointer)pri->replyData,
pri->dataLenBytes, pri->bytesRemaining);
if (pri->bytesRemaining)
pContext->continuedReply = 1;
@@ -2279,8 +2279,8 @@ ProcRecordGetContext(ClientPtr client)
{
rep.nClients += pRCAP->numClients;
rep.length += pRCAP->numClients *
- ( (sizeof(xRecordClientInfo) >> 2) +
- pri->nRanges * (sizeof(xRecordRange) >> 2));
+ ( bytes_to_int32(sizeof(xRecordClientInfo)) +
+ pri->nRanges * bytes_to_int32(sizeof(xRecordRange)));
}
/* write the reply header */
@@ -2579,13 +2579,13 @@ SwapCreateRegister(xRecordRegisterClientsReq *stuff)
swapl(&stuff->nClients, n);
swapl(&stuff->nRanges, n);
pClientID = (XID *)&stuff[1];
- if (stuff->nClients > stuff->length - (sz_xRecordRegisterClientsReq >> 2))
+ if (stuff->nClients > stuff->length - bytes_to_int32(sz_xRecordRegisterClientsReq))
return BadLength;
for (i = 0; i < stuff->nClients; i++, pClientID++)
{
swapl(pClientID, n);
}
- if (stuff->nRanges > stuff->length - (sz_xRecordRegisterClientsReq >> 2)
+ if (stuff->nRanges > stuff->length - bytes_to_int32(sz_xRecordRegisterClientsReq)
- stuff->nClients)
return BadLength;
RecordSwapRanges((xRecordRange *)pClientID, stuff->nRanges);
@@ -2740,8 +2740,8 @@ RecordConnectionSetupInfo(RecordContextPtr pContext, NewClientInfoRec *pci)
char *pConnSetup = (char *)xalloc(prefixsize + restsize);
if (!pConnSetup)
return;
- SwapConnSetupPrefix(pci->prefix, pConnSetup);
- SwapConnSetupInfo(pci->setup, pConnSetup + prefixsize);
+ SwapConnSetupPrefix(pci->prefix, (xConnSetupPrefix*)pConnSetup);
+ SwapConnSetupInfo((char*)pci->setup, (char*)(pConnSetup + prefixsize));
RecordAProtocolElement(pContext, pci->client, XRecordClientStarted,
(pointer)pConnSetup, prefixsize + restsize, 0);
xfree(pConnSetup);
@@ -2864,6 +2864,13 @@ RecordCloseDown(ExtensionEntry *extEntry)
void
RecordExtensionInit(void)
{
+ /* FIXME Record is currently broken. Dont initialize it so that clients
+ * that require it can bail out correctly rather than waiting for stuff
+ * that'll never happen */
+ ErrorF("record: RECORD extension enabled at configure time.\n");
+ ErrorF("record: This extension is known to be broken, disabling extension now..\n");
+ ErrorF("record: http://bugs.freedesktop.org/show_bug.cgi?id=20500\n");
+#if 0
ExtensionEntry *extentry;
RTContext = CreateNewResourceType(RecordDeleteContext);
@@ -2886,5 +2893,6 @@ RecordExtensionInit(void)
}
RecordErrorBase = extentry->errorBase;
+#endif
} /* RecordExtensionInit */
diff --git a/render/animcur.c b/render/animcur.c
index e7bc4e55a..276e5e4af 100644
--- a/render/animcur.c
+++ b/render/animcur.c
@@ -104,17 +104,6 @@ static DevPrivateKey AnimCurScreenPrivateKey = &AnimCurScreenPrivateKeyIndex;
#define Wrap(as,s,elt,func) (((as)->elt = (s)->elt), (s)->elt = func)
#define Unwrap(as,s,elt) ((s)->elt = (as)->elt)
-static Bool
-AnimCurDisplayCursor (DeviceIntPtr pDev,
- ScreenPtr pScreen,
- CursorPtr pCursor);
-
-static Bool
-AnimCurSetCursorPosition (DeviceIntPtr pDev,
- ScreenPtr pScreen,
- int x,
- int y,
- Bool generateEvent);
static Bool
AnimCurCloseScreen (int index, ScreenPtr pScreen)
diff --git a/render/picture.c b/render/picture.c
index 5f86c7ce1..a3670778e 100644
--- a/render/picture.c
+++ b/render/picture.c
@@ -200,6 +200,12 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp)
formats[nformats].format = PICT_x8r8g8b8;
formats[nformats].depth = 32;
nformats++;
+ formats[nformats].format = PICT_b8g8r8a8;
+ formats[nformats].depth = 32;
+ nformats++;
+ formats[nformats].format = PICT_b8g8r8x8;
+ formats[nformats].depth = 32;
+ nformats++;
/* now look through the depths and visuals adding other formats */
for (v = 0; v < pScreen->numVisuals; v++)
@@ -233,6 +239,12 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp)
{
type = PICT_TYPE_ABGR;
}
+ else if (pVisual->offsetRed == pVisual->offsetGreen - r &&
+ pVisual->offsetGreen == pVisual->offsetBlue - g &&
+ pVisual->offsetBlue == bpp - b)
+ {
+ type = PICT_TYPE_BGRA;
+ }
if (type != PICT_TYPE_OTHER)
{
format = PICT_FORMAT(bpp, type, 0, r, g, b);
@@ -310,6 +322,19 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp)
PICT_x8r8g8b8, pDepth->depth);
nformats = addFormat (formats, nformats,
PICT_x8b8g8r8, pDepth->depth);
+ nformats = addFormat (formats, nformats,
+ PICT_b8g8r8x8, pDepth->depth);
+ }
+ if (pDepth->depth >= 30)
+ {
+ nformats = addFormat (formats, nformats,
+ PICT_a2r10g10b10, pDepth->depth);
+ nformats = addFormat (formats, nformats,
+ PICT_x2r10g10b10, pDepth->depth);
+ nformats = addFormat (formats, nformats,
+ PICT_a2b10g10r10, pDepth->depth);
+ nformats = addFormat (formats, nformats,
+ PICT_x2b10g10r10, pDepth->depth);
}
break;
}
@@ -366,6 +391,24 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp)
pFormats[f].direct.red = 0;
break;
+ case PICT_TYPE_BGRA:
+ pFormats[f].type = PictTypeDirect;
+
+ pFormats[f].direct.blueMask = Mask(PICT_FORMAT_B(format));
+ pFormats[f].direct.blue = (PICT_FORMAT_BPP(format) - PICT_FORMAT_B(format));
+
+ pFormats[f].direct.greenMask = Mask(PICT_FORMAT_G(format));
+ pFormats[f].direct.green = (PICT_FORMAT_BPP(format) - PICT_FORMAT_B(format) -
+ PICT_FORMAT_G(format));
+
+ pFormats[f].direct.redMask = Mask(PICT_FORMAT_R(format));
+ pFormats[f].direct.red = (PICT_FORMAT_BPP(format) - PICT_FORMAT_B(format) -
+ PICT_FORMAT_G(format) - PICT_FORMAT_R(format));
+
+ pFormats[f].direct.alphaMask = Mask(PICT_FORMAT_A(format));
+ pFormats[f].direct.alpha = 0;
+ break;
+
case PICT_TYPE_A:
pFormats[f].type = PictTypeDirect;
@@ -622,8 +665,10 @@ PictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats)
type = PICT_TYPE_A;
else if (formats[n].direct.red > formats[n].direct.blue)
type = PICT_TYPE_ARGB;
- else
+ else if (formats[n].direct.red == 0)
type = PICT_TYPE_ABGR;
+ else
+ type = PICT_TYPE_BGRA;
a = Ones (formats[n].direct.alphaMask);
r = Ones (formats[n].direct.redMask);
g = Ones (formats[n].direct.greenMask);
diff --git a/render/picture.h b/render/picture.h
index 1f90f43ab..8bd38b98e 100644
--- a/render/picture.h
+++ b/render/picture.h
@@ -62,15 +62,23 @@ typedef struct _Picture *PicturePtr;
#define PICT_TYPE_ABGR PIXMAN_TYPE_ABGR
#define PICT_TYPE_COLOR PIXMAN_TYPE_COLOR
#define PICT_TYPE_GRAY PIXMAN_TYPE_GRAY
+#define PICT_TYPE_BGRA PIXMAN_TYPE_BGRA
#define PICT_FORMAT_COLOR(f) PIXMAN_FORMAT_COLOR(f)
/* 32bpp formats */
typedef enum _PictFormatShort {
+ PICT_a2r10g10b10 = PIXMAN_a2r10g10b10,
+ PICT_x2r10g10b10 = PIXMAN_x2r10g10b10,
+ PICT_a2b10g10r10 = PIXMAN_a2b10g10r10,
+ PICT_x2b10g10r10 = PIXMAN_x2b10g10r10,
+
PICT_a8r8g8b8 = PIXMAN_a8r8g8b8,
PICT_x8r8g8b8 = PIXMAN_x8r8g8b8,
PICT_a8b8g8r8 = PIXMAN_a8b8g8r8,
PICT_x8b8g8r8 = PIXMAN_x8b8g8r8,
+ PICT_b8g8r8a8 = PIXMAN_b8g8r8a8,
+ PICT_b8g8r8x8 = PIXMAN_b8g8r8x8,
/* 24bpp formats */
PICT_r8g8b8 = PIXMAN_r8g8b8,
diff --git a/render/picturestr.h b/render/picturestr.h
index 6a1cc061c..6a8d76d99 100644
--- a/render/picturestr.h
+++ b/render/picturestr.h
@@ -620,10 +620,10 @@ PictureGradientColor (PictGradientStopPtr stop1,
extern _X_EXPORT void RenderExtensionInit (void);
-extern _X_EXPORT Bool
+Bool
AnimCurInit (ScreenPtr pScreen);
-extern _X_EXPORT int
+int
AnimCursorCreate (CursorPtr *cursors, CARD32 *deltas, int ncursor, CursorPtr *ppCursor, ClientPtr client, XID cid);
extern _X_EXPORT void
diff --git a/render/render.c b/render/render.c
index 5622994e3..995ebd956 100644
--- a/render/render.c
+++ b/render/render.c
@@ -369,7 +369,7 @@ ProcRenderQueryPictFormats (ClientPtr client)
return BadAlloc;
reply->type = X_Reply;
reply->sequenceNumber = client->sequence;
- reply->length = (rlength - sizeof(xGenericReply)) >> 2;
+ reply->length = bytes_to_int32(rlength - sizeof(xGenericReply));
reply->numFormats = nformat;
reply->numScreens = numScreens;
reply->numDepths = ndepth;
@@ -537,7 +537,7 @@ ProcRenderQueryPictIndexValues (ClientPtr client)
reply->type = X_Reply;
reply->sequenceNumber = client->sequence;
- reply->length = (rlength - sizeof(xGenericReply)) >> 2;
+ reply->length = bytes_to_int32(rlength - sizeof(xGenericReply));
reply->numIndexValues = num;
values = (xIndexValue *) (reply + 1);
@@ -594,7 +594,7 @@ ProcRenderCreatePicture (ClientPtr client)
if (pFormat->depth != pDrawable->depth)
return BadMatch;
- len = client->req_len - (sizeof(xRenderCreatePictureReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xRenderCreatePictureReq));
if (Ones(stuff->mask) != len)
return BadLength;
@@ -623,7 +623,7 @@ ProcRenderChangePicture (ClientPtr client)
VERIFY_PICTURE (pPicture, stuff->picture, client, DixSetAttrAccess,
RenderErrBase + BadPicture);
- len = client->req_len - (sizeof(xRenderChangePictureReq) >> 2);
+ len = client->req_len - bytes_to_int32(sizeof(xRenderChangePictureReq));
if (Ones(stuff->mask) != len)
return BadLength;
@@ -681,6 +681,8 @@ PictOpValid (CARD8 op)
return TRUE;
if (PictOpConjointMinimum <= op && op <= PictOpConjointMaximum)
return TRUE;
+ if (PictOpBlendMinimum <= op && op <= PictOpBlendMaximum)
+ return TRUE;
return FALSE;
}
@@ -1235,7 +1237,7 @@ ProcRenderFreeGlyphs (ClientPtr client)
client->errorValue = stuff->glyphset;
return (rc == BadValue) ? RenderErrBase + BadGlyphSet : rc;
}
- nglyph = ((client->req_len << 2) - sizeof (xRenderFreeGlyphsReq)) >> 2;
+ nglyph = bytes_to_int32((client->req_len << 2) - sizeof (xRenderFreeGlyphsReq));
gids = (CARD32 *) (stuff + 1);
while (nglyph-- > 0)
{
@@ -1735,7 +1737,7 @@ ProcRenderQueryFilters (ClientPtr client)
nbytesName += 1 + strlen (ps->filterAliases[i].alias);
nnames = ps->nfilters + ps->nfilterAliases;
}
- len = ((nnames + 1) >> 1) + ((nbytesName + 3) >> 2);
+ len = ((nnames + 1) >> 1) + bytes_to_int32(nbytesName);
total_bytes = sizeof (xRenderQueryFiltersReply) + (len << 2);
reply = (xRenderQueryFiltersReply *) xalloc (total_bytes);
if (!reply)
@@ -1827,7 +1829,7 @@ ProcRenderSetPictureFilter (ClientPtr client)
VERIFY_PICTURE (pPicture, stuff->picture, client, DixSetAttrAccess,
RenderErrBase + BadPicture);
name = (char *) (stuff + 1);
- params = (xFixed *) (name + ((stuff->nbytes + 3) & ~3));
+ params = (xFixed *) (name + pad_to_int32(stuff->nbytes));
nparams = ((xFixed *) stuff + client->req_len) - params;
result = SetPictureFilter (pPicture, name, stuff->nbytes, params, nparams);
return result;
@@ -1849,7 +1851,7 @@ ProcRenderCreateAnimCursor (ClientPtr client)
LEGAL_NEW_RESOURCE(stuff->cid, client);
if (client->req_len & 1)
return BadLength;
- ncursor = (client->req_len - (SIZEOF(xRenderCreateAnimCursorReq) >> 2)) >> 1;
+ ncursor = (client->req_len - (bytes_to_int32(sizeof(xRenderCreateAnimCursorReq)))) >> 1;
cursors = xalloc (ncursor * (sizeof (CursorPtr) + sizeof (CARD32)));
if (!cursors)
return BadAlloc;
diff --git a/shave.in b/shave.in
index 174641e9b..809d606af 100644
--- a/shave.in
+++ b/shave.in
@@ -33,6 +33,13 @@ while test "$#" -gt 0; do
lt_output="$1"
preserved_args="$preserved_args $opt"
;;
+ # hack for configure. configure calls $CC -print-prog-name=ld to get
+ # the linker. Without this bit here, the output can't be parsed and
+ # configure thinks there's no valid linker installed.
+ -print-prog-name=*)
+ mode="find-ld"
+ preserved_args="$preserved_args $opt"
+ ;;
*)
preserved_args="$preserved_args $opt"
;;
@@ -44,6 +51,9 @@ case "$mode,$tool" in
link,*)
pass_through=1
;;
+find-ld,*)
+ pass_through=1
+ ;;
*,cxx)
Q=" CXX "
;;
diff --git a/test/Makefile.am b/test/Makefile.am
index 45df6f170..030ad1b11 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,5 +1,6 @@
if UNITTESTS
-check_PROGRAMS = xkb input mesh
+SUBDIRS= . xi2
+check_PROGRAMS = xkb input xtest mesh
check_LTLIBRARIES = libxservertest.la
TESTS=$(check_PROGRAMS)
@@ -12,13 +13,14 @@ xkb_LDADD=$(TEST_LDADD)
input_LDADD=$(TEST_LDADD)
mesh_LDADD=$(TEST_LDADD)
mesh_CFLAGS=$(AM_CFLAGS) -Wl,-wrap,dixLookupPrivate
+xtest_LDADD=$(TEST_LDADD)
libxservertest_la_LIBADD = \
$(XSERVER_LIBS) \
$(top_builddir)/hw/xfree86/loader/libloader.la \
$(top_builddir)/hw/xfree86/os-support/libxorgos.la \
$(top_builddir)/hw/xfree86/common/libcommon.la \
- $(top_builddir)/hw/xfree86/parser/libxf86config.la \
+ $(top_builddir)/hw/xfree86/parser/libxf86config_internal.la \
$(top_builddir)/hw/xfree86/dixmods/libdixmods.la \
$(top_builddir)/hw/xfree86/modes/libxf86modes.la \
$(top_builddir)/hw/xfree86/ramdac/libramdac.la \
@@ -35,7 +37,4 @@ CLEANFILES=libxservertest.c
libxservertest.c:
touch $@
-all:
- @echo "Run 'make check' to run the test suite"
-
endif
diff --git a/test/input.c b/test/input.c
index bb32491a4..71e1504f1 100644
--- a/test/input.c
+++ b/test/input.c
@@ -37,7 +37,7 @@
#include "eventconvert.h"
#include "exevents.h"
#include "dixgrabs.h"
-
+#include "eventstr.h"
#include <glib.h>
/**
@@ -643,10 +643,10 @@ static void dix_grab_matching(void)
rc = GrabMatchesSecond(&b, &a, FALSE);
g_assert(rc == TRUE);
- /* AnyKey or XIAnyKeysym must succeed */
+ /* AnyKey or XIAnyKeycode must succeed */
a.grabtype = GRABTYPE_XI2;
b.grabtype = GRABTYPE_XI2;
- a.detail.exact = XIAnyKeysym;
+ a.detail.exact = XIAnyKeycode;
b.detail.exact = 1;
a.modifiersDetail.exact = 1;
b.modifiersDetail.exact = 1;
@@ -678,6 +678,44 @@ static void dix_grab_matching(void)
g_assert(rc == TRUE);
}
+static void include_byte_padding_macros(void)
+{
+ int i;
+ g_test_message("Testing bits_to_bytes()");
+
+ /* the macros don't provide overflow protection */
+ for (i = 0; i < INT_MAX - 7; i++)
+ {
+ int expected_bytes;
+ expected_bytes = (i + 7)/8;
+
+ g_assert(bits_to_bytes(i) >= i/8);
+ g_assert((bits_to_bytes(i) * 8) - i <= 7);
+ }
+
+ g_test_message("Testing bytes_to_int32()");
+ for (i = 0; i < INT_MAX - 3; i++)
+ {
+ int expected_4byte;
+ expected_4byte = (i + 3)/4;
+
+ g_assert(bytes_to_int32(i) <= i);
+ g_assert((bytes_to_int32(i) * 4) - i <= 3);
+ }
+
+ g_test_message("Testing pad_to_int32");
+
+ for (i = 0; i < INT_MAX - 3; i++)
+ {
+ int expected_bytes;
+ expected_bytes = ((i + 3)/4) * 4;
+
+ g_assert(pad_to_int32(i) >= i);
+ g_assert(pad_to_int32(i) - i <= 3);
+ }
+
+}
+
int main(int argc, char** argv)
{
g_test_init(&argc, &argv,NULL);
@@ -688,6 +726,7 @@ int main(int argc, char** argv)
g_test_add_func("/dix/input/check-grab-values", dix_check_grab_values);
g_test_add_func("/dix/input/xi2-struct-sizes", xi2_struct_sizes);
g_test_add_func("/dix/input/grab_matching", dix_grab_matching);
+ g_test_add_func("/include/byte_padding_macros", include_byte_padding_macros);
return g_test_run();
}
diff --git a/test/xi2/Makefile.am b/test/xi2/Makefile.am
new file mode 100644
index 000000000..b8362ca8b
--- /dev/null
+++ b/test/xi2/Makefile.am
@@ -0,0 +1,47 @@
+if UNITTESTS
+check_PROGRAMS = \
+ protocol-xiqueryversion \
+ protocol-xiquerydevice \
+ protocol-xiselectevents \
+ protocol-xigetselectedevents \
+ protocol-xisetclientpointer \
+ protocol-xigetclientpointer \
+ protocol-xiquerypointer \
+ protocol-xiwarppointer \
+ protocol-eventconvert
+
+TESTS=$(check_PROGRAMS)
+
+AM_CFLAGS = $(DIX_CFLAGS) $(GLIB_CFLAGS) @XORG_CFLAGS@
+INCLUDES = @XORG_INCS@
+TEST_LDADD=../libxservertest.la $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS) $(GLIB_LIBS)
+COMMON_SOURCES=protocol-common.h protocol-common.c
+
+protocol_xiqueryversion_LDADD=$(TEST_LDADD)
+protocol_xiquerydevice_LDADD=$(TEST_LDADD)
+protocol_xiselectevents_LDADD=$(TEST_LDADD)
+protocol_xigetselectedevents_LDADD=$(TEST_LDADD)
+protocol_xisetclientpointer_LDADD=$(TEST_LDADD)
+protocol_xigetclientpointer_LDADD=$(TEST_LDADD)
+protocol_xiquerypointer_LDADD=$(TEST_LDADD)
+protocol_xiwarppointer_LDADD=$(TEST_LDADD)
+protocol_eventconvert_LDADD=$(TEST_LDADD)
+
+protocol_xiqueryversion_CFLAGS=$(AM_CFLAGS) -Wl,-wrap,WriteToClient
+protocol_xiquerydevice_CFLAGS=$(AM_CFLAGS) -Wl,-wrap,WriteToClient
+protocol_xiselectevents_CFLAGS=$(AM_CFLAGS) -Wl,-wrap,dixLookupWindow -Wl,-wrap,XISetEventMask
+protocol_xigetselectedevents_CFLAGS=$(AM_CFLAGS) -Wl,-wrap,WriteToClient -Wl,-wrap,dixLookupWindow -Wl,-wrap,AddResource
+protocol_xisetclientpointer_CFLAGS=$(AM_CFLAGS) -Wl,-wrap,dixLookupClient
+protocol_xigetclientpointer_CFLAGS=$(AM_CFLAGS) -Wl,-wrap,WriteToClient -Wl,-wrap,dixLookupClient
+protocol_xiquerypointer_CFLAGS=$(AM_CFLAGS) -Wl,-wrap,WriteToClient -Wl,-wrap,dixLookupWindow
+protocol_xiwarppointer_CFLAGS=$(AM_CFLAGS) -Wl,-wrap,WriteToClient -Wl,-wrap,dixLookupWindow
+
+protocol_xiqueryversion_SOURCES=$(COMMON_SOURCES) protocol-xiqueryversion.c
+protocol_xiquerydevice_SOURCES=$(COMMON_SOURCES) protocol-xiquerydevice.c
+protocol_xiselectevents_SOURCES=$(COMMON_SOURCES) protocol-xiselectevents.c
+protocol_xigetselectedevents_SOURCES=$(COMMON_SOURCES) protocol-xigetselectedevents.c
+protocol_xisetclientpointer_SOURCES=$(COMMON_SOURCES) protocol-xisetclientpointer.c
+protocol_xigetclientpointer_SOURCES=$(COMMON_SOURCES) protocol-xigetclientpointer.c
+protocol_xiquerypointer_SOURCES=$(COMMON_SOURCES) protocol-xiquerypointer.c
+protocol_xiwarppointer_SOURCES=$(COMMON_SOURCES) protocol-xiwarppointer.c
+endif
diff --git a/test/xi2/protocol-common.c b/test/xi2/protocol-common.c
new file mode 100644
index 000000000..2d0bc3699
--- /dev/null
+++ b/test/xi2/protocol-common.c
@@ -0,0 +1,169 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <stdint.h>
+#include "extinit.h" /* for XInputExtensionInit */
+#include <glib.h>
+
+#include "protocol-common.h"
+
+struct devices devices;
+ScreenRec screen;
+WindowRec root;
+WindowRec window;
+
+void *userdata;
+
+extern int CorePointerProc(DeviceIntPtr pDev, int what);
+extern int CoreKeyboardProc(DeviceIntPtr pDev, int what);
+
+static void fake_init_sprite(DeviceIntPtr dev)
+{
+ SpritePtr sprite;
+ sprite = dev->spriteInfo->sprite;
+
+ sprite->spriteTraceSize = 10;
+ sprite->spriteTrace = xcalloc(sprite->spriteTraceSize, sizeof(WindowPtr));
+ sprite->spriteTraceGood = 1;
+ sprite->spriteTrace[0] = &root;
+ sprite->hot.x = SPRITE_X;
+ sprite->hot.y = SPRITE_Y;
+ sprite->hotPhys.x = sprite->hot.x;
+ sprite->hotPhys.y = sprite->hot.y;
+ sprite->win = &window;
+ sprite->hotPhys.pScreen = &screen;
+ sprite->physLimits.x1 = 0;
+ sprite->physLimits.y1 = 0;
+ sprite->physLimits.x2 = screen.width;
+ sprite->physLimits.y2 = screen.height;
+}
+
+/**
+ * Create and init 2 master devices (VCP + VCK) and two slave devices, one
+ * default mouse, one default keyboard.
+ */
+struct devices init_devices(void)
+{
+ ClientRec client;
+ struct devices devices;
+
+ client = init_client(0, NULL);
+
+ AllocDevicePair(&client, "Virtual core", &devices.vcp, &devices.vck,
+ CorePointerProc, CoreKeyboardProc, TRUE);
+ inputInfo.pointer = devices.vcp;
+ inputInfo.keyboard = devices.vck;
+ ActivateDevice(devices.vcp, FALSE);
+ ActivateDevice(devices.vck, FALSE);
+ EnableDevice(devices.vcp, FALSE);
+ EnableDevice(devices.vck, FALSE);
+
+ AllocDevicePair(&client, "", &devices.mouse, &devices.kbd,
+ CorePointerProc, CoreKeyboardProc, FALSE);
+ ActivateDevice(devices.mouse, FALSE);
+ ActivateDevice(devices.kbd, FALSE);
+ EnableDevice(devices.mouse, FALSE);
+ EnableDevice(devices.kbd, FALSE);
+
+ devices.num_devices = 4;
+ devices.num_master_devices = 2;
+
+ fake_init_sprite(devices.mouse);
+ fake_init_sprite(devices.vcp);
+
+ return devices;
+}
+
+
+/* Create minimal client, with the given buffer and len as request buffer */
+ClientRec init_client(int len, void *data)
+{
+ ClientRec client = { 0 };
+
+ /* we store the privates now and reassign it after the memset. this way
+ * we can share them across multiple test runs and don't have to worry
+ * about freeing them after each test run. */
+ PrivateRec *privates = client.devPrivates;
+
+ client.index = CLIENT_INDEX;
+ client.clientAsMask = CLIENT_MASK;
+ client.sequence = CLIENT_SEQUENCE;
+ client.req_len = len;
+
+ client.requestBuffer = data;
+ client.devPrivates = privates;
+ return client;
+}
+
+void init_window(WindowPtr window, WindowPtr parent, int id)
+{
+ memset(window, 0, sizeof(window));
+
+ window->drawable.id = id;
+ if (parent)
+ {
+ window->drawable.x = 30;
+ window->drawable.y = 50;
+ window->drawable.width = 100;
+ window->drawable.height = 200;
+ }
+ window->parent = parent;
+ window->optional = xcalloc(1, sizeof(WindowOptRec));
+ g_assert(window->optional);
+}
+
+/* Needed for the screen setup, otherwise we crash during sprite initialization */
+static Bool device_cursor_init(DeviceIntPtr dev, ScreenPtr screen) { return TRUE; }
+static Bool set_cursor_pos(DeviceIntPtr dev, ScreenPtr screen, int x, int y, Bool event) { return TRUE; };
+void init_simple(void)
+{
+ screenInfo.arraySize = MAXSCREENS;
+ screenInfo.numScreens = 1;
+ screenInfo.screens[0] = &screen;
+
+ screen.myNum = 0;
+ screen.id = 100;
+ screen.width = 640;
+ screen.height = 480;
+ screen.DeviceCursorInitialize = device_cursor_init;
+ screen.SetCursorPosition = set_cursor_pos;
+
+ dixResetPrivates();
+ XInputExtensionInit();
+ init_window(&root, NULL, ROOT_WINDOW_ID);
+ init_window(&window, &root, CLIENT_WINDOW_ID);
+
+ devices = init_devices();
+}
+
+void __wrap_WriteToClient(ClientPtr client, int len, void *data)
+{
+ g_assert(reply_handler != NULL);
+
+ (*reply_handler)(client, len, data, userdata);
+}
+
diff --git a/test/xi2/protocol-common.h b/test/xi2/protocol-common.h
new file mode 100644
index 000000000..afa08780c
--- /dev/null
+++ b/test/xi2/protocol-common.h
@@ -0,0 +1,153 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "scrnintstr.h"
+#include "windowstr.h"
+#include "scrnintstr.h"
+#include "exevents.h"
+
+#ifndef PROTOCOL_COMMON_H
+#define PROTOCOL_COMMON_H
+
+extern int BadDevice;
+
+/* Check default values in a reply */
+#define reply_check_defaults(rep, len, type) \
+ { \
+ g_assert((len) >= sz_x##type##Reply); \
+ g_assert((rep)->repType == X_Reply); \
+ g_assert((rep)->RepType == X_##type); \
+ g_assert((rep)->sequenceNumber == CLIENT_SEQUENCE); \
+ g_assert((rep)->length >= (sz_x##type##Reply - 32)/4); \
+ }
+
+/* initialise default values for request */
+#define request_init(req, type) \
+ { \
+ (req)->reqType = 128; /* doesn't matter */ \
+ (req)->ReqType = X_##type; \
+ (req)->length = (sz_x##type##Req >> 2); \
+ }
+
+
+/* Various defines used in the tests. Some tests may use different values
+ * than these defaults */
+/* default client index */
+#define CLIENT_INDEX 1
+/* default client mask for resources and windows */
+#define CLIENT_MASK ((CLIENT_INDEX) << CLIENTOFFSET)
+/* default client sequence number for replies */
+#define CLIENT_SEQUENCE 0x100
+/* default root window id */
+#define ROOT_WINDOW_ID 0x10
+/* default client window id */
+#define CLIENT_WINDOW_ID 0x100001
+/* invalid window ID. use for BadWindow checks. */
+#define INVALID_WINDOW_ID 0x111111
+/* initial fake sprite position */
+#define SPRITE_X 100
+#define SPRITE_Y 200
+
+
+/* Various structs used throughout the tests */
+
+
+/* The default devices struct, contains one pointer + keyboard and the
+ * matching master devices. Initialize with init_devices() if needed. */
+struct devices {
+ DeviceIntPtr vcp;
+ DeviceIntPtr vck;
+ DeviceIntPtr mouse;
+ DeviceIntPtr kbd;
+
+ int num_devices;
+ int num_master_devices;
+} devices;
+
+/**
+ * The set of default devices available in all tests if necessary.
+ */
+extern struct devices devices;
+
+/**
+ * test-specific userdata, passed into the reply handler.
+ */
+extern void *userdata;
+/**
+ * The reply handler called from WriteToClient. Set this handler if you need
+ * to check the reply values.
+ */
+void (*reply_handler)(ClientPtr client, int len, char *data, void *userdata);
+
+/**
+ * The default screen used for the windows. Initialized by init_simple().
+ */
+extern ScreenRec screen;
+/**
+ * Semi-initialized root window. initialized by init().
+ */
+extern WindowRec root;
+/**
+ * Semi-initialized top-level window. initialized by init().
+ */
+extern WindowRec window;
+
+/* various simple functions for quick setup */
+/**
+ * Initialize the above struct with default devices and return the struct.
+ * Usually not needed if you call ::init_simple.
+ */
+struct devices init_devices(void);
+/**
+ * Init a mostly zeroed out client with default values for index and mask.
+ */
+ClientRec init_client(int request_len, void *request_data);
+/**
+ * Init a mostly zeroed out window with the given window ID.
+ * Usually not needed if you call ::init_simple which sets up root and
+ * window.
+ */
+void init_window(WindowPtr window, WindowPtr parent, int id);
+/**
+ * Create a very simple setup that provides the minimum values for most
+ * tests, including a screen, the root and client window and the default
+ * device setup.
+ */
+void init_simple(void);
+
+/* Declarations for various overrides in the test files. */
+void __wrap_WriteToClient(ClientPtr client, int len, void *data);
+int __wrap_XISetEventMask(DeviceIntPtr dev, WindowPtr win, int len, unsigned char* mask);
+int __wrap_dixLookupWindow(WindowPtr *win, XID id, ClientPtr client, Mask access);
+int __real_dixLookupWindow(WindowPtr *win, XID id, ClientPtr client, Mask access);
+Bool __wrap_AddResource(XID id, RESTYPE type, pointer value);
+int __wrap_dixLookupClient(ClientPtr *c, XID id, ClientPtr client, Mask access);
+int __real_dixLookupClient(ClientPtr *c, XID id, ClientPtr client, Mask access);
+
+
+#endif /* PROTOCOL_COMMON_H */
+
diff --git a/test/xi2/protocol-eventconvert.c b/test/xi2/protocol-eventconvert.c
new file mode 100644
index 000000000..f723f7436
--- /dev/null
+++ b/test/xi2/protocol-eventconvert.c
@@ -0,0 +1,904 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <stdint.h>
+#include <glib.h>
+
+#include "inputstr.h"
+#include "eventstr.h"
+#include "eventconvert.h"
+#include "exevents.h"
+#include <X11/extensions/XI2proto.h>
+
+
+static void test_values_XIRawEvent(RawDeviceEvent *in, xXIRawEvent *out,
+ BOOL swap)
+{
+ int i;
+ unsigned char *ptr;
+ FP3232 *value, *raw_value;
+ int nvals = 0;
+ int bits_set;
+ int len;
+
+ if (swap)
+ {
+ char n;
+
+ swaps(&out->sequenceNumber, n);
+ swapl(&out->length, n);
+ swaps(&out->evtype, n);
+ swaps(&out->deviceid, n);
+ swapl(&out->time, n);
+ swapl(&out->detail, n);
+ swaps(&out->valuators_len, n);
+ }
+
+
+ g_assert(out->type == GenericEvent);
+ g_assert(out->extension == 0); /* IReqCode defaults to 0 */
+ g_assert(out->evtype == GetXI2Type((InternalEvent*)in));
+ g_assert(out->time == in->time);
+ g_assert(out->detail == in->detail.button);
+ g_assert(out->deviceid == in->deviceid);
+ g_assert(out->valuators_len >= bytes_to_int32(bits_to_bytes(sizeof(in->valuators.mask))));
+ g_assert(out->flags == 0); /* FIXME: we don't set the flags yet */
+
+ ptr = (unsigned char*)&out[1];
+ bits_set = 0;
+
+ for (i = 0; out->valuators_len && i < sizeof(in->valuators.mask) * 8; i++)
+ {
+ g_assert (XIMaskIsSet(in->valuators.mask, i) == XIMaskIsSet(ptr, i));
+ if (XIMaskIsSet(in->valuators.mask, i))
+ bits_set++;
+ }
+
+ /* length is len of valuator mask (in 4-byte units) + the number of bits
+ * set. Each bit set represents 2 8-byte values, hence the
+ * 'bits_set * 4' */
+ len = out->valuators_len + bits_set * 4;
+ g_assert(out->length == len);
+
+ nvals = 0;
+
+ for (i = 0; out->valuators_len && i < MAX_VALUATORS; i++)
+ {
+ g_assert (XIMaskIsSet(in->valuators.mask, i) == XIMaskIsSet(ptr, i));
+ if (XIMaskIsSet(in->valuators.mask, i))
+ {
+ FP3232 vi, vo;
+ value = (FP3232*)(((unsigned char*)&out[1]) + out->valuators_len * 4);
+ value += nvals;
+
+ vi.integral = in->valuators.data[i];
+ vi.frac = in->valuators.data_frac[i];
+
+ vo.integral = value->integral;
+ vo.frac = value->frac;
+ if (swap)
+ {
+ char n;
+ swapl(&vo.integral, n);
+ swapl(&vo.frac, n);
+ }
+
+ g_assert(vi.integral == vo.integral);
+ g_assert(vi.frac == vo.frac);
+
+ raw_value = value + bits_set;
+
+ vi.integral = in->valuators.data_raw[i];
+ vi.frac = in->valuators.data_raw_frac[i];
+
+ vo.integral = raw_value->integral;
+ vo.frac = raw_value->frac;
+ if (swap)
+ {
+ char n;
+ swapl(&vo.integral, n);
+ swapl(&vo.frac, n);
+ }
+
+ g_assert(vi.integral == vo.integral);
+ g_assert(vi.frac == vo.frac);
+
+ nvals++;
+ }
+ }
+}
+
+static void test_XIRawEvent(RawDeviceEvent *in)
+{
+ xXIRawEvent *out, *swapped;
+ int rc;
+
+ rc = EventToXI2((InternalEvent*)in, (xEvent**)&out);
+ g_assert(rc == Success);
+
+ test_values_XIRawEvent(in, out, FALSE);
+
+ swapped = xcalloc(1, sizeof(xEvent) + out->length * 4);
+ XI2EventSwap((xGenericEvent*)out, (xGenericEvent*)swapped);
+ test_values_XIRawEvent(in, swapped, TRUE);
+
+ xfree(out);
+ xfree(swapped);
+}
+
+static void test_convert_XIFocusEvent(void)
+{
+ xEvent *out;
+ DeviceEvent in;
+ int rc;
+
+ in.header = ET_Internal;
+ in.type = ET_Enter;
+ rc = EventToXI2((InternalEvent*)&in, &out);
+ g_assert(rc == Success);
+ g_assert(out == NULL);
+
+ in.header = ET_Internal;
+ in.type = ET_FocusIn;
+ rc = EventToXI2((InternalEvent*)&in, &out);
+ g_assert(rc == Success);
+ g_assert(out == NULL);
+
+ in.header = ET_Internal;
+ in.type = ET_FocusOut;
+ rc = EventToXI2((InternalEvent*)&in, &out);
+ g_assert(rc == BadImplementation);
+
+ in.header = ET_Internal;
+ in.type = ET_Leave;
+ rc = EventToXI2((InternalEvent*)&in, &out);
+ g_assert(rc == BadImplementation);
+}
+
+
+static void test_convert_XIRawEvent(void)
+{
+ RawDeviceEvent in;
+ int i;
+
+ memset(&in, 0, sizeof(in));
+
+ g_test_message("Testing all event types");
+ in.header = ET_Internal;
+ in.type = ET_RawMotion;
+ test_XIRawEvent(&in);
+
+ in.header = ET_Internal;
+ in.type = ET_RawKeyPress;
+ test_XIRawEvent(&in);
+
+ in.header = ET_Internal;
+ in.type = ET_RawKeyRelease;
+ test_XIRawEvent(&in);
+
+ in.header = ET_Internal;
+ in.type = ET_RawButtonPress;
+ test_XIRawEvent(&in);
+
+ in.header = ET_Internal;
+ in.type = ET_RawButtonRelease;
+ test_XIRawEvent(&in);
+
+ g_test_message("Testing details and other fields");
+ in.detail.button = 1L;
+ test_XIRawEvent(&in);
+ in.detail.button = 1L << 8;
+ test_XIRawEvent(&in);
+ in.detail.button = 1L << 16;
+ test_XIRawEvent(&in);
+ in.detail.button = 1L << 24;
+ test_XIRawEvent(&in);
+ in.detail.button = ~0L;
+ test_XIRawEvent(&in);
+
+ in.detail.button = 0;
+
+ in.time = 1L;
+ test_XIRawEvent(&in);
+ in.time = 1L << 8;
+ test_XIRawEvent(&in);
+ in.time = 1L << 16;
+ test_XIRawEvent(&in);
+ in.time = 1L << 24;
+ test_XIRawEvent(&in);
+ in.time = ~0L;
+ test_XIRawEvent(&in);
+
+ in.deviceid = 1;
+ test_XIRawEvent(&in);
+ in.deviceid = 1 << 8;
+ test_XIRawEvent(&in);
+ in.deviceid = ~0 & 0xFF;
+ test_XIRawEvent(&in);
+
+ g_test_message("Testing valuator masks");
+ for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ {
+ XISetMask(in.valuators.mask, i);
+ test_XIRawEvent(&in);
+ XIClearMask(in.valuators.mask, i);
+ }
+
+ for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ {
+ XISetMask(in.valuators.mask, i);
+
+ in.valuators.data[i] = i;
+ in.valuators.data_raw[i] = i + 10;
+ in.valuators.data_frac[i] = i + 20;
+ in.valuators.data_raw_frac[i] = i + 30;
+ test_XIRawEvent(&in);
+ XIClearMask(in.valuators.mask, i);
+ }
+
+ for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ {
+ XISetMask(in.valuators.mask, i);
+ test_XIRawEvent(&in);
+ }
+}
+
+static void test_values_XIDeviceEvent(DeviceEvent *in, xXIDeviceEvent *out,
+ BOOL swap)
+{
+ int buttons, valuators;
+ int i;
+ unsigned char *ptr;
+ FP3232 *values;
+
+ if (swap) {
+ char n;
+
+ swaps(&out->sequenceNumber, n);
+ swapl(&out->length, n);
+ swaps(&out->evtype, n);
+ swaps(&out->deviceid, n);
+ swaps(&out->sourceid, n);
+ swapl(&out->time, n);
+ swapl(&out->detail, n);
+ swapl(&out->root, n);
+ swapl(&out->event, n);
+ swapl(&out->child, n);
+ swapl(&out->root_x, n);
+ swapl(&out->root_y, n);
+ swapl(&out->event_x, n);
+ swapl(&out->event_y, n);
+ swaps(&out->buttons_len, n);
+ swaps(&out->valuators_len, n);
+ swapl(&out->mods.base_mods, n);
+ swapl(&out->mods.latched_mods, n);
+ swapl(&out->mods.locked_mods, n);
+ swapl(&out->mods.effective_mods, n);
+ }
+
+ g_assert(out->extension == 0); /* IReqCode defaults to 0 */
+ g_assert(out->evtype == GetXI2Type((InternalEvent*)in));
+ g_assert(out->time == in->time);
+ g_assert(out->detail == in->detail.button);
+ g_assert(out->length >= 12);
+
+ g_assert(out->deviceid == in->deviceid);
+ g_assert(out->sourceid == in->sourceid);
+
+ g_assert(out->flags == 0); /* FIXME: we don't set the flags yet */
+
+ g_assert(out->root == in->root);
+ g_assert(out->event == None); /* set in FixUpEventFromWindow */
+ g_assert(out->child == None); /* set in FixUpEventFromWindow */
+
+ g_assert(out->mods.base_mods == in->mods.base);
+ g_assert(out->mods.latched_mods == in->mods.latched);
+ g_assert(out->mods.locked_mods == in->mods.locked);
+ g_assert(out->mods.effective_mods == in->mods.effective);
+
+ g_assert(out->group.base_group == in->group.base);
+ g_assert(out->group.latched_group == in->group.latched);
+ g_assert(out->group.locked_group == in->group.locked);
+ g_assert(out->group.effective_group == in->group.effective);
+
+ g_assert(out->event_x == 0); /* set in FixUpEventFromWindow */
+ g_assert(out->event_y == 0); /* set in FixUpEventFromWindow */
+
+ g_assert(out->root_x == FP1616(in->root_x, in->root_x_frac));
+ g_assert(out->root_y == FP1616(in->root_y, in->root_y_frac));
+
+ buttons = 0;
+ for (i = 0; i < bits_to_bytes(sizeof(in->buttons)); i++)
+ {
+ if (XIMaskIsSet(in->buttons, i))
+ {
+ g_assert(out->buttons_len >= bytes_to_int32(bits_to_bytes(i)));
+ buttons++;
+ }
+ }
+
+ ptr = (unsigned char*)&out[1];
+ for (i = 0; i < sizeof(in->buttons) * 8; i++)
+ g_assert(XIMaskIsSet(in->buttons, i) == XIMaskIsSet(ptr, i));
+
+
+ valuators = 0;
+ for (i = 0; i < sizeof(in->valuators.mask) * 8; i++)
+ if (XIMaskIsSet(in->valuators.mask, i))
+ valuators++;
+
+ g_assert(out->valuators_len >= bytes_to_int32(bits_to_bytes(valuators)));
+
+ ptr += out->buttons_len * 4;
+ values = (FP3232*)(ptr + out->valuators_len * 4);
+ for (i = 0; i < sizeof(in->valuators.mask) * 8 ||
+ i < (out->valuators_len * 4) * 8; i++)
+ {
+ if (i > sizeof(in->valuators.mask) * 8)
+ g_assert(!XIMaskIsSet(ptr, i));
+ else if (i > out->valuators_len * 4 * 8)
+ g_assert(!XIMaskIsSet(in->valuators.mask, i));
+ else {
+ g_assert(XIMaskIsSet(in->valuators.mask, i) ==
+ XIMaskIsSet(ptr, i));
+
+ if (XIMaskIsSet(ptr, i))
+ {
+ FP3232 vi, vo;
+
+ vi.integral = in->valuators.data[i];
+ vi.frac = in->valuators.data_frac[i];
+
+ vo = *values;
+
+ if (swap)
+ {
+ char n;
+ swapl(&vo.integral, n);
+ swapl(&vo.frac, n);
+ }
+
+
+ g_assert(vi.integral == vo.integral);
+ g_assert(vi.frac == vo.frac);
+ values++;
+ }
+ }
+ }
+}
+
+static void test_XIDeviceEvent(DeviceEvent *in)
+{
+ xXIDeviceEvent *out, *swapped;
+ int rc;
+
+ rc = EventToXI2((InternalEvent*)in, (xEvent**)&out);
+ g_assert(rc == Success);
+
+ test_values_XIDeviceEvent(in, out, FALSE);
+
+ swapped = xcalloc(1, sizeof(xEvent) + out->length * 4);
+ XI2EventSwap((xGenericEvent*)out, (xGenericEvent*)swapped);
+ test_values_XIDeviceEvent(in, swapped, TRUE);
+
+ xfree(out);
+ xfree(swapped);
+}
+
+static void test_convert_XIDeviceEvent(void)
+{
+ DeviceEvent in;
+ int i;
+
+ memset(&in, 0, sizeof(in));
+
+ g_test_message("Testing simple field values");
+ in.header = ET_Internal;
+ in.type = ET_Motion;
+ in.length = sizeof(DeviceEvent);
+ in.time = 0;
+ in.deviceid = 1;
+ in.sourceid = 2;
+ in.root = 3;
+ in.root_x = 4;
+ in.root_x_frac = 5;
+ in.root_y = 6;
+ in.root_y_frac = 7;
+ in.detail.button = 8;
+ in.mods.base = 9;
+ in.mods.latched = 10;
+ in.mods.locked = 11;
+ in.mods.effective = 11;
+ in.group.base = 12;
+ in.group.latched = 13;
+ in.group.locked = 14;
+ in.group.effective = 15;
+
+ test_XIDeviceEvent(&in);
+
+ g_test_message("Testing field ranges");
+ /* 32 bit */
+ in.detail.button = 1L;
+ test_XIDeviceEvent(&in);
+ in.detail.button = 1L << 8;
+ test_XIDeviceEvent(&in);
+ in.detail.button = 1L << 16;
+ test_XIDeviceEvent(&in);
+ in.detail.button = 1L << 24;
+ test_XIDeviceEvent(&in);
+ in.detail.button = ~0L;
+ test_XIDeviceEvent(&in);
+
+ /* 32 bit */
+ in.time = 1L;
+ test_XIDeviceEvent(&in);
+ in.time = 1L << 8;
+ test_XIDeviceEvent(&in);
+ in.time = 1L << 16;
+ test_XIDeviceEvent(&in);
+ in.time = 1L << 24;
+ test_XIDeviceEvent(&in);
+ in.time = ~0L;
+ test_XIDeviceEvent(&in);
+
+ /* 16 bit */
+ in.deviceid = 1;
+ test_XIDeviceEvent(&in);
+ in.deviceid = 1 << 8;
+ test_XIDeviceEvent(&in);
+ in.deviceid = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ /* 16 bit */
+ in.sourceid = 1;
+ test_XIDeviceEvent(&in);
+ in.deviceid = 1 << 8;
+ test_XIDeviceEvent(&in);
+ in.deviceid = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ /* 32 bit */
+ in.root = 1L;
+ test_XIDeviceEvent(&in);
+ in.root = 1L << 8;
+ test_XIDeviceEvent(&in);
+ in.root = 1L << 16;
+ test_XIDeviceEvent(&in);
+ in.root = 1L << 24;
+ test_XIDeviceEvent(&in);
+ in.root = ~0L;
+ test_XIDeviceEvent(&in);
+
+ /* 16 bit */
+ in.root_x = 1;
+ test_XIDeviceEvent(&in);
+ in.root_x = 1 << 8;
+ test_XIDeviceEvent(&in);
+ in.root_x = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ in.root_x_frac = 1;
+ test_XIDeviceEvent(&in);
+ in.root_x_frac = 1 << 8;
+ test_XIDeviceEvent(&in);
+ in.root_x_frac = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ in.root_y = 1;
+ test_XIDeviceEvent(&in);
+ in.root_y = 1 << 8;
+ test_XIDeviceEvent(&in);
+ in.root_y = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ in.root_y_frac = 1;
+ test_XIDeviceEvent(&in);
+ in.root_y_frac = 1 << 8;
+ test_XIDeviceEvent(&in);
+ in.root_y_frac = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ /* 32 bit */
+ in.mods.base = 1L;
+ test_XIDeviceEvent(&in);
+ in.mods.base = 1L << 8;
+ test_XIDeviceEvent(&in);
+ in.mods.base = 1L << 16;
+ test_XIDeviceEvent(&in);
+ in.mods.base = 1L << 24;
+ test_XIDeviceEvent(&in);
+ in.mods.base = ~0L;
+ test_XIDeviceEvent(&in);
+
+ in.mods.latched = 1L;
+ test_XIDeviceEvent(&in);
+ in.mods.latched = 1L << 8;
+ test_XIDeviceEvent(&in);
+ in.mods.latched = 1L << 16;
+ test_XIDeviceEvent(&in);
+ in.mods.latched = 1L << 24;
+ test_XIDeviceEvent(&in);
+ in.mods.latched = ~0L;
+ test_XIDeviceEvent(&in);
+
+ in.mods.locked = 1L;
+ test_XIDeviceEvent(&in);
+ in.mods.locked = 1L << 8;
+ test_XIDeviceEvent(&in);
+ in.mods.locked = 1L << 16;
+ test_XIDeviceEvent(&in);
+ in.mods.locked = 1L << 24;
+ test_XIDeviceEvent(&in);
+ in.mods.locked = ~0L;
+ test_XIDeviceEvent(&in);
+
+ in.mods.effective = 1L;
+ test_XIDeviceEvent(&in);
+ in.mods.effective = 1L << 8;
+ test_XIDeviceEvent(&in);
+ in.mods.effective = 1L << 16;
+ test_XIDeviceEvent(&in);
+ in.mods.effective = 1L << 24;
+ test_XIDeviceEvent(&in);
+ in.mods.effective = ~0L;
+ test_XIDeviceEvent(&in);
+
+ /* 8 bit */
+ in.group.base = 1;
+ test_XIDeviceEvent(&in);
+ in.group.base = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ in.group.latched = 1;
+ test_XIDeviceEvent(&in);
+ in.group.latched = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ in.group.locked = 1;
+ test_XIDeviceEvent(&in);
+ in.group.locked = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ in.mods.effective = 1;
+ test_XIDeviceEvent(&in);
+ in.mods.effective = ~0 & 0xFF;
+ test_XIDeviceEvent(&in);
+
+ g_test_message("Testing button masks");
+ for (i = 0; i < sizeof(in.buttons) * 8; i++)
+ {
+ XISetMask(in.buttons, i);
+ test_XIDeviceEvent(&in);
+ XIClearMask(in.buttons, i);
+ }
+
+ for (i = 0; i < sizeof(in.buttons) * 8; i++)
+ {
+ XISetMask(in.buttons, i);
+ test_XIDeviceEvent(&in);
+ }
+
+ g_test_message("Testing valuator masks");
+ for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ {
+ XISetMask(in.valuators.mask, i);
+ test_XIDeviceEvent(&in);
+ XIClearMask(in.valuators.mask, i);
+ }
+
+ for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ {
+ XISetMask(in.valuators.mask, i);
+
+ in.valuators.data[i] = i;
+ in.valuators.data_frac[i] = i + 20;
+ test_XIDeviceEvent(&in);
+ XIClearMask(in.valuators.mask, i);
+ }
+
+ for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ {
+ XISetMask(in.valuators.mask, i);
+ test_XIDeviceEvent(&in);
+ }
+}
+
+static void test_values_XIDeviceChangedEvent(DeviceChangedEvent *in,
+ xXIDeviceChangedEvent *out,
+ BOOL swap)
+{
+ int i, j;
+ unsigned char *ptr;
+
+ if (swap)
+ {
+ char n;
+
+ swaps(&out->sequenceNumber, n);
+ swapl(&out->length, n);
+ swaps(&out->evtype, n);
+ swaps(&out->deviceid, n);
+ swaps(&out->sourceid, n);
+ swapl(&out->time, n);
+ swaps(&out->num_classes, n);
+ }
+
+ g_assert(out->type == GenericEvent);
+ g_assert(out->extension == 0); /* IReqCode defaults to 0 */
+ g_assert(out->evtype == GetXI2Type((InternalEvent*)in));
+ g_assert(out->time == in->time);
+ g_assert(out->deviceid == in->deviceid);
+ g_assert(out->sourceid == in->sourceid);
+
+ ptr = (unsigned char*)&out[1];
+ for (i = 0; i < out->num_classes; i++)
+ {
+ xXIAnyInfo* any = (xXIAnyInfo*)ptr;
+
+ if (swap)
+ {
+ char n;
+ swaps(&any->length, n);
+ swaps(&any->type, n);
+ swaps(&any->sourceid, n);
+ }
+
+ switch(any->type)
+ {
+ case XIButtonClass:
+ {
+ xXIButtonInfo *b = (xXIButtonInfo*)any;
+ Atom *names;
+
+ if (swap)
+ {
+ char n;
+ swaps(&b->num_buttons, n);
+ }
+
+ g_assert(b->length ==
+ bytes_to_int32(sizeof(xXIButtonInfo)) +
+ bytes_to_int32(bits_to_bytes(b->num_buttons)) +
+ b->num_buttons);
+ g_assert(b->num_buttons == in->buttons.num_buttons);
+
+ names = (Atom*)((char*)&b[1] +
+ pad_to_int32(bits_to_bytes(b->num_buttons)));
+ for (j = 0; j < b->num_buttons; j++)
+ {
+ if (swap)
+ {
+ char n;
+ swapl(&names[j], n);
+ }
+ g_assert(names[j] == in->buttons.names[j]);
+ }
+ }
+ break;
+ case XIKeyClass:
+ {
+ xXIKeyInfo *k = (xXIKeyInfo*)any;
+ uint32_t *kc;
+
+ if (swap)
+ {
+ char n;
+ swaps(&k->num_keycodes, n);
+ }
+
+ g_assert(k->length ==
+ bytes_to_int32(sizeof(xXIKeyInfo)) +
+ k->num_keycodes);
+ g_assert(k->num_keycodes == in->keys.max_keycode -
+ in->keys.min_keycode + 1);
+
+ kc = (uint32_t*)&k[1];
+ for (j = 0; j < k->num_keycodes; j++)
+ {
+ if (swap)
+ {
+ char n;
+ swapl(&kc[j], n);
+ }
+ g_assert(kc[j] >= in->keys.min_keycode);
+ g_assert(kc[j] <= in->keys.max_keycode);
+ }
+ }
+ break;
+ case XIValuatorClass:
+ {
+ xXIValuatorInfo *v = (xXIValuatorInfo*)any;
+ g_assert(v->length ==
+ bytes_to_int32(sizeof(xXIValuatorInfo)));
+
+ }
+ break;
+ }
+
+ ptr += any->length * 4;
+ }
+
+}
+
+static void test_XIDeviceChangedEvent(DeviceChangedEvent *in)
+{
+ xXIDeviceChangedEvent *out, *swapped;
+ int rc;
+
+ rc = EventToXI2((InternalEvent*)in, (xEvent**)&out);
+ g_assert(rc == Success);
+
+ test_values_XIDeviceChangedEvent(in, out, FALSE);
+
+ swapped = xcalloc(1, sizeof(xEvent) + out->length * 4);
+ XI2EventSwap((xGenericEvent*)out, (xGenericEvent*)swapped);
+ test_values_XIDeviceChangedEvent(in, swapped, TRUE);
+
+ xfree(out);
+ xfree(swapped);
+}
+
+static void test_convert_XIDeviceChangedEvent(void)
+{
+ DeviceChangedEvent in;
+ int i;
+
+ g_test_message("Testing simple field values");
+ memset(&in, 0, sizeof(in));
+ in.header = ET_Internal;
+ in.type = ET_DeviceChanged;
+ in.length = sizeof(DeviceChangedEvent);
+ in.time = 0;
+ in.deviceid = 1;
+ in.sourceid = 2;
+ in.masterid = 3;
+ in.num_valuators = 4;
+ in.flags = DEVCHANGE_SLAVE_SWITCH | DEVCHANGE_POINTER_EVENT | DEVCHANGE_KEYBOARD_EVENT;
+
+ for (i = 0; i < MAX_BUTTONS; i++)
+ in.buttons.names[i] = i + 10;
+
+ in.keys.min_keycode = 8;
+ in.keys.max_keycode = 255;
+
+ test_XIDeviceChangedEvent(&in);
+
+ in.time = 1L;
+ test_XIDeviceChangedEvent(&in);
+ in.time = 1L << 8;
+ test_XIDeviceChangedEvent(&in);
+ in.time = 1L << 16;
+ test_XIDeviceChangedEvent(&in);
+ in.time = 1L << 24;
+ test_XIDeviceChangedEvent(&in);
+ in.time = ~0L;
+ test_XIDeviceChangedEvent(&in);
+
+ in.deviceid = 1L;
+ test_XIDeviceChangedEvent(&in);
+ in.deviceid = 1L << 8;
+ test_XIDeviceChangedEvent(&in);
+ in.deviceid = ~0 & 0xFFFF;
+ test_XIDeviceChangedEvent(&in);
+
+ in.sourceid = 1L;
+ test_XIDeviceChangedEvent(&in);
+ in.sourceid = 1L << 8;
+ test_XIDeviceChangedEvent(&in);
+ in.sourceid = ~0 & 0xFFFF;
+ test_XIDeviceChangedEvent(&in);
+
+ in.masterid = 1L;
+ test_XIDeviceChangedEvent(&in);
+ in.masterid = 1L << 8;
+ test_XIDeviceChangedEvent(&in);
+ in.masterid = ~0 & 0xFFFF;
+ test_XIDeviceChangedEvent(&in);
+
+ in.buttons.num_buttons = 0;
+ test_XIDeviceChangedEvent(&in);
+
+ in.buttons.num_buttons = 1;
+ test_XIDeviceChangedEvent(&in);
+
+ in.buttons.num_buttons = MAX_BUTTONS;
+ test_XIDeviceChangedEvent(&in);
+
+ in.keys.min_keycode = 0;
+ in.keys.max_keycode = 0;
+ test_XIDeviceChangedEvent(&in);
+
+ in.keys.max_keycode = 1 << 8;
+ test_XIDeviceChangedEvent(&in);
+
+ in.keys.max_keycode = 0xFFFD; /* highest range, above that the length
+ field gives up */
+ test_XIDeviceChangedEvent(&in);
+
+ in.keys.min_keycode = 1 << 8;
+ in.keys.max_keycode = 1 << 8;
+ test_XIDeviceChangedEvent(&in);
+
+ in.keys.min_keycode = 1 << 8;
+ in.keys.max_keycode = 0;
+ test_XIDeviceChangedEvent(&in);
+
+ in.num_valuators = 0;
+ test_XIDeviceChangedEvent(&in);
+
+ in.num_valuators = 1;
+ test_XIDeviceChangedEvent(&in);
+
+ in.num_valuators = MAX_VALUATORS;
+ test_XIDeviceChangedEvent(&in);
+
+ for (i = 0; i < MAX_VALUATORS; i++)
+ {
+ in.valuators[i].min = 0;
+ in.valuators[i].max = 0;
+ test_XIDeviceChangedEvent(&in);
+
+ in.valuators[i].max = 1 << 8;
+ test_XIDeviceChangedEvent(&in);
+ in.valuators[i].max = 1 << 16;
+ test_XIDeviceChangedEvent(&in);
+ in.valuators[i].max = 1 << 24;
+ test_XIDeviceChangedEvent(&in);
+ in.valuators[i].max = abs(~0);
+ test_XIDeviceChangedEvent(&in);
+
+ in.valuators[i].resolution = 1 << 8;
+ test_XIDeviceChangedEvent(&in);
+ in.valuators[i].resolution = 1 << 16;
+ test_XIDeviceChangedEvent(&in);
+ in.valuators[i].resolution = 1 << 24;
+ test_XIDeviceChangedEvent(&in);
+ in.valuators[i].resolution = abs(~0);
+ test_XIDeviceChangedEvent(&in);
+
+ in.valuators[i].name = i;
+ test_XIDeviceChangedEvent(&in);
+
+ in.valuators[i].mode = Relative;
+ test_XIDeviceChangedEvent(&in);
+
+ in.valuators[i].mode = Absolute;
+ test_XIDeviceChangedEvent(&in);
+ }
+}
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ g_test_add_func("/xi2/eventconvert/XIRawEvent", test_convert_XIRawEvent);
+ g_test_add_func("/xi2/eventconvert/XIFocusEvent", test_convert_XIFocusEvent);
+ g_test_add_func("/xi2/eventconvert/XIDeviceEvent", test_convert_XIDeviceEvent);
+ g_test_add_func("/xi2/eventconvert/XIDeviceChangedEvent", test_convert_XIDeviceChangedEvent);
+
+ return g_test_run();
+}
diff --git a/test/xi2/protocol-xigetclientpointer.c b/test/xi2/protocol-xigetclientpointer.c
new file mode 100644
index 000000000..6b4d04957
--- /dev/null
+++ b/test/xi2/protocol-xigetclientpointer.c
@@ -0,0 +1,167 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+/*
+ * Protocol testing for XIGetClientPointer request.
+ */
+#include <stdint.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include <X11/extensions/XI2proto.h>
+#include "inputstr.h"
+#include "windowstr.h"
+#include "scrnintstr.h"
+#include "xigetclientpointer.h"
+#include "exevents.h"
+
+#include "protocol-common.h"
+#include <glib.h>
+
+struct {
+ int cp_is_set;
+ DeviceIntPtr dev;
+ int win;
+} test_data;
+
+static ClientRec client_window;
+static ClientRec client_request;
+
+int __wrap_dixLookupClient(ClientPtr *pClient, XID rid, ClientPtr client, Mask access)
+{
+ if (rid == ROOT_WINDOW_ID)
+ return BadWindow;
+
+ if (rid == CLIENT_WINDOW_ID)
+ {
+ *pClient = &client_window;
+ return Success;
+ }
+
+ return __real_dixLookupClient(pClient, rid, client, access);
+}
+
+
+static void reply_XIGetClientPointer(ClientPtr client, int len, char *data, void *userdata)
+{
+ xXIGetClientPointerReply *rep = (xXIGetClientPointerReply*)data;
+
+ if (client->swapped)
+ {
+ char n;
+ swapl(&rep->length, n);
+ swaps(&rep->sequenceNumber, n);
+ swaps(&rep->deviceid, n);
+ }
+
+ reply_check_defaults(rep, len, XIGetClientPointer);
+
+ g_assert(rep->set == test_data.cp_is_set);
+ if (rep->set)
+ g_assert(rep->deviceid == test_data.dev->id);
+}
+
+static void request_XIGetClientPointer(ClientPtr client, xXIGetClientPointerReq* req, int error)
+{
+ char n;
+ int rc;
+
+ test_data.win = req->win;
+
+ rc = ProcXIGetClientPointer(&client_request);
+ g_assert(rc == error);
+
+ if (rc == BadWindow)
+ g_assert(client_request.errorValue == req->win);
+
+ client_request.swapped = TRUE;
+ swapl(&req->win, n);
+ swaps(&req->length, n);
+ rc = SProcXIGetClientPointer(&client_request);
+ g_assert(rc == error);
+
+ if (rc == BadWindow)
+ g_assert(client_request.errorValue == req->win);
+
+}
+
+static void test_XIGetClientPointer(void)
+{
+ xXIGetClientPointerReq request;
+
+ request_init(&request, XIGetClientPointer);
+
+ request.win = CLIENT_WINDOW_ID;
+
+
+ reply_handler = reply_XIGetClientPointer;
+
+ client_request = init_client(request.length, &request);
+
+ g_test_message("Testing invalid window");
+ request.win = INVALID_WINDOW_ID;
+ request_XIGetClientPointer(&client_request, &request, BadWindow);
+
+ test_data.cp_is_set = FALSE;
+
+ g_test_message("Testing window None, unset ClientPointer.");
+ request.win = None;
+ request_XIGetClientPointer(&client_request, &request, Success);
+
+ g_test_message("Testing valid window, unset ClientPointer.");
+ request.win = CLIENT_WINDOW_ID;
+ request_XIGetClientPointer(&client_request, &request, Success);
+
+ g_test_message("Testing valid window, set ClientPointer.");
+ client_window.clientPtr = devices.vcp;
+ test_data.dev = devices.vcp;
+ test_data.cp_is_set = TRUE;
+ request.win = CLIENT_WINDOW_ID;
+ request_XIGetClientPointer(&client_request, &request, Success);
+
+ client_window.clientPtr = NULL;
+
+ g_test_message("Testing window None, set ClientPointer.");
+ client_request.clientPtr = devices.vcp;
+ test_data.dev = devices.vcp;
+ test_data.cp_is_set = TRUE;
+ request.win = None;
+ request_XIGetClientPointer(&client_request, &request, Success);
+}
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ init_simple();
+ client_window = init_client(0, NULL);
+
+
+ g_test_add_func("/xi2/protocol/XIGetClientPointer", test_XIGetClientPointer);
+
+ return g_test_run();
+}
diff --git a/test/xi2/protocol-xigetselectedevents.c b/test/xi2/protocol-xigetselectedevents.c
new file mode 100644
index 000000000..97aae159f
--- /dev/null
+++ b/test/xi2/protocol-xigetselectedevents.c
@@ -0,0 +1,241 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+/*
+ * Protocol testing for XIGetSelectedEvents request.
+ *
+ * Tests include:
+ * BadWindow on wrong window.
+ * Zero-length masks if no masks are set.
+ * Valid masks for valid devices.
+ * Masks set on non-existent devices are not returned.
+ *
+ * Note that this test is not connected to the XISelectEvents request.
+ */
+#include <stdint.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include <X11/extensions/XI2proto.h>
+#include "inputstr.h"
+#include "windowstr.h"
+#include "extinit.h" /* for XInputExtensionInit */
+#include "scrnintstr.h"
+#include "xiselectev.h"
+#include "exevents.h"
+
+#include "protocol-common.h"
+#include <glib.h>
+
+static void reply_XIGetSelectedEvents(ClientPtr client, int len, char *data, void *userdata);
+static void reply_XIGetSelectedEvents_data(ClientPtr client, int len, char *data, void *userdata);
+
+
+struct {
+ int num_masks_expected;
+ unsigned char mask[MAXDEVICES][XI2LASTEVENT]; /* intentionally bigger */
+ int mask_len;
+} test_data;
+
+/* dixLookupWindow requires a lot of setup not necessary for this test.
+ * Simple wrapper that returns either one of the fake root window or the
+ * fake client window. If the requested ID is neither of those wanted,
+ * return whatever the real dixLookupWindow does.
+ */
+int __wrap_dixLookupWindow(WindowPtr *win, XID id, ClientPtr client, Mask access)
+{
+ if (id == root.drawable.id)
+ {
+ *win = &root;
+ return Success;
+ } else if (id == window.drawable.id)
+ {
+ *win = &window;
+ return Success;
+ }
+
+ return __real_dixLookupWindow(win, id, client, access);
+}
+
+/* AddResource is called from XISetSEventMask, we don't need this */
+Bool __wrap_AddResource(XID id, RESTYPE type, pointer value)
+{
+ return TRUE;
+}
+
+static void reply_XIGetSelectedEvents(ClientPtr client, int len, char *data, void *userdata)
+{
+ xXIGetSelectedEventsReply *rep = (xXIGetSelectedEventsReply*)data;
+
+ if (client->swapped)
+ {
+ char n;
+ swapl(&rep->length, n);
+ swaps(&rep->sequenceNumber, n);
+ swaps(&rep->num_masks, n);
+ }
+
+ reply_check_defaults(rep, len, XIGetSelectedEvents);
+
+ g_assert(rep->num_masks == test_data.num_masks_expected);
+
+ reply_handler = reply_XIGetSelectedEvents_data;
+}
+
+static void reply_XIGetSelectedEvents_data(ClientPtr client, int len, char *data, void *userdata)
+{
+ int i;
+ xXIEventMask *mask;
+ unsigned char *bitmask;
+
+ mask = (xXIEventMask*)data;
+ for (i = 0; i < test_data.num_masks_expected; i++)
+ {
+ if (client->swapped)
+ {
+ char n;
+ swaps(&mask->deviceid, n);
+ swaps(&mask->mask_len, n);
+ }
+
+ g_assert(mask->deviceid < 6);
+ g_assert(mask->mask_len <= (((XI2LASTEVENT + 8)/8) + 3)/4) ;
+
+ bitmask = (unsigned char*)&mask[1];
+ g_assert(memcmp(bitmask,
+ test_data.mask[mask->deviceid],
+ mask->mask_len * 4) == 0);
+
+ mask = (xXIEventMask*)((char*)mask + mask->mask_len * 4 + sizeof(xXIEventMask));
+ }
+
+
+}
+
+static void request_XIGetSelectedEvents(xXIGetSelectedEventsReq* req, int error)
+{
+ char n;
+ int rc;
+ ClientRec client;
+ client = init_client(req->length, req);
+
+ reply_handler = reply_XIGetSelectedEvents;
+
+ rc = ProcXIGetSelectedEvents(&client);
+ g_assert(rc == error);
+
+ reply_handler = reply_XIGetSelectedEvents;
+ client.swapped = TRUE;
+ swapl(&req->win, n);
+ swaps(&req->length, n);
+ rc = SProcXIGetSelectedEvents(&client);
+ g_assert(rc == error);
+}
+
+static void test_XIGetSelectedEvents(void)
+{
+ int i, j;
+ xXIGetSelectedEventsReq request;
+ ClientRec client = init_client(0, NULL);
+ unsigned char *mask;
+ DeviceIntRec dev;
+
+ request_init(&request, XIGetSelectedEvents);
+
+ g_test_message("Testing for BadWindow on invalid window.");
+ request.win = None;
+ request_XIGetSelectedEvents(&request, BadWindow);
+
+ g_test_message("Testing for zero-length (unset) masks.");
+ /* No masks set yet */
+ test_data.num_masks_expected = 0;
+ request.win = ROOT_WINDOW_ID;
+ request_XIGetSelectedEvents(&request, Success);
+
+ request.win = CLIENT_WINDOW_ID;
+ request_XIGetSelectedEvents(&request, Success);
+
+ memset(test_data.mask, 0,
+ sizeof(test_data.mask));
+
+ g_test_message("Testing for valid masks");
+ memset(&dev, 0, sizeof(dev)); /* dev->id is enough for XISetEventMask */
+ request.win = ROOT_WINDOW_ID;
+
+ /* devices 6 - MAXDEVICES don't exist, they mustn't be included in the
+ * reply even if a mask is set */
+ for (j = 0; j < MAXDEVICES; j++)
+ {
+ test_data.num_masks_expected = min(j + 1, devices.num_devices + 2);
+ dev.id = j;
+ mask = test_data.mask[j];
+ /* bits one-by-one */
+ for (i = 0; i < XI2LASTEVENT; i++)
+ {
+ SetBit(mask, i);
+ XISetEventMask(&dev, &root, &client, (i + 8)/8, mask);
+ request_XIGetSelectedEvents(&request, Success);
+ ClearBit(mask, i);
+ }
+
+ /* all valid mask bits */
+ for (i = 0; i < XI2LASTEVENT; i++)
+ {
+ SetBit(mask, i);
+ XISetEventMask(&dev, &root, &client, (i + 8)/8, mask);
+ request_XIGetSelectedEvents(&request, Success);
+ }
+ }
+
+ g_test_message("Testing removing all masks");
+ /* Unset all masks one-by-one */
+ for (j = MAXDEVICES - 1; j >= 0; j--)
+ {
+ if (j < devices.num_devices + 2)
+ test_data.num_masks_expected--;
+
+ mask = test_data.mask[j];
+ memset(mask, 0, XI2LASTEVENT);
+
+ dev.id = j;
+ XISetEventMask(&dev, &root, &client, 0, NULL);
+
+ request_XIGetSelectedEvents(&request, Success);
+ }
+}
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ init_simple();
+
+ g_test_add_func("/xi2/protocol/XIGetSelectedEvents", test_XIGetSelectedEvents);
+
+ return g_test_run();
+}
+
diff --git a/test/xi2/protocol-xiquerydevice.c b/test/xi2/protocol-xiquerydevice.c
new file mode 100644
index 000000000..508fc4dfb
--- /dev/null
+++ b/test/xi2/protocol-xiquerydevice.c
@@ -0,0 +1,316 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <stdint.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include <X11/extensions/XI2proto.h>
+#include <X11/Xatom.h>
+#include "inputstr.h"
+#include "extinit.h"
+#include "scrnintstr.h"
+#include "xkbsrv.h"
+
+#include "xiquerydevice.h"
+
+#include "protocol-common.h"
+#include <glib.h>
+/*
+ * Protocol testing for XIQueryDevice request and reply.
+ *
+ * Test approach:
+ * Wrap WriteToClient to intercept server's reply. ProcXIQueryDevice returns
+ * data in two batches, once for the request, once for the trailing data
+ * with the device information.
+ * Repeatedly test with varying deviceids and check against data in reply.
+ */
+
+struct test_data {
+ int which_device;
+ int num_devices_in_reply;
+};
+
+static void reply_XIQueryDevice_data(ClientPtr client, int len, char *data, void *userdata);
+static void reply_XIQueryDevice(ClientPtr client, int len, char* data, void *userdata);
+
+/* reply handling for the first bytes that constitute the reply */
+static void reply_XIQueryDevice(ClientPtr client, int len, char* data, void *userdata)
+{
+ xXIQueryDeviceReply *rep = (xXIQueryDeviceReply*)data;
+ struct test_data *querydata = (struct test_data*)userdata;
+
+ if (client->swapped)
+ {
+ char n;
+ swapl(&rep->length, n);
+ swaps(&rep->sequenceNumber, n);
+ swaps(&rep->num_devices, n);
+ }
+
+ reply_check_defaults(rep, len, XIQueryDevice);
+
+ if (querydata->which_device == XIAllDevices)
+ g_assert(rep->num_devices == devices.num_devices);
+ else if (querydata->which_device == XIAllMasterDevices)
+ g_assert(rep->num_devices == devices.num_master_devices);
+ else
+ g_assert(rep->num_devices == 1);
+
+ querydata->num_devices_in_reply = rep->num_devices;
+ reply_handler = reply_XIQueryDevice_data;
+}
+
+/* reply handling for the trailing bytes that constitute the device info */
+static void reply_XIQueryDevice_data(ClientPtr client, int len, char *data, void *userdata)
+{
+ char n;
+ int i, j;
+ struct test_data *querydata = (struct test_data*)userdata;
+
+ DeviceIntPtr dev;
+ xXIDeviceInfo *info = (xXIDeviceInfo*)data;
+ xXIAnyInfo *any;
+
+ for (i = 0; i < querydata->num_devices_in_reply; i++)
+ {
+ if (client->swapped)
+ {
+ swaps(&info->deviceid, n);
+ swaps(&info->attachment, n);
+ swaps(&info->use, n);
+ swaps(&info->num_classes, n);
+ swaps(&info->name_len, n);
+ }
+
+ if (querydata->which_device > XIAllMasterDevices)
+ g_assert(info->deviceid == querydata->which_device);
+
+ g_assert(info->deviceid >= 2); /* 0 and 1 is reserved */
+
+
+ switch(info->deviceid)
+ {
+ case 2: /* VCP */
+ dev = devices.vcp;
+ g_assert(info->use == XIMasterPointer);
+ g_assert(info->attachment == devices.vck->id);
+ g_assert(info->num_classes == 3); /* 2 axes + button */
+ break;
+ case 3: /* VCK */
+ dev = devices.vck;
+ g_assert(info->use == XIMasterKeyboard);
+ g_assert(info->attachment == devices.vcp->id);
+ g_assert(info->num_classes == 1);
+ break;
+ case 4: /* mouse */
+ dev = devices.mouse;
+ g_assert(info->use == XISlavePointer);
+ g_assert(info->attachment == devices.vcp->id);
+ g_assert(info->num_classes == 3); /* 2 axes + button */
+ break;
+ case 5: /* keyboard */
+ dev = devices.kbd;
+ g_assert(info->use == XISlaveKeyboard);
+ g_assert(info->attachment == devices.vck->id);
+ g_assert(info->num_classes == 1);
+ break;
+
+ default:
+ /* We shouldn't get here */
+ g_assert(0);
+ break;
+ }
+ g_assert(info->enabled == dev->enabled);
+ g_assert(info->name_len == strlen(dev->name));
+ g_assert(strncmp((char*)&info[1], dev->name, info->name_len) == 0);
+
+ any = (xXIAnyInfo*)((char*)&info[1] + ((info->name_len + 3)/4) * 4);
+ for (j = 0; j < info->num_classes; j++)
+ {
+ if (client->swapped)
+ {
+ swaps(&any->type, n);
+ swaps(&any->length, n);
+ swaps(&any->sourceid, n);
+ }
+
+ switch(info->deviceid)
+ {
+ case 3: /* VCK and kbd have the same properties */
+ case 5:
+ {
+ int k;
+ xXIKeyInfo *ki = (xXIKeyInfo*)any;
+ XkbDescPtr xkb = devices.vck->key->xkbInfo->desc;
+ uint32_t *kc;
+
+ if (client->swapped)
+ swaps(&ki->num_keycodes, n);
+
+ g_assert(any->type == XIKeyClass);
+ g_assert(ki->num_keycodes == (xkb->max_key_code - xkb->min_key_code + 1));
+ g_assert(any->length == (2 + ki->num_keycodes));
+
+ kc = (uint32_t*)&ki[1];
+ for (k = 0; k < ki->num_keycodes; k++, kc++)
+ {
+ if (client->swapped)
+ swapl(kc, n);
+
+ g_assert(*kc >= xkb->min_key_code);
+ g_assert(*kc <= xkb->max_key_code);
+ }
+ break;
+ }
+ case 2: /* VCP and mouse have the same properties */
+ case 4:
+ {
+ g_assert(any->type == XIButtonClass ||
+ any->type == XIValuatorClass);
+
+ if (any->type == XIButtonClass)
+ {
+ int len;
+ xXIButtonInfo *bi = (xXIButtonInfo*)any;
+
+ if (client->swapped)
+ swaps(&bi->num_buttons, n);
+
+ g_assert(bi->num_buttons == devices.vcp->button->numButtons);
+
+ len = 2 + bi->num_buttons + bytes_to_int32(bits_to_bytes(bi->num_buttons));
+ g_assert(bi->length == len);
+ } else if (any->type == XIValuatorClass)
+ {
+ xXIValuatorInfo *vi = (xXIValuatorInfo*)any;
+
+ if (client->swapped)
+ {
+ swaps(&vi->number, n);
+ swapl(&vi->label, n);
+ swapl(&vi->min.integral, n);
+ swapl(&vi->min.frac, n);
+ swapl(&vi->max.integral, n);
+ swapl(&vi->max.frac, n);
+ swapl(&vi->resolution, n);
+ }
+
+ g_assert(vi->length == 11);
+ g_assert(vi->number == 0 ||
+ vi->number == 1);
+ g_assert(vi->mode == XIModeRelative);
+ /* device was set up as relative, so standard
+ * values here. */
+ g_assert(vi->min.integral == -1);
+ g_assert(vi->min.frac == 0);
+ g_assert(vi->max.integral == -1);
+ g_assert(vi->max.frac == 0);
+ g_assert(vi->resolution == 0);
+ }
+ }
+ break;
+ }
+ any = (xXIAnyInfo*)(((char*)any) + any->length * 4);
+ }
+
+ info = (xXIDeviceInfo*)any;
+ }
+}
+
+static void request_XIQueryDevice(struct test_data *querydata,
+ int deviceid, int error)
+{
+ int rc;
+ char n;
+ ClientRec client;
+ xXIQueryDeviceReq request;
+
+ request_init(&request, XIQueryDevice);
+ client = init_client(request.length, &request);
+ reply_handler = reply_XIQueryDevice;
+
+ querydata->which_device = deviceid;
+
+ request.deviceid = deviceid;
+ rc = ProcXIQueryDevice(&client);
+ g_assert(rc == error);
+
+ if (rc != Success)
+ g_assert(client.errorValue == deviceid);
+
+ reply_handler = reply_XIQueryDevice;
+
+ client.swapped = TRUE;
+ swaps(&request.length, n);
+ swaps(&request.deviceid, n);
+ rc = SProcXIQueryDevice(&client);
+ g_assert(rc == error);
+
+ if (rc != Success)
+ g_assert(client.errorValue == deviceid);
+}
+
+static void test_XIQueryDevice(void)
+{
+ int i;
+ xXIQueryDeviceReq request;
+ struct test_data data;
+
+ reply_handler = reply_XIQueryDevice;
+ userdata = &data;
+ request_init(&request, XIQueryDevice);
+
+ g_test_message("Testing XIAllDevices.");
+ request_XIQueryDevice(&data, XIAllDevices, Success);
+ g_test_message("Testing XIAllMasterDevices.");
+ request_XIQueryDevice(&data, XIAllMasterDevices, Success);
+
+ g_test_message("Testing existing device ids.");
+ for (i = 2; i < 6; i++)
+ request_XIQueryDevice(&data, i, Success);
+
+ g_test_message("Testing non-existing device ids.");
+ for (i = 6; i <= 0xFFFF; i++)
+ request_XIQueryDevice(&data, i, BadDevice);
+
+
+ reply_handler = NULL;
+
+}
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ init_simple();
+
+ g_test_add_func("/dix/xi2protocol/XIQueryDevice", test_XIQueryDevice);
+
+ return g_test_run();
+}
+
diff --git a/test/xi2/protocol-xiquerypointer.c b/test/xi2/protocol-xiquerypointer.c
new file mode 100644
index 000000000..810c61575
--- /dev/null
+++ b/test/xi2/protocol-xiquerypointer.c
@@ -0,0 +1,220 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+/*
+ * Protocol testing for XIQueryPointer request.
+ */
+#include <stdint.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include <X11/extensions/XI2proto.h>
+#include "inputstr.h"
+#include "windowstr.h"
+#include "scrnintstr.h"
+#include "xiquerypointer.h"
+#include "exevents.h"
+
+#include "protocol-common.h"
+#include <glib.h>
+
+static ClientRec client_request;
+static void reply_XIQueryPointer_data(ClientPtr client, int len,
+ char *data, void *userdata);
+
+static struct {
+ DeviceIntPtr dev;
+ WindowPtr win;
+} test_data;
+
+
+/* dixLookupWindow requires a lot of setup not necessary for this test.
+ * Simple wrapper that returns either one of the fake root window or the
+ * fake client window. If the requested ID is neither of those wanted,
+ * return whatever the real dixLookupWindow does.
+ */
+int __wrap_dixLookupWindow(WindowPtr *win, XID id, ClientPtr client, Mask access)
+{
+ if (id == root.drawable.id)
+ {
+ *win = &root;
+ return Success;
+ } else if (id == window.drawable.id)
+ {
+ *win = &window;
+ return Success;
+ }
+
+ return __real_dixLookupWindow(win, id, client, access);
+}
+
+static void reply_XIQueryPointer(ClientPtr client, int len, char *data,
+ void *userdata)
+{
+ xXIQueryPointerReply *rep = (xXIQueryPointerReply*)data;
+ SpritePtr sprite;
+
+ if (!rep->repType)
+ return;
+
+ if (client->swapped)
+ {
+ char n;
+ swapl(&rep->length, n);
+ swaps(&rep->sequenceNumber, n);
+ swapl(&rep->root, n);
+ swapl(&rep->child, n);
+ swapl(&rep->root_x, n);
+ swapl(&rep->root_y, n);
+ swapl(&rep->win_x, n);
+ swapl(&rep->win_y, n);
+ swaps(&rep->buttons_len, n);
+ }
+
+ reply_check_defaults(rep, len, XIQueryPointer);
+
+ g_assert(rep->root == root.drawable.id);
+ g_assert(rep->same_screen == xTrue);
+
+ sprite = test_data.dev->spriteInfo->sprite;
+ g_assert((rep->root_x >> 16) == sprite->hot.x);
+ g_assert((rep->root_y >> 16) == sprite->hot.y);
+
+ if (test_data.win == &root)
+ {
+ g_assert(rep->root_x == rep->win_x);
+ g_assert(rep->root_y == rep->win_y);
+ g_assert(rep->child == window.drawable.id);
+ } else
+ {
+ int x, y;
+
+ x = sprite->hot.x - window.drawable.x;
+ y = sprite->hot.y - window.drawable.y;
+
+ g_assert((rep->win_x >> 16) == x);
+ g_assert((rep->win_y >> 16) == y);
+ g_assert(rep->child == None);
+ }
+
+
+ g_assert(rep->same_screen == xTrue);
+
+ reply_handler = reply_XIQueryPointer_data;
+}
+
+static void reply_XIQueryPointer_data(ClientPtr client, int len, char *data, void *userdata)
+{
+ reply_handler = reply_XIQueryPointer;
+}
+
+static void request_XIQueryPointer(ClientPtr client, xXIQueryPointerReq* req, int error)
+{
+ char n;
+ int rc;
+
+ rc = ProcXIQueryPointer(&client_request);
+ g_assert(rc == error);
+
+ if (rc == BadDevice)
+ g_assert(client_request.errorValue == req->deviceid);
+
+ client_request.swapped = TRUE;
+ swaps(&req->deviceid, n);
+ swaps(&req->length, n);
+ rc = SProcXIQueryPointer(&client_request);
+ g_assert(rc == error);
+
+ if (rc == BadDevice)
+ g_assert(client_request.errorValue == req->deviceid);
+}
+
+static void test_XIQueryPointer(void)
+{
+ int i;
+ xXIQueryPointerReq request;
+
+ memset(&request, 0, sizeof(request));
+
+ request_init(&request, XIQueryPointer);
+
+ reply_handler = reply_XIQueryPointer;
+
+ client_request = init_client(request.length, &request);
+
+ request.deviceid = XIAllDevices;
+ request_XIQueryPointer(&client_request, &request, BadDevice);
+
+ request.deviceid = XIAllMasterDevices;
+ request_XIQueryPointer(&client_request, &request, BadDevice);
+
+ request.win = root.drawable.id;
+ test_data.win = &root;
+
+ test_data.dev = devices.vcp;
+ request.deviceid = devices.vcp->id;
+ request_XIQueryPointer(&client_request, &request, Success);
+ request.deviceid = devices.vck->id;
+ request_XIQueryPointer(&client_request, &request, BadDevice);
+ request.deviceid = devices.mouse->id;
+ request_XIQueryPointer(&client_request, &request, BadDevice);
+ request.deviceid = devices.kbd->id;
+ request_XIQueryPointer(&client_request, &request, BadDevice);
+
+ test_data.dev = devices.mouse;
+ devices.mouse->u.master = NULL; /* Float, kind-of */
+ request.deviceid = devices.mouse->id;
+ request_XIQueryPointer(&client_request, &request, Success);
+
+ for (i = devices.kbd->id + 1; i <= 0xFFFF; i++)
+ {
+ request.deviceid = i;
+ request_XIQueryPointer(&client_request, &request, BadDevice);
+ }
+
+ request.win = window.drawable.id;
+
+ test_data.dev = devices.vcp;
+ test_data.win = &window;
+ request.deviceid = devices.vcp->id;
+ request_XIQueryPointer(&client_request, &request, Success);
+
+ test_data.dev = devices.mouse;
+ request.deviceid = devices.mouse->id;
+ request_XIQueryPointer(&client_request, &request, Success);
+}
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ init_simple();
+
+ g_test_add_func("/xi2/protocol/XIQueryPointer", test_XIQueryPointer);
+
+ return g_test_run();
+}
diff --git a/test/xi2/protocol-xiqueryversion.c b/test/xi2/protocol-xiqueryversion.c
new file mode 100644
index 000000000..46e62acbd
--- /dev/null
+++ b/test/xi2/protocol-xiqueryversion.c
@@ -0,0 +1,186 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+/*
+ * Protocol testing for XIQueryVersion request and reply.
+ *
+ * Test approach:
+ * Wrap WriteToClient to intercept the server's reply.
+ * Repeatedly test a client/server version combination, compare version in
+ * reply with versions given. Version must be equal to either
+ * server version or client version, whichever is smaller.
+ * Client version less than 2 must return BadValue.
+ */
+
+#include <stdint.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include <X11/extensions/XI2proto.h>
+#include "inputstr.h"
+#include "extinit.h" /* for XInputExtensionInit */
+#include "scrnintstr.h"
+#include "xiqueryversion.h"
+
+#include "protocol-common.h"
+#include <glib.h>
+
+extern XExtensionVersion XIVersion;
+
+struct test_data {
+ int major_client;
+ int minor_client;
+ int major_server;
+ int minor_server;
+};
+
+static void reply_XIQueryVersion(ClientPtr client, int len, char* data, void *userdata)
+{
+ xXIQueryVersionReply *rep = (xXIQueryVersionReply*)data;
+ struct test_data *versions = (struct test_data*)userdata;
+ unsigned int sver, cver, ver;
+
+ if (client->swapped)
+ {
+ char n;
+ swapl(&rep->length, n);
+ swaps(&rep->sequenceNumber, n);
+ swaps(&rep->major_version, n);
+ swaps(&rep->minor_version, n);
+ }
+
+ reply_check_defaults(rep, len, XIQueryVersion);
+
+ g_assert(rep->length == 0);
+
+ sver = versions->major_server * 1000 + versions->minor_server;
+ cver = versions->major_client * 1000 + versions->minor_client;
+ ver = rep->major_version * 1000 + rep->minor_version;
+
+ g_assert(ver >= 2000);
+ g_assert((sver > cver) ? ver == cver : ver == sver);
+}
+
+/**
+ * Run a single test with server version smaj.smin and client
+ * version cmaj.cmin. Verify that return code is equal to 'error'.
+ *
+ * Test is run normal, then for a swapped client.
+ */
+static void request_XIQueryVersion(int smaj, int smin, int cmaj, int cmin, int error)
+{
+ char n;
+ int rc;
+ struct test_data versions;
+ xXIQueryVersionReq request;
+ ClientRec client;
+
+ request_init(&request, XIQueryVersion);
+ client = init_client(request.length, &request);
+ userdata = (void*)&versions;
+
+ /* Change the server to support smaj.smin */
+ XIVersion.major_version = smaj;
+ XIVersion.minor_version = smin;
+
+ /* remember versions we send and expect */
+ versions.major_client = cmaj;
+ versions.minor_client = cmin;
+ versions.major_server = XIVersion.major_version;
+ versions.minor_server = XIVersion.minor_version;
+
+ request.major_version = versions.major_client;
+ request.minor_version = versions.minor_client;
+ rc = ProcXIQueryVersion(&client);
+ g_assert(rc == error);
+
+ client.swapped = TRUE;
+
+ swaps(&request.length, n);
+ swaps(&request.major_version, n);
+ swaps(&request.minor_version, n);
+
+ rc = SProcXIQueryVersion(&client);
+ g_assert(rc == error);
+}
+
+/* Client version less than 2.0 must return BadValue, all other combinations
+ * Success */
+static void test_XIQueryVersion(void)
+{
+ reply_handler = reply_XIQueryVersion;
+
+ g_test_message("Server version 2.0 - client versions [1..3].0");
+ /* some simple tests to catch common errors quickly */
+ request_XIQueryVersion(2, 0, 1, 0, BadValue);
+ request_XIQueryVersion(2, 0, 2, 0, Success);
+ request_XIQueryVersion(2, 0, 3, 0, Success);
+
+ g_test_message("Server version 3.0 - client versions [1..3].0");
+ request_XIQueryVersion(3, 0, 1, 0, BadValue);
+ request_XIQueryVersion(3, 0, 2, 0, Success);
+ request_XIQueryVersion(3, 0, 3, 0, Success);
+
+ g_test_message("Server version 2.0 - client versions [1..3].[1..3]");
+ request_XIQueryVersion(2, 0, 1, 1, BadValue);
+ request_XIQueryVersion(2, 0, 2, 2, Success);
+ request_XIQueryVersion(2, 0, 3, 3, Success);
+
+ g_test_message("Server version 2.2 - client versions [1..3].0");
+ request_XIQueryVersion(2, 2, 1, 0, BadValue);
+ request_XIQueryVersion(2, 2, 2, 0, Success);
+ request_XIQueryVersion(2, 2, 3, 0, Success);
+
+#if 0
+ /* this one takes a while */
+ unsigned int cmin, cmaj, smin, smaj;
+
+ g_test_message("Testing all combinations.");
+ for (smaj = 2; smaj <= 0xFFFF; smaj++)
+ for (smin = 0; smin <= 0xFFFF; smin++)
+ for (cmin = 0; cmin <= 0xFFFF; cmin++)
+ for (cmaj = 0; cmaj <= 0xFFFF; cmaj++)
+ {
+ int error = (cmaj < 2) ? BadValue : Success;
+ request_XIQueryVersion(smaj, smin, cmaj, cmin, error);
+ }
+
+#endif
+
+ reply_handler = NULL;
+}
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ init_simple();
+
+ g_test_add_func("/xi2/protocol/XIQueryVersion", test_XIQueryVersion);
+
+ return g_test_run();
+}
diff --git a/test/xi2/protocol-xiselectevents.c b/test/xi2/protocol-xiselectevents.c
new file mode 100644
index 000000000..f314462b5
--- /dev/null
+++ b/test/xi2/protocol-xiselectevents.c
@@ -0,0 +1,337 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+/*
+ * Protocol testing for XISelectEvents request.
+ *
+ * Test approach:
+ *
+ * Wrap XISetEventMask to intercept when the server tries to apply the event
+ * mask. Ensure that the mask passed in is equivalent to the one supplied by
+ * the client. Ensure that invalid devices and invalid masks return errors
+ * as appropriate.
+ *
+ * Tests included:
+ * BadValue for num_masks < 0
+ * BadWindow for invalid windows
+ * BadDevice for non-existing devices
+ * BadImplemenation for devices >= 0xFF
+ * BadValue if HierarchyChanged bit is set for devices other than
+ * XIAllDevices
+ * BadValue for invalid mask bits
+ * Sucecss for excessive mask lengths
+ *
+ */
+
+#include <stdint.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include <X11/extensions/XI2proto.h>
+#include "inputstr.h"
+#include "windowstr.h"
+#include "extinit.h" /* for XInputExtensionInit */
+#include "scrnintstr.h"
+#include "xiselectev.h"
+
+#include "protocol-common.h"
+#include <glib.h>
+
+static unsigned char *data[4096 * 16]; /* the request data buffer */
+
+int __wrap_XISetEventMask(DeviceIntPtr dev, WindowPtr win, int len, unsigned char* mask)
+{
+ return Success;
+}
+
+/* dixLookupWindow requires a lot of setup not necessary for this test.
+ * Simple wrapper that returns either one of the fake root window or the
+ * fake client window. If the requested ID is neither of those wanted,
+ * return whatever the real dixLookupWindow does.
+ */
+int __wrap_dixLookupWindow(WindowPtr *win, XID id, ClientPtr client, Mask access)
+{
+ if (id == root.drawable.id)
+ {
+ *win = &root;
+ return Success;
+ } else if (id == window.drawable.id)
+ {
+ *win = &window;
+ return Success;
+ }
+
+ return __real_dixLookupWindow(win, id, client, access);
+}
+
+
+static void request_XISelectEvent(xXISelectEventsReq *req, int error)
+{
+ char n;
+ int i;
+ int rc;
+ ClientRec client;
+ xXIEventMask *mask, *next;
+
+ req->length = (sz_xXISelectEventsReq/4);
+ mask = (xXIEventMask*)&req[1];
+ for (i = 0; i < req->num_masks; i++)
+ {
+ req->length += sizeof(xXIEventMask)/4 + mask->mask_len;
+ mask = (xXIEventMask*)((char*)&mask[1] + mask->mask_len * 4);
+ }
+
+ client = init_client(req->length, req);
+
+ rc = ProcXISelectEvents(&client);
+ g_assert(rc == error);
+
+ client.swapped = TRUE;
+
+ mask = (xXIEventMask*)&req[1];
+ for (i = 0; i < req->num_masks; i++)
+ {
+ next = (xXIEventMask*)((char*)&mask[1] + mask->mask_len * 4);
+ swaps(&mask->deviceid, n);
+ swaps(&mask->mask_len, n);
+ mask = next;
+ }
+
+ swapl(&req->win, n);
+ swaps(&req->length, n);
+ swaps(&req->num_masks, n);
+ rc = SProcXISelectEvents(&client);
+ g_assert(rc == error);
+}
+
+static void request_XISelectEvents_masks(xXISelectEventsReq *req)
+{
+ int i, j;
+ xXIEventMask *mask;
+ int nmasks = (XI_LASTEVENT + 7)/8;
+ unsigned char *bits;
+
+ mask = (xXIEventMask*)&req[1];
+ req->win = ROOT_WINDOW_ID;
+
+ /* if a clients submits more than 100 masks, consider it insane and untested */
+ for (i = 1; i <= 1000; i++)
+ {
+ req->num_masks = i;
+ mask->deviceid = XIAllDevices;
+
+ /* Test 0:
+ * mask_len is 0 -> Success
+ */
+ mask->mask_len = 0;
+ request_XISelectEvent(req, Success);
+
+ /* Test 1:
+ * mask may be larger than needed for XI_LASTEVENT.
+ * Test setting each valid mask bit, while leaving unneeded bits 0.
+ * -> Success
+ */
+ bits = (unsigned char*)&mask[1];
+ mask->mask_len = (nmasks + 3)/4 * 10;
+ memset(bits, 0, mask->mask_len * 4);
+ for (j = 0; j <= XI_LASTEVENT; j++)
+ {
+ SetBit(bits, j);
+ request_XISelectEvent(req, Success);
+ ClearBit(bits, j);
+ }
+
+ /* Test 2:
+ * mask may be larger than needed for XI_LASTEVENT.
+ * Test setting all valid mask bits, while leaving unneeded bits 0.
+ * -> Success
+ */
+ bits = (unsigned char*)&mask[1];
+ mask->mask_len = (nmasks + 3)/4 * 10;
+ memset(bits, 0, mask->mask_len * 4);
+
+ for (j = 0; j <= XI_LASTEVENT; j++)
+ {
+ SetBit(bits, j);
+ request_XISelectEvent(req, Success);
+ }
+
+ /* Test 3:
+ * mask is larger than needed for XI_LASTEVENT. If any unneeded bit
+ * is set -> BadValue
+ */
+ bits = (unsigned char*)&mask[1];
+ mask->mask_len = (nmasks + 3)/4 * 10;
+ memset(bits, 0, mask->mask_len * 4);
+
+ for (j = XI_LASTEVENT + 1; j < mask->mask_len * 4; j++)
+ {
+ SetBit(bits, j);
+ request_XISelectEvent(req, BadValue);
+ ClearBit(bits, j);
+ }
+
+ /* Test 4:
+ * Mask len is a sensible length, only valid bits are set -> Success
+ */
+ bits = (unsigned char*)&mask[1];
+ mask->mask_len = (nmasks + 3)/4;
+ memset(bits, 0, mask->mask_len * 4);
+ for (j = 0; j <= XI_LASTEVENT; j++)
+ {
+ SetBit(bits, j);
+ request_XISelectEvent(req, Success);
+ }
+
+ /* Test 5:
+ * HierarchyChanged bit is BadValue for devices other than
+ * XIAllDevices
+ */
+ bits = (unsigned char*)&mask[1];
+ mask->mask_len = (nmasks + 3)/4;
+ memset(bits, 0, mask->mask_len * 4);
+ SetBit(bits, XI_HierarchyChanged);
+ mask->deviceid = XIAllDevices;
+ request_XISelectEvent(req, Success);
+ for (j = 1; j < devices.num_devices; j++)
+ {
+ mask->deviceid = j;
+ request_XISelectEvent(req, BadValue);
+ }
+
+ /* Test 6:
+ * All bits set minus hierarchy changed bit -> Success
+ */
+ bits = (unsigned char*)&mask[1];
+ mask->mask_len = (nmasks + 3)/4;
+ memset(bits, 0, mask->mask_len * 4);
+ for (j = 0; j <= XI_LASTEVENT; j++)
+ SetBit(bits, j);
+ ClearBit(bits, XI_HierarchyChanged);
+ for (j = 1; j < 6; j++)
+ {
+ mask->deviceid = j;
+ request_XISelectEvent(req, Success);
+ }
+
+ mask = (xXIEventMask*)((char*)mask + sizeof(xXIEventMask) + mask->mask_len * 4);
+ }
+}
+
+static void test_XISelectEvents(void)
+{
+ int i;
+ xXIEventMask *mask;
+ xXISelectEventsReq *req;
+ req = (xXISelectEventsReq*)data;
+
+ request_init(req, XISelectEvents);
+
+ g_test_message("Testing for BadValue on zero-length masks");
+ /* zero masks are BadValue, regardless of the window */
+ req->num_masks = 0;
+
+ req->win = None;
+ request_XISelectEvent(req, BadValue);
+
+ req->win = ROOT_WINDOW_ID;
+ request_XISelectEvent(req, BadValue);
+
+ req->win = CLIENT_WINDOW_ID;
+ request_XISelectEvent(req, BadValue);
+
+ g_test_message("Testing for BadWindow.");
+ /* None window is BadWindow, regardless of the masks.
+ * We don't actually need to set the masks here, BadWindow must occur
+ * before checking the masks.
+ */
+ req->win = None;
+ req->num_masks = 1;
+ request_XISelectEvent(req, BadWindow);
+
+ req->num_masks = 2;
+ request_XISelectEvent(req, BadWindow);
+
+ req->num_masks = 0xFF;
+ request_XISelectEvent(req, BadWindow);
+
+ /* request size is 3, so 0xFFFC is the highest num_mask that doesn't
+ * overflow req->length */
+ req->num_masks = 0xFFFC;
+ request_XISelectEvent(req, BadWindow);
+
+ g_test_message("Triggering num_masks/length overflow");
+ /* Integer overflow - req->length can't hold that much */
+ req->num_masks = 0xFFFF;
+ request_XISelectEvent(req, BadLength);
+
+ req->win = ROOT_WINDOW_ID;
+ req->num_masks = 1;
+
+ g_test_message("Triggering bogus mask length error");
+ mask = (xXIEventMask*)&req[1];
+ mask->deviceid = 0;
+ mask->mask_len = 0xFFFF;
+ request_XISelectEvent(req, BadLength);
+
+ /* testing various device ids */
+ g_test_message("Testing existing device ids.");
+ for (i = 0; i < 6; i++)
+ {
+ mask = (xXIEventMask*)&req[1];
+ mask->deviceid = i;
+ mask->mask_len = 1;
+ req->win = ROOT_WINDOW_ID;
+ req->num_masks = 1;
+ request_XISelectEvent(req, Success);
+ }
+
+ g_test_message("Testing non-existing device ids.");
+ for (i = 6; i <= 0xFFFF; i++)
+ {
+ req->win = ROOT_WINDOW_ID;
+ req->num_masks = 1;
+ mask = (xXIEventMask*)&req[1];
+ mask->deviceid = i;
+ mask->mask_len = 1;
+ request_XISelectEvent(req, BadDevice);
+ }
+
+ request_XISelectEvents_masks(req);
+}
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ init_simple();
+
+ g_test_add_func("/xi2/protocol/XISelectEvents", test_XISelectEvents);
+
+ return g_test_run();
+}
+
diff --git a/test/xi2/protocol-xisetclientpointer.c b/test/xi2/protocol-xisetclientpointer.c
new file mode 100644
index 000000000..2e638eea7
--- /dev/null
+++ b/test/xi2/protocol-xisetclientpointer.c
@@ -0,0 +1,149 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+/*
+ * Protocol testing for XISetClientPointer request.
+ *
+ * Tests include:
+ * BadDevice of all devices except master pointers.
+ * Success for a valid window.
+ * Success for window None.
+ * BadWindow for invalid windows.
+ */
+#include <stdint.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include <X11/extensions/XI2proto.h>
+#include "inputstr.h"
+#include "windowstr.h"
+#include "extinit.h" /* for XInputExtensionInit */
+#include "scrnintstr.h"
+#include "xisetclientpointer.h"
+#include "exevents.h"
+
+#include "protocol-common.h"
+#include <glib.h>
+
+static ClientRec client_window;
+static ClientRec client_request;
+
+int __wrap_dixLookupClient(ClientPtr *pClient, XID rid, ClientPtr client, Mask access)
+{
+ if (rid == ROOT_WINDOW_ID)
+ return BadWindow;
+
+ if (rid == CLIENT_WINDOW_ID)
+ {
+ *pClient = &client_window;
+ return Success;
+ }
+
+ return __real_dixLookupClient(pClient, rid, client, access);
+}
+
+static void request_XISetClientPointer(xXISetClientPointerReq* req, int error)
+{
+ char n;
+ int rc;
+ client_request = init_client(req->length, req);
+
+ rc = ProcXISetClientPointer(&client_request);
+ g_assert(rc == error);
+
+ if (rc == BadDevice)
+ g_assert(client_request.errorValue == req->deviceid);
+
+ client_request.swapped = TRUE;
+ swapl(&req->win, n);
+ swaps(&req->length, n);
+ swaps(&req->deviceid, n);
+ rc = SProcXISetClientPointer(&client_request);
+ g_assert(rc == error);
+
+ if (rc == BadDevice)
+ g_assert(client_request.errorValue == req->deviceid);
+
+}
+
+static void test_XISetClientPointer(void)
+{
+ int i;
+ xXISetClientPointerReq request;
+
+ request_init(&request, XISetClientPointer);
+
+ request.win = CLIENT_WINDOW_ID;
+
+ g_test_message("Testing BadDevice error for XIAllDevices and XIMasterDevices.");
+ request.deviceid = XIAllDevices;
+ request_XISetClientPointer(&request, BadDevice);
+
+ request.deviceid = XIAllMasterDevices;
+ request_XISetClientPointer(&request, BadDevice);
+
+ g_test_message("Testing Success for VCP and VCK.");
+ request.deviceid = devices.vcp->id; /* 2 */
+ request_XISetClientPointer(&request, Success);
+ g_assert(client_window.clientPtr->id == 2);
+
+ request.deviceid = devices.vck->id; /* 3 */
+ request_XISetClientPointer(&request, Success);
+ g_assert(client_window.clientPtr->id == 2);
+
+ g_test_message("Testing BadDevice error for all other devices.");
+ for (i = 4; i <= 0xFFFF; i++)
+ {
+ request.deviceid = i;
+ request_XISetClientPointer(&request, BadDevice);
+ }
+
+ g_test_message("Testing window None");
+ request.win = None;
+ request.deviceid = devices.vcp->id; /* 2 */
+ request_XISetClientPointer(&request, Success);
+ g_assert(client_request.clientPtr->id == 2);
+
+ g_test_message("Testing invalid window");
+ request.win = INVALID_WINDOW_ID;
+ request.deviceid = devices.vcp->id;
+ request_XISetClientPointer(&request, BadWindow);
+
+}
+
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ init_simple();
+ client_window = init_client(0, NULL);
+
+ g_test_add_func("/xi2/protocol/XISetClientPointer", test_XISetClientPointer);
+
+ return g_test_run();
+}
diff --git a/test/xi2/protocol-xiwarppointer.c b/test/xi2/protocol-xiwarppointer.c
new file mode 100644
index 000000000..4f8860ea0
--- /dev/null
+++ b/test/xi2/protocol-xiwarppointer.c
@@ -0,0 +1,216 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+/*
+ * Protocol testing for XIWarpPointer request.
+ */
+#include <stdint.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include <X11/extensions/XI2proto.h>
+#include "inputstr.h"
+#include "windowstr.h"
+#include "scrnintstr.h"
+#include "xiwarppointer.h"
+#include "exevents.h"
+
+#include "protocol-common.h"
+#include <glib.h>
+
+static int expected_x = SPRITE_X;
+static int expected_y = SPRITE_Y;
+
+/* dixLookupWindow requires a lot of setup not necessary for this test.
+ * Simple wrapper that returns either one of the fake root window or the
+ * fake client window. If the requested ID is neither of those wanted,
+ * return whatever the real dixLookupWindow does.
+ */
+int __wrap_dixLookupWindow(WindowPtr *win, XID id, ClientPtr client, Mask access)
+{
+ if (id == root.drawable.id)
+ {
+ *win = &root;
+ return Success;
+ } else if (id == window.drawable.id)
+ {
+ *win = &window;
+ return Success;
+ }
+
+ return __real_dixLookupWindow(win, id, client, access);
+}
+
+/**
+ * This function overrides the one in the screen rec.
+ */
+static Bool ScreenSetCursorPosition(DeviceIntPtr dev, ScreenPtr screen,
+ int x, int y, Bool generateEvent)
+{
+ g_assert(x == expected_x);
+ g_assert(y == expected_y);
+ return TRUE;
+}
+
+
+static void request_XIWarpPointer(ClientPtr client, xXIWarpPointerReq* req,
+ int error)
+{
+ char n;
+ int rc;
+
+ rc = ProcXIWarpPointer(client);
+ g_assert(rc == error);
+
+ if (rc == BadDevice)
+ g_assert(client->errorValue == req->deviceid);
+ else if (rc == BadWindow)
+ g_assert(client->errorValue == req->dst_win ||
+ client->errorValue == req->src_win);
+
+
+ client->swapped = TRUE;
+
+ swapl(&req->src_win, n);
+ swapl(&req->dst_win, n);
+ swapl(&req->src_x, n);
+ swapl(&req->src_y, n);
+ swapl(&req->dst_x, n);
+ swapl(&req->dst_y, n);
+ swaps(&req->src_width, n);
+ swaps(&req->src_height, n);
+ swaps(&req->deviceid, n);
+
+ rc = SProcXIWarpPointer(client);
+ g_assert(rc == error);
+
+ if (rc == BadDevice)
+ g_assert(client->errorValue == req->deviceid);
+ else if (rc == BadWindow)
+ g_assert(client->errorValue == req->dst_win ||
+ client->errorValue == req->src_win);
+
+ client->swapped = FALSE;
+}
+
+static void test_XIWarpPointer(void)
+{
+ int i;
+ ClientRec client_request;
+ xXIWarpPointerReq request;
+
+ memset(&request, 0, sizeof(request));
+
+ request_init(&request, XIWarpPointer);
+
+ client_request = init_client(request.length, &request);
+
+ request.deviceid = XIAllDevices;
+ request_XIWarpPointer(&client_request, &request, BadDevice);
+
+ request.deviceid = XIAllMasterDevices;
+ request_XIWarpPointer(&client_request, &request, BadDevice);
+
+ request.src_win = root.drawable.id;
+ request.dst_win = root.drawable.id;
+ request.deviceid = devices.vcp->id;
+ request_XIWarpPointer(&client_request, &request, Success);
+ request.deviceid = devices.vck->id;
+ request_XIWarpPointer(&client_request, &request, BadDevice);
+ request.deviceid = devices.mouse->id;
+ request_XIWarpPointer(&client_request, &request, BadDevice);
+ request.deviceid = devices.kbd->id;
+ request_XIWarpPointer(&client_request, &request, BadDevice);
+
+ devices.mouse->u.master = NULL; /* Float, kind-of */
+ request.deviceid = devices.mouse->id;
+ request_XIWarpPointer(&client_request, &request, Success);
+
+ for (i = devices.kbd->id + 1; i <= 0xFFFF; i++)
+ {
+ request.deviceid = i;
+ request_XIWarpPointer(&client_request, &request, BadDevice);
+ }
+
+ request.src_win = window.drawable.id;
+ request.deviceid = devices.vcp->id;
+ request_XIWarpPointer(&client_request, &request, Success);
+
+ request.deviceid = devices.mouse->id;
+ request_XIWarpPointer(&client_request, &request, Success);
+
+ request.src_win = root.drawable.id;
+ request.dst_win = 0xFFFF; /* invalid window */
+ request_XIWarpPointer(&client_request, &request, BadWindow);
+
+ request.src_win = 0xFFFF; /* invalid window */
+ request.dst_win = root.drawable.id;
+ request_XIWarpPointer(&client_request, &request, BadWindow);
+
+ request.src_win = None;
+ request.dst_win = None;
+
+ request.dst_y = 0;
+ expected_y = SPRITE_Y;
+
+ request.dst_x = 1 << 16;
+ expected_x = SPRITE_X + 1;
+ request.deviceid = devices.vcp->id;
+ request_XIWarpPointer(&client_request, &request, Success);
+
+ request.dst_x = -1 << 16;
+ expected_x = SPRITE_X - 1;
+ request.deviceid = devices.vcp->id;
+ request_XIWarpPointer(&client_request, &request, Success);
+
+ request.dst_x = 0;
+ expected_x = SPRITE_X;
+
+ request.dst_y = 1 << 16;
+ expected_y = SPRITE_Y + 1;
+ request.deviceid = devices.vcp->id;
+ request_XIWarpPointer(&client_request, &request, Success);
+
+ request.dst_y = -1 << 16;
+ expected_y = SPRITE_Y - 1;
+ request.deviceid = devices.vcp->id;
+ request_XIWarpPointer(&client_request, &request, Success);
+
+ /* FIXME: src_x/y checks */
+}
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ init_simple();
+ screen.SetCursorPosition = ScreenSetCursorPosition;
+
+ g_test_add_func("/xi2/protocol/XIWarpPointer", test_XIWarpPointer);
+
+ return g_test_run();
+}
diff --git a/test/xtest.c b/test/xtest.c
new file mode 100644
index 000000000..572f5d2df
--- /dev/null
+++ b/test/xtest.c
@@ -0,0 +1,116 @@
+/**
+ * Copyright © 2009 Red Hat, 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 (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
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+#include <stdint.h>
+#include <X11/Xatom.h>
+#include "input.h"
+#include "inputstr.h"
+#include "scrnintstr.h"
+#include "exevents.h"
+#include "xserver-properties.h"
+
+#include <glib.h>
+
+/**
+ */
+
+/* from Xext/xtest.c */
+extern DeviceIntPtr xtestpointer, xtestkeyboard;
+
+/* Needed for the screen setup, otherwise we crash during sprite initialization */
+static Bool device_cursor_init(DeviceIntPtr dev, ScreenPtr screen) { return TRUE; }
+
+static void xtest_init_devices(void)
+{
+ ScreenRec screen;
+
+ /* random stuff that needs initialization */
+ memset(&screen, 0, sizeof(screen));
+ screenInfo.arraySize = MAXSCREENS;
+ screenInfo.numScreens = 1;
+ screenInfo.screens[0] = &screen;
+ screen.myNum = 0;
+ screen.id = 100;
+ screen.width = 640;
+ screen.height = 480;
+ screen.DeviceCursorInitialize = device_cursor_init;
+ dixResetPrivates();
+ InitAtoms();
+
+ /* this also inits the xtest devices */
+ InitCoreDevices();
+
+ g_assert(xtestpointer);
+ g_assert(xtestkeyboard);
+ g_assert(IsXTestDevice(xtestpointer, NULL));
+ g_assert(IsXTestDevice(xtestkeyboard, NULL));
+ g_assert(IsXTestDevice(xtestpointer, inputInfo.pointer));
+ g_assert(IsXTestDevice(xtestkeyboard, inputInfo.keyboard));
+ g_assert(GetXTestDevice(inputInfo.pointer) == xtestpointer);
+ g_assert(GetXTestDevice(inputInfo.keyboard) == xtestkeyboard);
+}
+
+/**
+ * Each xtest devices has a property attached marking it. This property
+ * cannot be changed.
+ */
+static void xtest_properties(void)
+{
+ int rc;
+ char value = 1;
+ XIPropertyValuePtr prop;
+ Atom xtest_prop = XIGetKnownProperty(XI_PROP_XTEST_DEVICE);
+
+ rc = XIGetDeviceProperty(xtestpointer, xtest_prop, &prop);
+ g_assert(rc == Success);
+ g_assert(prop);
+
+ rc = XIGetDeviceProperty(xtestkeyboard, xtest_prop, &prop);
+ g_assert(rc == Success);
+ g_assert(prop != NULL);
+
+ rc = XIChangeDeviceProperty(xtestpointer, xtest_prop,
+ XA_INTEGER, 8, PropModeReplace, 1, &value, FALSE);
+ g_assert(rc == BadAccess);
+ rc = XIChangeDeviceProperty(xtestkeyboard, xtest_prop,
+ XA_INTEGER, 8, PropModeReplace, 1, &value, FALSE);
+ g_assert(rc == BadAccess);
+}
+
+
+
+int main(int argc, char** argv)
+{
+ g_test_init(&argc, &argv,NULL);
+ g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id=");
+
+ g_test_add_func("/dix/xtest/init", xtest_init_devices);
+ g_test_add_func("/dix/xtest/properties", xtest_properties);
+
+ return g_test_run();
+}
+
+
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
index 534c82605..0c706600e 100644
--- a/xfixes/cursor.c
+++ b/xfixes/cursor.c
@@ -63,7 +63,7 @@
static RESTYPE CursorClientType;
static RESTYPE CursorHideCountType;
static RESTYPE CursorWindowType;
-static CursorPtr CursorCurrent;
+static CursorPtr CursorCurrent[MAXDEVICES];
static CursorPtr pInvisibleCursor = NULL;
static int CursorScreenPrivateKeyIndex;
@@ -131,7 +131,7 @@ typedef struct _CursorScreen {
#define GetCursorScreenIfSet(s) GetCursorScreen(s)
#define SetCursorScreen(s,p) dixSetPrivate(&(s)->devPrivates, CursorScreenPrivateKey, p)
#define Wrap(as,s,elt,func) (((as)->elt = (s)->elt), (s)->elt = func)
-#define Unwrap(as,s,elt) ((s)->elt = (as)->elt)
+#define Unwrap(as,s,elt,backup) (((backup) = (s)->elt), (s)->elt = (as)->elt)
/* The cursor doesn't show up until the first XDefineCursor() */
static Bool CursorVisible = FALSE;
@@ -145,8 +145,9 @@ CursorDisplayCursor (DeviceIntPtr pDev,
{
CursorScreenPtr cs = GetCursorScreen(pScreen);
Bool ret;
+ DisplayCursorProcPtr backupProc;
- Unwrap (cs, pScreen, DisplayCursor);
+ Unwrap (cs, pScreen, DisplayCursor, backupProc);
/*
* Have to check ConnectionInfo to distinguish client requests from
@@ -162,11 +163,11 @@ CursorDisplayCursor (DeviceIntPtr pDev,
ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor);
}
- if (pCursor != CursorCurrent)
+ if (pCursor != CursorCurrent[pDev->id])
{
CursorEventPtr e;
- CursorCurrent = pCursor;
+ CursorCurrent[pDev->id] = pCursor;
for (e = cursorEvents; e; e = e->next)
{
if ((e->eventMask & XFixesDisplayCursorNotifyMask) &&
@@ -184,7 +185,8 @@ CursorDisplayCursor (DeviceIntPtr pDev,
}
}
}
- Wrap (cs, pScreen, DisplayCursor, CursorDisplayCursor);
+ Wrap (cs, pScreen, DisplayCursor, backupProc);
+
return ret;
}
@@ -193,9 +195,11 @@ CursorCloseScreen (int index, ScreenPtr pScreen)
{
CursorScreenPtr cs = GetCursorScreen (pScreen);
Bool ret;
+ CloseScreenProcPtr close_proc;
+ DisplayCursorProcPtr display_proc;
- Unwrap (cs, pScreen, CloseScreen);
- Unwrap (cs, pScreen, DisplayCursor);
+ Unwrap (cs, pScreen, CloseScreen, close_proc);
+ Unwrap (cs, pScreen, DisplayCursor, display_proc);
deleteCursorHideCountsForScreen(pScreen);
ret = (*pScreen->CloseScreen) (index, pScreen);
xfree (cs);
@@ -380,7 +384,7 @@ ProcXFixesGetCursorImage (ClientPtr client)
int npixels, width, height, rc, x, y;
REQUEST_SIZE_MATCH(xXFixesGetCursorImageReq);
- pCursor = CursorCurrent;
+ pCursor = CursorCurrent[PickPointer(client)->id];
if (!pCursor)
return BadCursor;
rc = XaceHook(XACE_RESOURCE_ACCESS, client, pCursor->id, RT_CURSOR,
@@ -488,7 +492,7 @@ ProcXFixesGetCursorName (ClientPtr client)
len = strlen (str);
reply.type = X_Reply;
- reply.length = (len + 3) >> 2;
+ reply.length = bytes_to_int32(len);
reply.sequenceNumber = client->sequence;
reply.atom = pCursor->name;
reply.nbytes = len;
@@ -532,7 +536,7 @@ ProcXFixesGetCursorImageAndName (ClientPtr client)
int rc, x, y;
REQUEST_SIZE_MATCH(xXFixesGetCursorImageAndNameReq);
- pCursor = CursorCurrent;
+ pCursor = CursorCurrent[PickPointer(client)->id];
if (!pCursor)
return BadCursor;
rc = XaceHook(XACE_RESOURCE_ACCESS, client, pCursor->id, RT_CURSOR,
@@ -545,7 +549,7 @@ ProcXFixesGetCursorImageAndName (ClientPtr client)
npixels = width * height;
name = pCursor->name ? NameForAtom (pCursor->name) : "";
nbytes = strlen (name);
- nbytesRound = (nbytes + 3) & ~3;
+ nbytesRound = pad_to_int32(nbytes);
rep = xalloc (sizeof (xXFixesGetCursorImageAndNameReply) +
npixels * sizeof (CARD32) + nbytesRound);
if (!rep)
@@ -553,7 +557,7 @@ ProcXFixesGetCursorImageAndName (ClientPtr client)
rep->type = X_Reply;
rep->sequenceNumber = client->sequence;
- rep->length = npixels + (nbytesRound >> 2);
+ rep->length = npixels + bytes_to_int32(nbytesRound);
rep->width = width;
rep->height = height;
rep->x = x;
@@ -912,7 +916,12 @@ ProcXFixesHideCursor (ClientPtr client)
ret = createCursorHideCount(client, pWin->drawable.pScreen);
if (ret == Success) {
- CursorDisplayCursor(PickPointer(client), pWin->drawable.pScreen, CursorCurrent);
+ DeviceIntPtr dev;
+ for (dev = inputInfo.devices; dev; dev = dev->next)
+ {
+ if (IsMaster(dev) && IsPointerDevice(dev))
+ CursorDisplayCursor(dev, pWin->drawable.pScreen, CursorCurrent[dev->id]);
+ }
}
return ret;
@@ -1004,9 +1013,14 @@ CursorFreeHideCount (pointer data, XID id)
{
CursorHideCountPtr pChc = (CursorHideCountPtr) data;
ScreenPtr pScreen = pChc->pScreen;
+ DeviceIntPtr dev;
deleteCursorHideCount(pChc, pChc->pScreen);
- CursorDisplayCursor(inputInfo.pointer, pScreen, CursorCurrent);
+ for (dev = inputInfo.devices; dev; dev = dev->next)
+ {
+ if (IsMaster(dev) && IsPointerDevice(dev))
+ CursorDisplayCursor(dev, pScreen, CursorCurrent[dev->id]);
+ }
return 1;
}
@@ -1032,12 +1046,11 @@ static CursorPtr
createInvisibleCursor (void)
{
CursorPtr pCursor;
- static unsigned int *psrcbits, *pmaskbits;
+ unsigned char *psrcbits, *pmaskbits;
CursorMetricRec cm;
- int rc;
- psrcbits = (unsigned int *) xalloc(4);
- pmaskbits = (unsigned int *) xalloc(4);
+ psrcbits = (unsigned char *) xalloc(4);
+ pmaskbits = (unsigned char *) xalloc(4);
if (psrcbits == NULL || pmaskbits == NULL) {
return NULL;
}
@@ -1049,9 +1062,7 @@ createInvisibleCursor (void)
cm.xhot = 0;
cm.yhot = 0;
- rc = AllocARGBCursor(
- (unsigned char *)psrcbits,
- (unsigned char *)pmaskbits,
+ AllocARGBCursor(psrcbits, pmaskbits,
NULL, &cm,
0, 0, 0,
0, 0, 0,
diff --git a/xkb/XKBMisc.c b/xkb/XKBMisc.c
index 9cb7061f3..867906046 100644
--- a/xkb/XKBMisc.c
+++ b/xkb/XKBMisc.c
@@ -343,7 +343,7 @@ unsigned tmp;
case XkbSA_SetMods: case XkbSA_LatchMods: case XkbSA_LockMods:
if (act->mods.flags&XkbSA_UseModMapMods)
act->mods.real_mods= act->mods.mask= mods;
- if ((tmp= act->mods.vmods)!=0) {
+ if ((tmp= XkbModActionVMods(&act->mods))!=0) {
XkbVirtualModsToReal(xkb,tmp,&tmp);
act->mods.mask|= tmp;
}
@@ -351,7 +351,7 @@ unsigned tmp;
case XkbSA_ISOLock:
if (act->iso.flags&XkbSA_UseModMapMods)
act->iso.real_mods= act->iso.mask= mods;
- if ((tmp= act->iso.vmods)!=0) {
+ if ((tmp= XkbModActionVMods(&act->iso))!=0) {
XkbVirtualModsToReal(xkb,tmp,&tmp);
act->iso.mask|= tmp;
}
@@ -666,7 +666,7 @@ unsigned int tmp;
switch (act->type) {
case XkbSA_SetMods: case XkbSA_LatchMods: case XkbSA_LockMods:
- if (((tmp= act->mods.vmods)&changed)!=0) {
+ if (((tmp= XkbModActionVMods(&act->mods))&changed)!=0) {
XkbVirtualModsToReal(xkb,tmp,&tmp);
act->mods.mask= act->mods.real_mods;
act->mods.mask|= tmp;
@@ -674,7 +674,7 @@ unsigned int tmp;
}
break;
case XkbSA_ISOLock:
- if ((((tmp= act->iso.vmods)!=0)&changed)!=0) {
+ if ((((tmp= XkbModActionVMods(&act->iso))!=0)&changed)!=0) {
XkbVirtualModsToReal(xkb,tmp,&tmp);
act->iso.mask= act->iso.real_mods;
act->iso.mask|= tmp;
diff --git a/xkb/ddxDevBtn.c b/xkb/ddxDevBtn.c
index e735fdec8..94630d1c9 100644
--- a/xkb/ddxDevBtn.c
+++ b/xkb/ddxDevBtn.c
@@ -35,98 +35,43 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "inputstr.h"
#include "scrnintstr.h"
#include "windowstr.h"
+#include "eventstr.h"
#include <xkbsrv.h>
+#include "mi.h"
#include <X11/extensions/XI.h>
#include <X11/extensions/XIproto.h>
-extern int DeviceValuator;
-
-static EventListPtr masterEvents = NULL;
-
void
XkbDDXFakeDeviceButton(DeviceIntPtr dev,Bool press,int button)
{
-int * devVal;
-INT32 * evVal;
-xEvent events[2];
-deviceKeyButtonPointer *btn;
-deviceValuator * val;
-int x,y;
-int nAxes, i, count;
-DeviceIntPtr master = NULL;
-
- if (dev == inputInfo.pointer || !dev->public.on)
- return;
-
- ErrorF("[xkb] XkbDDXFakeDeviceButton. If you read this message in your "
- "log file, Please file a bug on bugs.freedesktop.org.\n");
-#if 0
- nAxes = (dev->valuator?dev->valuator->numAxes:0);
- if (nAxes > 6)
- nAxes = 6;
-
- GetSpritePosition(dev, &x,&y);
- btn= (deviceKeyButtonPointer *) &events[0];
- val= (deviceValuator *) &events[1];
- if (press) btn->type= DeviceButtonPress;
- else btn->type= DeviceButtonRelease;
- btn->detail= button;
- btn->time= GetTimeInMillis();
- btn->root_x= x;
- btn->root_y= y;
- btn->deviceid= dev->id;
- count= 1;
- if (nAxes>0) {
- btn->deviceid|= 0x80;
- val->type = DeviceValuator;
- val->deviceid = dev->id;
- val->first_valuator = 0;
+ EventListPtr events;
+ int nevents, i;
+ DeviceIntPtr ptr;
- evVal= &val->valuator0;
- devVal= dev->valuator->axisVal;
- for (i=nAxes;i>0;i--) {
- *evVal++ = *devVal++;
- if (evVal > &val->valuator5) {
- int tmp = val->first_valuator+6;
- val->num_valuators = 6;
- val++;
- evVal= &val->valuator0;
- val->first_valuator= tmp;
- }
- }
- if ((nAxes % 6) != 0) {
- val->num_valuators = (nAxes % 6);
- }
- count= 1+((nAxes+5)/6);
- }
-
- /* XXX: This is obnoxious. ProcessOtherEvent updates the DIX device state,
- * but may not do anything if the device state is invalid. This happens if
- * we post a mouse event from a pure keyboard device. So we need to hack
- * around that by getting the master, then posting the event for the
- * pointer paired with the master.
+ /* If dev is a slave device, and the SD is attached, do nothing. If we'd
+ * post through the attached master pointer we'd get duplicate events.
+ *
+ * if dev is a master keyboard, post through the master pointer.
*
- * Note:the DeviceButtonEvent on the SD itself will do nothing in most
- * cases, unless dev is both a keyboard and a mouse.
+ * if dev is a floating slave, post through the device itself.
*/
- if (!dev->isMaster && dev->u.master) {
- if (!masterEvents)
- {
- masterEvents = InitEventList(1);
- SetMinimumEventSize(masterEvents, 1, (1 + MAX_VALUATOR_EVENTS) * sizeof(xEvent));
- }
- master = dev->u.master;
- if (!IsPointerDevice(master))
- master = GetPairedDevice(dev->u.master);
- CopyGetMasterEvent(master, dev, events, masterEvents, count);
- }
+ if (IsMaster(dev))
+ ptr = GetMaster(dev, MASTER_POINTER);
+ else if (!dev->u.master)
+ ptr = dev;
+ else
+ return;
- (*dev->public.processInputProc)((xEventPtr)btn, dev, count);
+ events = InitEventList(GetMaximumEventsNum());
+ nevents = GetPointerEvents(events, ptr,
+ press ? ButtonPress : ButtonRelease, button,
+ 0 /* flags */, 0 /* first */,
+ 0 /* num_val */, NULL);
- if (master) {
- (*master->public.processInputProc)(masterEvents->event, master, count);
- }
- return;
-#endif
+
+ for (i = 0; i < nevents; i++)
+ mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL);
+
+ FreeEventList(events, GetMaximumEventsNum());
}
diff --git a/xkb/xkb.c b/xkb/xkb.c
index e4e84ceb8..0b54a2ec9 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -40,6 +40,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "xkb.h"
#include <X11/extensions/XI.h>
+#include <X11/extensions/XKMformat.h>
int XkbEventBase;
static int XkbErrorBase;
@@ -667,8 +668,8 @@ ProcXkbGetControls(ClientPtr client)
xkb = dev->key->xkbInfo->desc->ctrls;
rep.type = X_Reply;
- rep.length = (SIZEOF(xkbGetControlsReply)-
- SIZEOF(xGenericReply)) >> 2;
+ rep.length = bytes_to_int32(SIZEOF(xkbGetControlsReply)-
+ SIZEOF(xGenericReply));
rep.sequenceNumber = client->sequence;
rep.deviceID = ((DeviceIntPtr)dev)->id;
rep.numGroups = xkb->num_groups;
@@ -5866,6 +5867,16 @@ ProcXkbGetKbdByName(ClientPtr client)
if (geom_changed)
nkn.changed|= XkbNKN_GeometryMask;
XkbSendNewKeyboardNotify(dev,&nkn);
+
+ if (!IsMaster(dev) && dev->u.master)
+ {
+ DeviceIntPtr master = dev->u.master;
+ if (master->u.lastSlave == dev)
+ {
+ XkbCopyDeviceKeymap(dev->u.master, dev);
+ XkbSendNewKeyboardNotify(dev,&nkn);
+ }
+ }
}
if ((new!=NULL)&&(new!=xkb)) {
XkbFreeKeyboard(new,XkbAllComponentsMask,True);
diff --git a/xkb/xkb.h b/xkb/xkb.h
index 45d9b3d7a..a526356a9 100644
--- a/xkb/xkb.h
+++ b/xkb/xkb.h
@@ -29,6 +29,4 @@ extern int ProcXkbSetDeviceInfo(ClientPtr client);
extern int ProcXkbSetDebuggingFlags(ClientPtr client);
extern void XkbExtensionInit(void);
-
-extern Bool XkbFilterEvents(ClientPtr pClient, int nEvents, xEvent *xE);
#endif
diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c
index f0f757818..47023c048 100644
--- a/xkb/xkbAccessX.c
+++ b/xkb/xkbAccessX.c
@@ -36,6 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "exglobals.h"
#include <X11/extensions/XIproto.h>
#include "inputstr.h"
+#include "eventstr.h"
#include <xkbsrv.h>
#if !defined(WIN32)
#include <sys/time.h>
@@ -43,7 +44,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
int XkbDfltRepeatDelay= 660;
int XkbDfltRepeatInterval= 40;
-pointer XkbLastRepeatEvent= NULL;
#define DFLT_TIMEOUT_CTRLS (XkbAX_KRGMask|XkbStickyKeysMask|XkbMouseKeysMask)
#define DFLT_TIMEOUT_OPTS (XkbAX_IndicatorFBMask)
@@ -130,18 +130,15 @@ AccessXKeyboardEvent(DeviceIntPtr keybd,
event.detail.key = keyCode;
event.time = GetTimeInMillis();
event.length = sizeof(DeviceEvent);
+ event.key_repeat = isRepeat;
if (xkbDebugFlags&0x8) {
DebugF("[xkb] AXKE: Key %d %s\n", keyCode,
(event.type == ET_KeyPress ? "down" : "up"));
}
- if (!_XkbIsPressEvent(type) && isRepeat)
- XkbLastRepeatEvent= (pointer)&event;
XkbProcessKeyboardEvent(&event, keybd);
- XkbLastRepeatEvent= NULL;
return;
-
} /* AccessXKeyboardEvent */
/************************************************************************/
@@ -308,14 +305,11 @@ AccessXRepeatKeyExpire(OsTimerPtr timer,CARD32 now,pointer arg)
{
DeviceIntPtr dev = (DeviceIntPtr) arg;
XkbSrvInfoPtr xkbi = dev->key->xkbInfo;
-KeyCode key;
if (xkbi->repeatKey == 0)
return 0;
- key = xkbi->repeatKey;
- AccessXKeyboardEvent(dev, ET_KeyRelease, key, True);
- AccessXKeyboardEvent(dev, ET_KeyPress, key, True);
+ AccessXKeyboardEvent(dev, ET_KeyPress, xkbi->repeatKey, True);
return xkbi->desc->ctrls->repeat_interval;
}
diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
index 417c6171c..9c3184a83 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
@@ -36,6 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "misc.h"
#include "inputstr.h"
#include "exevents.h"
+#include "eventstr.h"
#include <xkbsrv.h>
#include "xkb.h"
#include <ctype.h>
@@ -523,15 +524,15 @@ Bool accel;
xkbi->mouseKeysCounter= 0;
xkbi->mouseKey= keycode;
accel= ((pAction->ptr.flags&XkbSA_NoAcceleration)==0);
- x= pAction->ptr.x;
- y= pAction->ptr.y;
+ x= XkbPtrActionX(&pAction->ptr);
+ y= XkbPtrActionY(&pAction->ptr);
XkbDDXFakePointerMotion(pAction->ptr.flags,x,y);
AccessXCancelRepeatKey(xkbi,keycode);
xkbi->mouseKeysAccel= accel&&
(xkbi->desc->ctrls->enabled_ctrls&XkbMouseKeysAccelMask);
xkbi->mouseKeysFlags= pAction->ptr.flags;
- xkbi->mouseKeysDX= x;
- xkbi->mouseKeysDY= y;
+ xkbi->mouseKeysDX= XkbPtrActionX(&pAction->ptr);
+ xkbi->mouseKeysDY= XkbPtrActionY(&pAction->ptr);
xkbi->mouseKeyTimer= TimerSet(xkbi->mouseKeyTimer, 0,
xkbi->desc->ctrls->mk_delay,
_XkbPtrAccelExpire,(pointer)xkbi);
@@ -671,7 +672,7 @@ XkbEventCauseRec cause;
filter->keycode = keycode;
filter->active = 1;
filter->filterOthers = 0;
- change= pAction->ctrls.ctrls;
+ change= XkbActionCtrls(&pAction->ctrls);
filter->priv = change;
filter->filter = _XkbFilterControls;
filter->upAction = *pAction;
@@ -834,8 +835,8 @@ ProcessInputProc backupproc;
ev.type = ET_KeyPress;
ev.detail.key = pAction->redirect.new_key;
- mask= pAction->redirect.vmods_mask;
- mods= pAction->redirect.vmods;
+ mask= XkbSARedirectVModsMask(&pAction->redirect);
+ mods= XkbSARedirectVMods(&pAction->redirect);
if (mask) XkbVirtualModsToReal(xkbi->desc,mask,&mask);
if (mods) XkbVirtualModsToReal(xkbi->desc,mods,&mods);
mask|= pAction->redirect.mods_mask;
@@ -865,8 +866,8 @@ ProcessInputProc backupproc;
ev.type = ET_KeyRelease;
ev.detail.key = filter->upAction.redirect.new_key;
- mask= filter->upAction.redirect.vmods_mask;
- mods= filter->upAction.redirect.vmods;
+ mask= XkbSARedirectVModsMask(&filter->upAction.redirect);
+ mods= XkbSARedirectVMods(&filter->upAction.redirect);
if (mask) XkbVirtualModsToReal(xkbi->desc,mask,&mask);
if (mods) XkbVirtualModsToReal(xkbi->desc,mods,&mods);
mask|= filter->upAction.redirect.mods_mask;
diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c
index e56694dbf..8fb49c1d8 100644
--- a/xkb/xkbEvents.c
+++ b/xkb/xkbEvents.c
@@ -914,145 +914,99 @@ XkbSrvLedInfoPtr sli;
/***====================================================================***/
-Bool
-XkbFilterEvents(ClientPtr pClient,int nEvents,xEvent *xE)
+void
+XkbFilterEvents(ClientPtr client,int nEvents,xEvent *xE)
{
-int i, button_mask;
-DeviceIntPtr pXDev = NULL;
-XkbSrvInfoPtr xkbi;
+ DeviceIntPtr dev = NULL;
+ XkbSrvInfoPtr xkbi;
+ CARD8 type = xE[0].u.u.type;
if (xE->u.u.type & EXTENSION_EVENT_BASE)
- pXDev = XIGetDevice(xE);
-
- if (!pXDev)
- pXDev = PickKeyboard(pClient);
+ dev = XIGetDevice(xE);
- xkbi= (pXDev->key) ? pXDev->key->xkbInfo : NULL;
+ if (!dev)
+ dev = PickKeyboard(client);
- if ( pClient->xkbClientFlags & _XkbClientInitialized ) {
- if ((xkbDebugFlags&0x10)&&
- ((xE[0].u.u.type==KeyPress)||(xE[0].u.u.type==KeyRelease)||
- (xE[0].u.u.type==DeviceKeyPress)||
- (xE[0].u.u.type == DeviceKeyRelease))) {
- DebugF("[xkb] XKbFilterWriteEvents:\n");
- DebugF("[xkb] Event state= 0x%04x\n",xE[0].u.keyButtonPointer.state);
- DebugF("[xkb] XkbLastRepeatEvent!=xE (0x%p!=0x%p) %s\n",
- XkbLastRepeatEvent,xE,
- ((XkbLastRepeatEvent!=(pointer)xE)?"True":"False"));
- DebugF("[xkb] (xkbClientEventsFlags&XWDA)==0 (0x%x) %s\n",
- pClient->xkbClientFlags,
- (_XkbWantsDetectableAutoRepeat(pClient)?"True":"False"));
- DebugF("[xkb] !IsRelease(%d) %s\n",xE[0].u.u.type,
- (!_XkbIsReleaseEvent(xE[0].u.u.type))?"True":"False");
- }
- if ( (XkbLastRepeatEvent==(pointer)xE) &&
- (_XkbWantsDetectableAutoRepeat(pClient)) &&
- (_XkbIsReleaseEvent(xE[0].u.u.type)) ) {
- return False;
- }
-
- if (!xkbi)
- return True;
+ if (!dev->key)
+ return;
- if ((pXDev->deviceGrab.grab != NullGrab)
- && pXDev->deviceGrab.fromPassiveGrab &&
- ((xE[0].u.u.type==KeyPress)||(xE[0].u.u.type==KeyRelease)||
- (xE[0].u.u.type==DeviceKeyPress)||
- (xE[0].u.u.type == DeviceKeyRelease))) {
- register unsigned state,flags;
+ xkbi = dev->key->xkbInfo;
- flags= pClient->xkbClientFlags;
- state= xkbi->state.compat_grab_mods;
+ if (client->xkbClientFlags & _XkbClientInitialized) {
+ if ((xkbDebugFlags&0x10)&&
+ (type == KeyPress || type == KeyRelease ||
+ type == DeviceKeyPress || type == DeviceKeyRelease))
+ DebugF("[xkb] XkbFilterWriteEvents (XKB client): state 0x%04x\n",
+ xE[0].u.keyButtonPointer.state);
+
+ if (dev->deviceGrab.grab != NullGrab && dev->deviceGrab.fromPassiveGrab &&
+ (type == KeyPress || type == KeyRelease ||
+ type == DeviceKeyPress || type == DeviceKeyRelease)) {
+ unsigned int state, flags;
+
+ flags = client->xkbClientFlags;
+ state = xkbi->state.compat_grab_mods;
if (flags & XkbPCF_GrabsUseXKBStateMask) {
int group;
- if (flags&XkbPCF_LookupStateWhenGrabbed) {
- group= xkbi->state.group;
- state= xkbi->state.lookup_mods;
+ if (flags & XkbPCF_LookupStateWhenGrabbed) {
+ group = xkbi->state.group;
+ state = xkbi->state.lookup_mods;
}
else {
- state= xkbi->state.grab_mods;
- group= xkbi->state.base_group+xkbi->state.latched_group;
- if ((group<0)||(group>=xkbi->desc->ctrls->num_groups)) {
- group= XkbAdjustGroup(group,xkbi->desc->ctrls);
- }
+ state = xkbi->state.grab_mods;
+ group = xkbi->state.base_group + xkbi->state.latched_group;
+ if (group < 0 || group >= xkbi->desc->ctrls->num_groups)
+ group = XkbAdjustGroup(group, xkbi->desc->ctrls);
}
state = XkbBuildCoreState(state, group);
}
- else if (flags&XkbPCF_LookupStateWhenGrabbed)
- state= xkbi->state.compat_lookup_mods;
- xE[0].u.keyButtonPointer.state= state;
+ else if (flags & XkbPCF_LookupStateWhenGrabbed) {
+ state = xkbi->state.compat_lookup_mods;
+ }
+ xE[0].u.keyButtonPointer.state = state;
}
- button_mask = 1 << xE[0].u.u.detail;
- if (xE[0].u.u.type == ButtonPress &&
- ((xE[0].u.keyButtonPointer.state >> 7) & button_mask) == button_mask &&
- (xkbi->lockedPtrButtons & button_mask) == button_mask) {
- /* If the MouseKeys is pressed, and the "real" mouse is also pressed
- * when the mouse is released, the server does not behave properly.
- * Faking a release of the button here solves the problem.
- */
- DebugF("[xkb] Faking release of button %d\n", xE[0].u.u.detail);
- XkbDDXFakeDeviceButton(xkbi->device, 0, xE[0].u.u.detail);
- }
}
else {
- register CARD8 type;
-
- if (!xkbi)
- return True;
-
- for (i=0;i<nEvents;i++) {
- type= xE[i].u.u.type;
- if ((xkbDebugFlags&0x4)&&
- ((xE[i].u.u.type==KeyPress)||(xE[i].u.u.type==KeyRelease)||
- (xE[i].u.u.type==DeviceKeyPress)||
- (xE[i].u.u.type == DeviceKeyRelease))) {
- DebugF("[xkb] XKbFilterWriteEvents (non-XKB):\n");
- DebugF("[xkb] event= 0x%04x\n",xE[i].u.keyButtonPointer.state);
- DebugF("[xkb] lookup= 0x%02x, grab= 0x%02x\n",xkbi->state.lookup_mods,
- xkbi->state.grab_mods);
- DebugF("[xkb] compat lookup= 0x%02x, grab= 0x%02x\n",
- xkbi->state.compat_lookup_mods,
- xkbi->state.compat_grab_mods);
- }
- if ( (type>=KeyPress)&&(type<=MotionNotify) ) {
- CARD16 old,new;
+ if ((xkbDebugFlags & 0x4) &&
+ (xE[0].u.u.type == KeyPress || xE[0].u.u.type==KeyRelease ||
+ xE[0].u.u.type == DeviceKeyPress ||
+ xE[0].u.u.type == DeviceKeyRelease)) {
+ DebugF("[xkb] XKbFilterWriteEvents (non-XKB):\n");
+ DebugF("[xkb] event= 0x%04x\n",xE[0].u.keyButtonPointer.state);
+ DebugF("[xkb] lookup= 0x%02x, grab= 0x%02x\n",
+ xkbi->state.lookup_mods, xkbi->state.grab_mods);
+ DebugF("[xkb] compat lookup= 0x%02x, grab= 0x%02x\n",
+ xkbi->state.compat_lookup_mods, xkbi->state.compat_grab_mods);
+ }
+ if (type >= KeyPress && type <= MotionNotify) {
+ CARD16 old, new;
- old= xE[i].u.keyButtonPointer.state&(~0x1f00);
- new= xE[i].u.keyButtonPointer.state&0x1F00;
+ old = xE[0].u.keyButtonPointer.state & ~0x1f00;
+ new = xE[0].u.keyButtonPointer.state & 0x1F00;
- if (old==XkbStateFieldFromRec(&xkbi->state))
- new|= xkbi->state.compat_lookup_mods;
- else new|= xkbi->state.compat_grab_mods;
- xE[i].u.keyButtonPointer.state= new;
- }
- else if ((type==EnterNotify)||(type==LeaveNotify)) {
- xE[i].u.enterLeave.state&= 0x1F00;
- xE[i].u.enterLeave.state|= xkbi->state.compat_grab_mods;
- } else if ((type>=DeviceKeyPress)&&(type<=DeviceMotionNotify)) {
- CARD16 old, new;
- deviceKeyButtonPointer *kbp = (deviceKeyButtonPointer*)&xE[i];
- old= kbp->state&(~0x1F00);
- new= kbp->state&0x1F00;
- if (old==XkbStateFieldFromRec(&xkbi->state))
- new|= xkbi->state.compat_lookup_mods;
- else new|= xkbi->state.compat_grab_mods;
- kbp->state= new;
- }
- button_mask = 1 << xE[i].u.u.detail;
- if (type == ButtonPress &&
- ((xE[i].u.keyButtonPointer.state >> 7) & button_mask) == button_mask &&
- (xkbi->lockedPtrButtons & button_mask) == button_mask) {
- DebugF("[xkb] Faking release of button %d\n", xE[i].u.u.detail);
- XkbDDXFakeDeviceButton(xkbi->device, 0, xE[i].u.u.detail);
- } else if (type == DeviceButtonPress &&
- ((((deviceKeyButtonPointer*)&xE[i])->state >> 7) & button_mask) == button_mask &&
- (xkbi->lockedPtrButtons & button_mask) == button_mask) {
- DebugF("[xkb] Faking release of button %d\n", ((deviceKeyButtonPointer*)&xE[i])->state);
- XkbDDXFakeDeviceButton(xkbi->device, 0, ((deviceKeyButtonPointer*)&xE[i])->state);
- }
+ if (old == XkbStateFieldFromRec(&xkbi->state))
+ new |= xkbi->state.compat_lookup_mods;
+ else
+ new |= xkbi->state.compat_grab_mods;
+ xE[0].u.keyButtonPointer.state = new;
}
+ else if (type == EnterNotify || type == LeaveNotify) {
+ xE[0].u.enterLeave.state &= 0x1F00;
+ xE[0].u.enterLeave.state |= xkbi->state.compat_grab_mods;
+ }
+ else if (type >= DeviceKeyPress && type <= DeviceMotionNotify) {
+ CARD16 old, new;
+ deviceKeyButtonPointer *kbp = (deviceKeyButtonPointer*) &xE[0];
+
+ old = kbp->state & ~0x1F00;
+ new = kbp->state & 0x1F00;
+ if (old == XkbStateFieldFromRec(&xkbi->state))
+ new |= xkbi->state.compat_lookup_mods;
+ else
+ new |= xkbi->state.compat_grab_mods;
+ kbp->state = new;
+ }
}
- return True;
}
/***====================================================================***/
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index 86a7a115b..747c913f3 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -505,7 +505,7 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet *rmlvo,
XkbRMLVOSet rmlvo_dflts = { NULL };
if (dev->key || dev->kbdfeed)
- return False;
+ return FALSE;
if (!rmlvo)
{
diff --git a/xkb/xkbPrKeyEv.c b/xkb/xkbPrKeyEv.c
index effb0ea3a..8f6705f9f 100644
--- a/xkb/xkbPrKeyEv.c
+++ b/xkb/xkbPrKeyEv.c
@@ -36,6 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "misc.h"
#include "inputstr.h"
#include "exevents.h"
+#include "eventstr.h"
#include <xkbsrv.h>
#include <ctype.h>
#include "events.h"
@@ -51,59 +52,38 @@ int key;
XkbBehavior behavior;
unsigned ndx;
- xkbi= keyc->xkbInfo;
- key= event->detail.key;
- if (xkbDebugFlags&0x8) {
+ xkbi = keyc->xkbInfo;
+ key = event->detail.key;
+ if (xkbDebugFlags & 0x8)
DebugF("[xkb] XkbPKE: Key %d %s\n",key,(event->type == ET_KeyPress?"down":"up"));
- }
- if ( (xkbi->repeatKey==key) && (event->type== ET_KeyRelease) &&
- ((xkbi->desc->ctrls->enabled_ctrls&XkbRepeatKeysMask)==0) ) {
- AccessXCancelRepeatKey(xkbi,key);
- }
+ if (xkbi->repeatKey == key && event->type== ET_KeyRelease &&
+ !(xkbi->desc->ctrls->enabled_ctrls & XkbRepeatKeysMask))
+ AccessXCancelRepeatKey(xkbi, key);
- behavior= xkbi->desc->server->behaviors[key];
+ behavior = xkbi->desc->server->behaviors[key];
/* The "permanent" flag indicates a hard-wired behavior that occurs */
/* below XKB, such as a key that physically locks. XKB does not */
/* do anything to implement the behavior, but it *does* report that */
/* key is hardwired */
- if ((behavior.type&XkbKB_Permanent)==0) {
+ if (!(behavior.type & XkbKB_Permanent)) {
switch (behavior.type) {
case XkbKB_Default:
- if (event->type == ET_KeyPress &&
- (keyc->down[key>>3] & (1<<(key&7)))) {
- XkbLastRepeatEvent= (pointer)event;
-
- event->type = ET_KeyRelease;
- XkbHandleActions(keybd, keybd, event);
-
- event->type = ET_KeyPress;
- XkbHandleActions(keybd, keybd, event);
- XkbLastRepeatEvent= NULL;
- return;
- }
+ /* Neither of these should happen in practice, but ignore them
+ anyway. */
+ if (event->type == ET_KeyPress && !event->key_repeat &&
+ key_is_down(keybd, key, KEY_PROCESSED))
+ return;
else if (event->type == ET_KeyRelease &&
- (!(keyc->down[key>>3]&(1<<(key&7))))) {
- XkbLastRepeatEvent= (pointer)event;
- event->type = ET_KeyPress;
- XkbHandleActions(keybd, keybd, event);
- event->type = ET_KeyRelease;
- XkbHandleActions(keybd, keybd, event);
- XkbLastRepeatEvent= NULL;
- return;
- }
+ !key_is_down(keybd, key, KEY_PROCESSED))
+ return;
break;
case XkbKB_Lock:
- if (event->type == ET_KeyRelease) {
+ if (event->type == ET_KeyRelease)
return;
- }
- else {
- int bit= 1<<(key&7);
- if ( keyc->down[key>>3]&bit ) {
- event->type = ET_KeyRelease;
- }
- }
+ else if (key_is_down(keybd, key, KEY_PROCESSED))
+ event->type = ET_KeyRelease;
break;
case XkbKB_RadioGroup:
ndx= (behavior.data&(~XkbKB_RGAllowNone));
@@ -172,9 +152,6 @@ ProcessKeyboardEvent(InternalEvent *ev, DeviceIntPtr keybd)
int is_press = (event->type == ET_KeyPress);
int is_release = (event->type == ET_KeyRelease);
- if (keyc)
- xkbi = keyc->xkbInfo;
-
/* We're only interested in key events. */
if (!is_press && !is_release) {
UNWRAP_PROCESS_INPUT_PROC(keybd, xkb_priv, backup_proc);
@@ -184,6 +161,8 @@ ProcessKeyboardEvent(InternalEvent *ev, DeviceIntPtr keybd)
return;
}
+ xkbi = keyc->xkbInfo;
+
/* If AccessX filters are active, then pass it through to
* AccessXFilter{Press,Release}Event; else, punt to
* XkbProcessKeyboardEvent.
@@ -195,8 +174,9 @@ ProcessKeyboardEvent(InternalEvent *ev, DeviceIntPtr keybd)
AccessXFilterPressEvent(event, keybd);
else if (is_release)
AccessXFilterReleaseEvent(event, keybd);
-
- } else {
+ return;
+ }
+ else {
XkbProcessKeyboardEvent(event, keybd);
}
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 0bd41cd34..63b1e31c7 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -62,6 +62,7 @@ DEALINGS IN THE SOFTWARE.
#include <X11/keysym.h>
#include "misc.h"
#include "inputstr.h"
+#include "eventstr.h"
#define XKBSRV_NEED_FILE_FUNCS
#include <xkbsrv.h>
@@ -183,13 +184,13 @@ register unsigned tmp;
case XkbSA_SetMods: case XkbSA_LatchMods: case XkbSA_LockMods:
if (act->mods.flags&XkbSA_UseModMapMods)
act->mods.real_mods= act->mods.mask= mods;
- if ((tmp= act->mods.vmods)!=0)
+ if ((tmp= XkbModActionVMods(&act->mods))!=0)
act->mods.mask|= XkbMaskForVMask(xkb,tmp);
break;
case XkbSA_ISOLock:
if (act->iso.flags&XkbSA_UseModMapMods)
act->iso.real_mods= act->iso.mask= mods;
- if ((tmp= act->iso.vmods)!=0)
+ if ((tmp= XkbModActionVMods(&act->iso))!=0)
act->iso.mask|= XkbMaskForVMask(xkb,tmp);
break;
}
@@ -2117,32 +2118,3 @@ XkbCopyDeviceKeymap(DeviceIntPtr dst, DeviceIntPtr src)
return ret;
}
-int
-XkbGetKeysym(DeviceIntPtr dev, DeviceEvent *event)
-{
- XkbDescPtr xkb = dev->key->xkbInfo->desc;
- XkbKeyTypePtr kt;
- int group;
- int i, level = 0;
- int modmask;
-
- group = event->group.base + event->group.latched + event->group.locked;
-
- if (group >= xkb->ctrls->num_groups)
- group = XkbAdjustGroup(group, xkb->ctrls);
-
- modmask = event->mods.base | event->mods.latched; /* don't care about
- locked mods */
- kt = XkbKeyKeyType(xkb, event->detail.key, group);
-
- for (i = 0; i < kt->map_count; i++)
- {
- if (kt->map[i].mods.mask == modmask)
- {
- level = kt->map[i].level;
- break;
- }
- }
-
- return XkbKeySymEntry(xkb, event->detail.key, level, group);
-}
diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index aa660dfbe..52ef6362c 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -34,6 +34,7 @@
#include <X11/Xos.h>
#include <X11/Xfuncs.h>
+#include <X11/extensions/XKMformat.h>
#include <X11/X.h>
#include <X11/keysym.h>
diff --git a/xkb/xkbout.c b/xkb/xkbout.c
index 8913d8ed2..b1c30d052 100644
--- a/xkb/xkbout.c
+++ b/xkb/xkbout.c
@@ -36,6 +36,7 @@
#include <X11/X.h>
#include <X11/keysym.h>
#include <X11/Xproto.h>
+#include <X11/extensions/XKMformat.h>
#include "misc.h"
#include "inputstr.h"
#include "dix.h"
diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c
index 836d47e28..95ad01378 100644
--- a/xkb/xkbtext.c
+++ b/xkb/xkbtext.c
@@ -36,6 +36,7 @@
#include <X11/X.h>
#include <X11/Xproto.h>
+#include <X11/extensions/XKMformat.h>
#include "misc.h"
#include "inputstr.h"
#include "dix.h"
@@ -682,7 +683,7 @@ XkbModAction * act;
unsigned tmp;
act= &action->mods;
- tmp= act->vmods;
+ tmp= XkbModActionVMods(act);
TryCopyStr(buf,"modifiers=",sz);
if (act->flags&XkbSA_UseModMapMods)
TryCopyStr(buf,"modMapMods",sz);
@@ -735,8 +736,8 @@ int x,y;
char tbuf[32];
act= &action->ptr;
- x= act->x;
- y= act->y;
+ x= XkbPtrActionX(act);
+ y= XkbPtrActionY(act);
if ((act->flags&XkbSA_MoveAbsoluteX)||(x<0))
sprintf(tbuf,"x=%d",x);
else sprintf(tbuf,"x=+%d",x);
@@ -822,7 +823,7 @@ char tbuf[64];
}
else {
unsigned tmp;
- tmp= act->vmods;
+ tmp= XkbModActionVMods(act);
TryCopyStr(buf,"modifiers=",sz);
if (act->flags&XkbSA_UseModMapMods)
TryCopyStr(buf,"modMapMods",sz);
@@ -894,7 +895,7 @@ unsigned tmp;
char tbuf[32];
act= &action->ctrls;
- tmp= act->ctrls;
+ tmp= XkbActionCtrls(act);
TryCopyStr(buf,"controls=",sz);
if (tmp==0)
TryCopyStr(buf,"none",sz);
@@ -1010,8 +1011,8 @@ unsigned vmods,vmods_mask;
act= &action->redirect;
kc= act->new_key;
- vmods= act->vmods;
- vmods_mask= act->vmods_mask;
+ vmods= XkbSARedirectVMods(act);
+ vmods_mask= XkbSARedirectVModsMask(act);
if (xkb && xkb->names && xkb->names->keys && (kc<=xkb->max_key_code) &&
(xkb->names->keys[kc].name[0]!='\0')) {
char *kn;
diff --git a/xkb/xkmread.c b/xkb/xkmread.c
index 206c40382..6623d1bf0 100644
--- a/xkb/xkmread.c
+++ b/xkb/xkmread.c
@@ -36,6 +36,7 @@
#include <X11/X.h>
#include <X11/Xproto.h>
#include <X11/keysym.h>
+#include <X11/extensions/XKMformat.h>
#include "misc.h"
#include "inputstr.h"
#include "xkbstr.h"
@@ -457,7 +458,8 @@ XkbAction *act;
act->mods.flags = wire.actionData[0];
act->mods.mask = wire.actionData[1];
act->mods.real_mods = wire.actionData[2];
- act->mods.vmods = (wire.actionData[3] << 8) | wire.actionData[4];
+ act->mods.vmods1 = wire.actionData[3];
+ act->mods.vmods2 = wire.actionData[4];
break;
case XkbSA_SetGroup:
case XkbSA_LatchGroup:
@@ -467,8 +469,10 @@ XkbAction *act;
break;
case XkbSA_MovePtr:
act->ptr.flags = wire.actionData[0];
- act->ptr.x = (wire.actionData[1] << 8) | wire.actionData[2];
- act->ptr.y = (wire.actionData[3] << 8) | wire.actionData[4];
+ act->ptr.high_XXX = wire.actionData[1];
+ act->ptr.low_XXX = wire.actionData[2];
+ act->ptr.high_YYY = wire.actionData[3];
+ act->ptr.low_YYY = wire.actionData[4];
break;
case XkbSA_PtrBtn:
case XkbSA_LockPtrBtn:
@@ -494,7 +498,8 @@ XkbAction *act;
act->iso.real_mods = wire.actionData[2];
act->iso.group_XXX = wire.actionData[3];
act->iso.affect = wire.actionData[4];
- act->iso.vmods = (wire.actionData[5] << 8) | wire.actionData[6];
+ act->iso.vmods1 = wire.actionData[5];
+ act->iso.vmods2 = wire.actionData[6];
break;
case XkbSA_SwitchScreen:
act->screen.flags = wire.actionData[0];
@@ -503,19 +508,19 @@ XkbAction *act;
case XkbSA_SetControls:
case XkbSA_LockControls:
act->ctrls.flags = wire.actionData[0];
- act->ctrls.ctrls = (wire.actionData[1] << 24) | \
- (wire.actionData[2] << 16) | \
- (wire.actionData[3] << 8) | \
- wire.actionData[4];
+ act->ctrls.ctrls3 = wire.actionData[1];
+ act->ctrls.ctrls2 = wire.actionData[2];
+ act->ctrls.ctrls1 = wire.actionData[3];
+ act->ctrls.ctrls0 = wire.actionData[4];
break;
case XkbSA_RedirectKey:
act->redirect.new_key = wire.actionData[0];
act->redirect.mods_mask = wire.actionData[1];
act->redirect.mods = wire.actionData[2];
- act->redirect.vmods_mask = (wire.actionData[3] << 8) | \
- wire.actionData[4];
- act->redirect.vmods = (wire.actionData[5] << 8) | \
- wire.actionData[6];
+ act->redirect.vmods_mask0 = wire.actionData[3];
+ act->redirect.vmods_mask1 = wire.actionData[4];
+ act->redirect.vmods0 = wire.actionData[4];
+ act->redirect.vmods1 = wire.actionData[5];
break;
case XkbSA_DeviceValuator:
act->devval.device = wire.actionData[0];
diff --git a/xorg-server.pc.in b/xorg-server.pc.in
index 7547aa31b..3d58dabbf 100644
--- a/xorg-server.pc.in
+++ b/xorg-server.pc.in
@@ -9,7 +9,6 @@ abi_ansic=@abi_ansic@
abi_videodrv=@abi_videodrv@
abi_xinput=@abi_xinput@
abi_extension=@abi_extension@
-abi_font=@abi_font@
Name: xorg-server
Description: Modular X.Org X Server