diff options
Diffstat (limited to 'xorg-server')
83 files changed, 5525 insertions, 4891 deletions
diff --git a/xorg-server/hw/dmx/dmxinit.c b/xorg-server/hw/dmx/dmxinit.c index 09e3d74ea..5804353fb 100644 --- a/xorg-server/hw/dmx/dmxinit.c +++ b/xorg-server/hw/dmx/dmxinit.c @@ -905,7 +905,7 @@ OsVendorInit(void) * two routines mentioned here, as well as by others) to use the * referenced routine instead of \a vfprintf().) */ void -OsVendorFatalError(void) +OsVendorFatalError(const char *f, va_list args) { } diff --git a/xorg-server/hw/dmx/dmxlog.c b/xorg-server/hw/dmx/dmxlog.c index b56bb93ed..33aee590a 100644 --- a/xorg-server/hw/dmx/dmxlog.c +++ b/xorg-server/hw/dmx/dmxlog.c @@ -110,9 +110,6 @@ VFatalError(const char *format, va_list args) { VErrorF(format, args); ErrorF("\n"); -#ifdef DDXOSFATALERROR - OsVendorFatalError(); -#endif AbortServer(); /*NOTREACHED*/} #endif diff --git a/xorg-server/hw/kdrive/src/kdrive.c b/xorg-server/hw/kdrive/src/kdrive.c index f65ab96bc..ecdae1921 100644 --- a/xorg-server/hw/kdrive/src/kdrive.c +++ b/xorg-server/hw/kdrive/src/kdrive.c @@ -1104,7 +1104,7 @@ KdInitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) } void -OsVendorFatalError(void) +OsVendorFatalError(const char *f, va_list args) { } diff --git a/xorg-server/hw/vfb/InitOutput.c b/xorg-server/hw/vfb/InitOutput.c index 2d679a559..e2cd96cdc 100644 --- a/xorg-server/hw/vfb/InitOutput.c +++ b/xorg-server/hw/vfb/InitOutput.c @@ -219,7 +219,7 @@ OsVendorInit(void) } void -OsVendorFatalError(void) +OsVendorFatalError(const char *f, va_list args) { } diff --git a/xorg-server/hw/xfree86/common/xf86Init.c b/xorg-server/hw/xfree86/common/xf86Init.c index 0974893d3..2a7d0a37e 100644 --- a/xorg-server/hw/xfree86/common/xf86Init.c +++ b/xorg-server/hw/xfree86/common/xf86Init.c @@ -1053,7 +1053,7 @@ AbortDDX(enum ExitCode error) } void -OsVendorFatalError(void) +OsVendorFatalError(const char *f, va_list args) { #ifdef VENDORSUPPORT ErrorF("\nPlease refer to your Operating System Vendor support pages\n" diff --git a/xorg-server/hw/xfree86/exa/man/exa.man b/xorg-server/hw/xfree86/exa/man/exa.man index 30d01824d..42a8de31d 100644 --- a/xorg-server/hw/xfree86/exa/man/exa.man +++ b/xorg-server/hw/xfree86/exa/man/exa.man @@ -14,7 +14,7 @@ The .B EXA architecture is designed to make accelerating the Render extension simple and efficient, and results in various performance tradeoffs compared to XAA. Some -__xconfigfile__ options are available for debugging performance issues or +xorg.conf options are available for debugging performance issues or driver rendering problems. They are not intended for general use. .TP .BI "Option \*qEXANoComposite\*q \*q" boolean \*q @@ -36,7 +36,7 @@ default is intended to be the best performing one for general use, though others may help with specific use cases. Available options include \*qalways\*q, \*qgreedy\*q, and \*qsmart\*q. Default: always. .SH "SEE ALSO" -.BR __xservername__ (__appmansuffix__), -.BR __xconfigfile__(__filemansuffix__). +.BR Xorg (__appmansuffix__), +.BR xorg.conf(__filemansuffix__). .SH AUTHORS Authors include: Keith Packard, Eric Anholt, Zack Rusin, and Michel D\(:anzer diff --git a/xorg-server/hw/xfree86/fbdevhw/man/fbdevhw.man b/xorg-server/hw/xfree86/fbdevhw/man/fbdevhw.man index fe5d1e17b..fa46df08f 100644 --- a/xorg-server/hw/xfree86/fbdevhw/man/fbdevhw.man +++ b/xorg-server/hw/xfree86/fbdevhw/man/fbdevhw.man @@ -14,7 +14,7 @@ fbdev(__drivermansuffix__) is a non-accelerated driver which runs on top of the fbdevhw module. fbdevhw can be used by other drivers too, this is usually activated with `Option "UseFBDev"' in the device section. .SH "SEE ALSO" -__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), +Xorg(__appmansuffix__), xorg.conf(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__), fbdev(__drivermansuffix__) .SH AUTHORS diff --git a/xorg-server/hw/xfree86/man/Xorg.man b/xorg-server/hw/xfree86/man/Xorg.man index 2fa72d672..0cd5a1068 100644 --- a/xorg-server/hw/xfree86/man/Xorg.man +++ b/xorg-server/hw/xfree86/man/Xorg.man @@ -1,16 +1,16 @@ .\" $XdotOrg: xserver/xorg/hw/xfree86/doc/man/Xorg.man.pre,v 1.3 2005/07/04 18:41:01 ajax Exp $ .\" shorthand for double quote that works everywhere. .ds q \N'34' -.TH __xservername__ __appmansuffix__ __vendorversion__ +.TH Xorg __appmansuffix__ __vendorversion__ .SH NAME -__xservername__ - X11R7 X server +Xorg - X11R7 X server .SH SYNOPSIS -.B __xservername__ +.B Xorg .RI [\fB:\fP display ] .RI [ option .IR ... ] .SH DESCRIPTION -.B __xservername__ +.B Xorg is a full featured X server that was originally designed for UNIX and UNIX-like operating systems running on Intel x86 hardware. It now runs on a wider range of hardware and OS platforms. @@ -24,7 +24,7 @@ by Thomas Roell which was contributed to X11R5 by Snitily Graphics Consulting Service. .SH PLATFORMS .PP -.B __xservername__ +.B Xorg operates under a wide range of operating systems and hardware platforms. The Intel x86 (IA32) architecture is the most widely supported hardware platform. Other hardware platforms include Compaq Alpha, Intel IA64, AMD64, @@ -37,7 +37,7 @@ Xquartz(__appmansuffix__) X server. Win32/Cygwin is supported with the XWin(__appmansuffix__) X server. .PP .SH "NETWORK CONNECTIONS" -.B __xservername__ +.B Xorg supports connections made using the following reliable byte-streams: .TP 4 @@ -47,7 +47,7 @@ On some System V platforms, the "local" connection types also include STREAMS pipes, named pipes, and some other mechanisms. .TP 4 .I TCP\/IP -.B __xservername__ +.B Xorg listens on port .RI 6000+ n , where @@ -108,10 +108,10 @@ file. If you use xdm(1), the definitions should be early on in the .I __projectroot__/lib/X11/xdm/Xsession script. .SH OPTIONS -.B __xservername__ +.B Xorg supports several mechanisms for supplying/obtaining configuration and run-time parameters: command line options, environment variables, the -__xconfigfile__(__filemansuffix__) configuration files, auto-detection, and +xorg.conf(__filemansuffix__) configuration files, auto-detection, and fallback defaults. When the same information is supplied in more than one way, the highest precedence mechanism is used. The list of mechanisms is ordered from highest precedence to lowest. Note that not all parameters @@ -119,21 +119,21 @@ can be supplied via all methods. The available command line options and environment variables (and some defaults) are described here and in the Xserver(__appmansuffix__) manual page. Most configuration file parameters, with their defaults, are described in the -__xconfigfile__(__filemansuffix__) manual page. Driver and module specific +xorg.conf(__filemansuffix__) manual page. Driver and module specific configuration parameters are described in the relevant driver or module manual page. .PP In addition to the normal server options described in the Xserver(__appmansuffix__) manual page, -.B __xservername__ +.B Xorg accepts the following command line switches: .TP 8 .BI vt XX .I XX specifies the Virtual Terminal device number which -.B __xservername__ +.B Xorg will use. Without this option, -.B __xservername__ +.B Xorg 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, OpenSolaris, SVR3, and SVR4. @@ -142,14 +142,14 @@ as Linux, BSD, OpenSolaris, SVR3, and SVR4. Allow the server to start up even if the mouse device can't be opened or initialised. This is equivalent to the .B AllowMouseOpenFail -__xconfigfile__(__filemansuffix__) file option. +xorg.conf(__filemansuffix__) file option. .TP 8 .B \-allowNonLocalXvidtune Make the VidMode extension available to remote clients. This allows the xvidtune client to connect from another host. This is equivalent to the .B AllowNonLocalXvidtune -__xconfigfile__(__filemansuffix__) file option. By default non-local +xorg.conf(__filemansuffix__) file option. By default non-local connections are not allowed. .TP 8 .BI \-bgamma " value" @@ -187,9 +187,9 @@ config directory search path for all other users. .TP 8 .B \-configure When this option is specified, the -.B __xservername__ +.B Xorg server loads all video driver modules, probes for available hardware, -and writes out an initial __xconfigfile__(__filemansuffix__) file based on +and writes out an initial xorg.conf(__filemansuffix__) file based on what was detected. This option currently has some problems on some platforms, but in most cases it is a good way to bootstrap the configuration process. This option is only available when the server @@ -209,7 +209,7 @@ Disable the parts of the VidMode extension (used by the xvidtune client) that can be used to change the video modes. This is equivalent to the .B DisableVidModeExtension -__xconfigfile__(__filemansuffix__) file option. +xorg.conf(__filemansuffix__) file option. .TP 8 .B \-fbbpp \fIn\fP Sets the number of framebuffer bits per pixel. You should only set this @@ -249,7 +249,7 @@ options. .TP 8 .B \-ignoreABI The -.B __xservername__ +.B Xorg server checks the ABI revision levels of each module that it loads. It will normally refuse to load modules with ABI revisions that are newer than the server's. This is because such modules might use interfaces @@ -276,7 +276,7 @@ This option is only useful when debugging the server. Not all platforms support (or can use) this option. .TP 8 .BI \-keyboard " keyboard-name" -Use the __xconfigfile__(__filemansuffix__) file +Use the xorg.conf(__filemansuffix__) file .B InputDevice section called .I keyboard-name @@ -288,7 +288,7 @@ section and this option, the first relevant section is used for the core keyboard. .TP 8 .BI \-layout " layout-name" -Use the __xconfigfile__(__filemansuffix__) file +Use the xorg.conf(__filemansuffix__) file .B Layout section called .IR layout-name . @@ -300,20 +300,20 @@ section is used. Use the file called .I filename as the -.B __xservername__ +.B Xorg server log file. The default log file is -.BI __logdir__/__xservername__. n .log +.BI __logdir__/Xorg. n .log on most platforms, where .I n is the display number of the -.B __xservername__ +.B Xorg server. The default may be in a different directory on some platforms. This option is only available when the server is run as root (i.e, with real-uid 0). .TP 8 .BR \-logverbose " [\fIn\fP]" Sets the verbosity level for information printed to the -.B __xservername__ +.B Xorg server log file. If the .I n value isn't supplied, each occurrence of this option increments the log @@ -327,7 +327,7 @@ Set the module search path to .IR searchpath . .I searchpath is a comma separated list of directories to search for -.B __xservername__ +.B Xorg server modules. This option is only available when the server is run as root (i.e, with real-uid 0). .TP 8 @@ -345,16 +345,16 @@ reason to use this option. Some client applications don't like this pixmap format, even though it is a perfectly legal format. This is equivalent to the .B Pixmap -__xconfigfile__(__filemansuffix__) file option. +xorg.conf(__filemansuffix__) file option. .TP 8 .B \-pixmap32 Set the internal pixmap format for depth 24 pixmaps to 32 bits per pixel. This is usually the default. This is equivalent to the .B Pixmap -__xconfigfile__(__filemansuffix__) file option. +xorg.conf(__filemansuffix__) file option. .TP 8 .BI \-pointer " pointer-name" -Use the __xconfigfile__(__filemansuffix__) file +Use the xorg.conf(__filemansuffix__) file .B InputDevice section called .I pointer-name @@ -384,7 +384,7 @@ options. Share virtual terminals with another X server, if supported by the OS. .TP 8 .BI \-screen " screen-name" -Use the __xconfigfile__(__filemansuffix__) file +Use the xorg.conf(__filemansuffix__) file .B Screen section called .IR screen-name . @@ -434,7 +434,7 @@ support. .SH "KEYBOARD" .PP The -.B __xservername__ +.B Xorg server is normally configured to recognize various special combinations of key presses that instruct the server to perform some action, rather than just sending the key press event to a client application. These actions @@ -448,7 +448,7 @@ keymap. Immediately kills the server -- no questions asked. It can be disabled by setting the .B DontZap -__xconfigfile__(__filemansuffix__) file option to a TRUE value. +xorg.conf(__filemansuffix__) file option to a TRUE value. .PP .RS 8 It should be noted that zapping is triggered by the @@ -462,43 +462,43 @@ but can be enabled with the XKB option Change video mode to next one specified in the configuration file. This can be disabled with the .B DontZoom -__xconfigfile__(__filemansuffix__) file option. +xorg.conf(__filemansuffix__) file option. .TP 8 .B Ctrl+Alt+Keypad-Minus Change video mode to previous one specified in the configuration file. This can be disabled with the .B DontZoom -__xconfigfile__(__filemansuffix__) file option. +xorg.conf(__filemansuffix__) file option. .TP 8 .B Ctrl+Alt+F1...F12 For systems with virtual terminal support, these keystroke combinations are used to switch to virtual terminals 1 through 12, respectively. This can be disabled with the .B DontVTSwitch -__xconfigfile__(__filemansuffix__) file option. +xorg.conf(__filemansuffix__) file option. .SH CONFIGURATION -.B __xservername__ +.B Xorg typically uses a configuration file called -.B __xconfigfile__ +.B xorg.conf and configuration files with the suffix .I .conf in a directory called .B __xconfigdir__ for its initial setup. -Refer to the __xconfigfile__(__filemansuffix__) manual page for information +Refer to the xorg.conf(__filemansuffix__) manual page for information about the format of this file. .PP -.B __xservername__ +.B Xorg has a mechanism for automatically generating a built-in configuration at run-time when no -.B __xconfigfile__ +.B xorg.conf file or .B __xconfigdir__ files are present. The current version of this automatic configuration mechanism works in two ways. .PP The first is via enhancements that have made many components of the -.B __xconfigfile__ +.B xorg.conf file optional. This means that information that can be probed or reasonably deduced doesn't need to be specified explicitly, greatly reducing the amount of built-in configuration information that needs to @@ -506,33 +506,33 @@ be generated at run-time. .PP The second is to have "safe" fallbacks for most configuration information. This maximises the likelihood that the -.B __xservername__ +.B Xorg server will start up in some usable configuration even when information about the specific hardware is not available. .PP -The automatic configuration support for __xservername__ is work in progress. +The automatic configuration support for Xorg is work in progress. It is currently aimed at the most popular hardware and software platforms -supported by __xservername__. Enhancements are planned for future releases. +supported by Xorg. Enhancements are planned for future releases. .SH FILES The -.B __xservername__ +.B Xorg server config files can be found in a range of locations. These are -documented fully in the __xconfigfile__(__filemansuffix__) manual page. The +documented fully in the xorg.conf(__filemansuffix__) manual page. The most commonly used locations are shown here. .TP 30 -.B /etc/X11/__xconfigfile__ +.B /etc/X11/xorg.conf Server configuration file. .TP 30 -.B /etc/X11/__xconfigfile__-4 +.B /etc/X11/xorg.conf-4 Server configuration file. .TP 30 -.B /etc/__xconfigfile__ +.B /etc/xorg.conf Server configuration file. .TP 30 -.B __projectroot__/etc/__xconfigfile__ +.B __projectroot__/etc/xorg.conf Server configuration file. .TP 30 -.B __projectroot__/lib/X11/__xconfigfile__ +.B __projectroot__/lib/X11/xorg.conf Server configuration file. .TP 30 .B /etc/X11/__xconfigdir__ @@ -550,7 +550,7 @@ Server configuration directory. .B __projectroot__/lib/X11/__xconfigdir__ Server configuration directory. .TP 30 -.BI __logdir__/__xservername__. n .log +.BI __logdir__/Xorg. n .log Server log file for display .IR n . .TP 30 @@ -580,7 +580,7 @@ Initial access control list for display .IR n . .SH "SEE ALSO" X(__miscmansuffix__), Xserver(__appmansuffix__), xdm(__appmansuffix__), xinit(__appmansuffix__), -__xconfigfile__(__filemansuffix__), xvidtune(__appmansuffix__), +xorg.conf(__filemansuffix__), xvidtune(__appmansuffix__), xkeyboard-config (__miscmansuffix__), apm(__drivermansuffix__), ati(__drivermansuffix__), @@ -623,15 +623,15 @@ Web site .IR <http://www.x.org> . .SH AUTHORS -__xservername__ has many contributors world wide. The names of most of them +Xorg has many contributors world wide. The names of most of them can be found in the documentation, ChangeLog files in the source tree, and in the actual source code. .PP -__xservername__ was originally based on XFree86 4.4rc2. +Xorg was originally based on XFree86 4.4rc2. That was originally based on \fIX386 1.2\fP by Thomas Roell, which was contributed to the then X Consortium's X11R5 distribution by SGCS. .PP -__xservername__ is released by the X.Org Foundation. +Xorg is released by the X.Org Foundation. .PP The project that became XFree86 was originally founded in 1992 by David Dawes, Glenn Lai, Jim Tsillas and David Wexelblat. @@ -671,7 +671,7 @@ Orest Zborowski \fIorestz@eskimo.com\fP .fi .RE .PP -__xservername__ source is available from the FTP server +Xorg source is available from the FTP server \fI<ftp://ftp.x.org/>\fP, and from the X.Org server \fI<http://gitweb.freedesktop.org/>\fP. Documentation and other information can be found from the X.Org web site @@ -679,10 +679,10 @@ information can be found from the X.Org web site .SH LEGAL .PP -.B __xservername__ +.B Xorg is copyright software, provided under licenses that permit modification and redistribution in source and binary form without fee. -.B __xservername__ is copyright by numerous authors and +.B Xorg is copyright by numerous authors and contributors from around the world. Licensing information can be found at .IR <http://www.x.org> . diff --git a/xorg-server/hw/xfree86/man/xorg.conf.man b/xorg-server/hw/xfree86/man/xorg.conf.man index c1b3c4f2d..72e57136c 100644 --- a/xorg-server/hw/xfree86/man/xorg.conf.man +++ b/xorg-server/hw/xfree86/man/xorg.conf.man @@ -1,35 +1,35 @@ .\" shorthand for double quote that works everywhere. .ds q \N'34' -.TH __xconfigfile__ __filemansuffix__ __vendorversion__ +.TH xorg.conf __filemansuffix__ __vendorversion__ .SH NAME -__xconfigfile__, __xconfigdir__ \- configuration files for -__xservername__ X server +xorg.conf, __xconfigdir__ \- configuration files for +Xorg X server .SH INTRODUCTION -.B __xservername__ +.B Xorg supports several mechanisms for supplying/obtaining configuration and run-time parameters: command line options, environment variables, the -__xconfigfile__ and __xconfigdir__ configuration files, auto-detection, +xorg.conf and __xconfigdir__ configuration files, auto-detection, and fallback defaults. When the same information is supplied in more than one way, the highest precedence mechanism is used. The list of mechanisms is ordered from highest precedence to lowest. Note that not all parameters can be supplied via all methods. The available command line options and environment variables (and some defaults) are described in the Xserver(__appmansuffix__) and -__xservername__(__appmansuffix__) manual pages. Most configuration file +Xorg(__appmansuffix__) manual pages. Most configuration file parameters, with their defaults, are described below. Driver and module specific configuration parameters are described in the relevant driver or module manual page. .SH DESCRIPTION -.B __xservername__ +.B Xorg uses a configuration file called -.I __xconfigfile__ +.I xorg.conf and files ending in the suffix .I .conf from the directory .I __xconfigdir__ for its initial setup. The -.I __xconfigfile__ +.I xorg.conf configuration file is searched for in the following places when the server is started as a normal user: .PP @@ -39,12 +39,12 @@ server is started as a normal user: .IR __projectroot__/etc/X11/ <cmdline> .IB /etc/X11/ $XORGCONFIG .IB __projectroot__/etc/X11/ $XORGCONFIG -.I /etc/X11/__xconfigfile__ -.I /etc/__xconfigfile__ -.IR __projectroot__/etc/X11/__xconfigfile__. <hostname> -.I __projectroot__/etc/X11/__xconfigfile__ -.IR __projectroot__/lib/X11/__xconfigfile__. <hostname> -.I __projectroot__/lib/X11/__xconfigfile__ +.I /etc/X11/xorg.conf +.I /etc/xorg.conf +.IR __projectroot__/etc/X11/xorg.conf. <hostname> +.I __projectroot__/etc/X11/xorg.conf +.IR __projectroot__/lib/X11/xorg.conf. <hostname> +.I __projectroot__/lib/X11/xorg.conf .fi .RE .PP @@ -60,7 +60,7 @@ environment variable, and is the machine's hostname as reported by .BR gethostname (__libmansuffix__). .PP -When the __xservername__ server is started by the \(lqroot\(rq user, the config file +When the Xorg server is started by the \(lqroot\(rq user, the config file search locations are as follows: .PP .RS 4 @@ -71,12 +71,12 @@ search locations are as follows: .B $XORGCONFIG .IB /etc/X11/ $XORGCONFIG .IB __projectroot__/etc/X11/ $XORGCONFIG -.I /etc/X11/__xconfigfile__ -.I /etc/__xconfigfile__ -.IR __projectroot__/etc/X11/__xconfigfile__. <hostname> -.I __projectroot__/etc/X11/__xconfigfile__ -.IR __projectroot__/lib/X11/__xconfigfile__. <hostname> -.I __projectroot__/lib/X11/__xconfigfile__ +.I /etc/X11/xorg.conf +.I /etc/xorg.conf +.IR __projectroot__/etc/X11/xorg.conf. <hostname> +.I __projectroot__/etc/X11/xorg.conf +.IR __projectroot__/lib/X11/xorg.conf. <hostname> +.I __projectroot__/lib/X11/xorg.conf .fi .RE .PP @@ -113,7 +113,7 @@ is a relative path (with no \(lq..\(rq components) specified with the .B \-configdir command line option. .PP -When the __xservername__ server is started by the \(lqroot\(rq user, the +When the Xorg server is started by the \(lqroot\(rq user, the config directory search locations are as follows: .PP .RS 4 @@ -145,7 +145,7 @@ These files are found in the following directories: .RE .PP The -.I __xconfigfile__ +.I xorg.conf and .I __xconfigdir__ files are composed of a number of sections which may be present in any order, @@ -331,7 +331,7 @@ section is used to specify some path names required by the server. Some of these paths can also be set from the command line (see .BR Xserver (__appmansuffix__) and -.BR __xservername__ (__appmansuffix__)). +.BR Xorg (__appmansuffix__)). The command line settings override the values specified in the config file. The @@ -342,7 +342,7 @@ The entries that can appear in this section are: .TP 7 .BI "FontPath \*q" path \*q sets the search path for fonts. -This path is a comma separated list of font path elements which the __xservername__ +This path is a comma separated list of font path elements which the Xorg server searches for font databases. Multiple .B FontPath @@ -426,8 +426,8 @@ font path when the server starts up. .RE .TP 7 .BI "ModulePath \*q" path \*q -sets the search path for loadable __xservername__ server modules. -This path is a comma separated list of directories which the __xservername__ server +sets the search path for loadable Xorg server modules. +This path is a comma separated list of directories which the Xorg server searches for loadable modules loading in the order specified. Multiple .B ModulePath @@ -441,17 +441,17 @@ __modulepath__ .ig .TP 7 .BI "LogFile \*q" path \*q -sets the name of the __xservername__ server log file. +sets the name of the Xorg server log file. The default log file name is .PP .RS 11 -.RI __logdir__/__xservername__. <n> .log +.RI __logdir__/Xorg. <n> .log .RE .PP .RS 7 where .I <n> -is the display number for the __xservername__ server. +is the display number for the Xorg server. .. .TP 7 .BI "XkbDir \*q" path \*q @@ -466,7 +466,7 @@ __xkbdir__ In addition to options specific to this section (described below), the .B ServerFlags section is used to specify some global -__xservername__ server options. +Xorg server options. All of the entries in this section are .BR Options , although for compatibility purposes some of the old style entries are @@ -498,20 +498,20 @@ section to use in the absence of the command line option. .TP 7 .BI "Option \*qNoTrapSignals\*q \*q" boolean \*q -This prevents the __xservername__ server from trapping a range of unexpected fatal +This prevents the Xorg server from trapping a range of unexpected fatal signals and exiting cleanly. -Instead, the __xservername__ server will die and drop core where the fault occurred. -The default behaviour is for the __xservername__ server to exit cleanly, but still drop a +Instead, the Xorg server will die and drop core where the fault occurred. +The default behaviour is for the Xorg server to exit cleanly, but still drop a core file. -In general you never want to use this option unless you are debugging an __xservername__ +In general you never want to use this option unless you are debugging an Xorg server problem and know how to deal with the consequences. .TP 7 .BI "Option \*qUseSIGIO\*q \*q" boolean \*q -This controls whether the __xservername__ server requests that events from +This controls whether the Xorg server requests that events from input devices be reported via a SIGIO signal handler (also known as SIGPOLL on some platforms), or only reported via the standard select(3) loop. The default behaviour is platform specific. In general you do not want to -use this option unless you are debugging the __xservername__ server, or +use this option unless you are debugging the Xorg server, or working around a specific bug until it is fixed, and understand the consequences. .TP 7 @@ -531,7 +531,7 @@ Default: off. This disallows the use of the .B Terminate_Server XKB action (usually on Ctrl+Alt+Backspace, depending on XKB options). -This action is normally used to terminate the __xservername__ server. +This action is normally used to terminate the Xorg server. When this option is enabled, the action has no effect. Default: off. .TP 7 @@ -568,7 +568,7 @@ sets the inactivity timeout for the phase of the screensaver. .I time is in minutes. -This is equivalent to the __xservername__ server's +This is equivalent to the Xorg server's .B \-s flag, and the value can be changed at run\-time with .BR xset(__appmansuffix__). @@ -679,9 +679,9 @@ Unset by default. .SH "MODULE SECTION" The .B Module -section is used to specify which __xservername__ server modules should be loaded. -This section is ignored when the __xservername__ server is built in static form. -The type of modules normally loaded in this section are __xservername__ server +section is used to specify which Xorg server modules should be loaded. +This section is ignored when the Xorg server is built in static form. +The type of modules normally loaded in this section are Xorg server extension modules. Most other module types are loaded automatically when they are needed via other mechanisms. @@ -1324,14 +1324,14 @@ recommends that you do. .BI "ClockChip \*q" clockchip\-type \*q This optional entry is used to specify the clock chip type on graphics boards which have a programmable clock generator. -Only a few __xservername__ drivers support programmable clock chips. +Only a few Xorg drivers support programmable clock chips. For details, see the appropriate driver manual page. .TP 7 .BI "VideoRam " "mem" This optional entry specifies the amount of video ram that is installed on the graphics board. This is measured in kBytes. -In most cases this is not required because the __xservername__ server probes +In most cases this is not required because the Xorg server probes the graphics board to determine this quantity. The driver-specific documentation should indicate when it might be needed. .TP 7 @@ -1481,7 +1481,7 @@ if or .B Hz is added to the end of the line. -The data given here is used by the __xservername__ server to determine if video +The data given here is used by the Xorg server to determine if video modes are within the specifications of the monitor. This information should be available in the monitor's handbook. If this entry is omitted, a default range of 28\-33kHz is used. @@ -1500,7 +1500,7 @@ if or .B kHz is added to the end of the line. -The data given here is used by the __xservername__ server to determine if video +The data given here is used by the Xorg server to determine if video modes are within the specifications of the monitor. This information should be available in the monitor's handbook. If this entry is omitted, a default range of 43\-72Hz is used. @@ -1895,7 +1895,7 @@ Others are driver\-independent, and will eventually be described here. .TP 7 .BI "Option \*qAccel\*q" Enables XAA (X Acceleration Architecture), a mechanism that makes video cards' -2D hardware acceleration available to the __xservername__ server. +2D hardware acceleration available to the Xorg server. This option is on by default, but it may be necessary to turn it off if there are bugs in the driver. There are many options to disable specific accelerated operations, listed @@ -2070,7 +2070,7 @@ formats. This may also be specified from the command line with the .B \-weight option (see -.BR __xservername__(__appmansuffix__)). +.BR Xorg(__appmansuffix__)). .TP 7 .BI "Virtual " "xdim ydim" This optional entry specifies the virtual screen resolution to be used. @@ -2414,7 +2414,7 @@ The data therein is not used in this release. General: .BR X (__miscmansuffix__), .BR Xserver (__appmansuffix__), -.BR __xservername__ (__appmansuffix__), +.BR Xorg (__appmansuffix__), .BR cvt (__appmansuffix__), .BR gtf (__appmansuffix__). .PP diff --git a/xorg-server/hw/xfree86/utils/man/cvt.man b/xorg-server/hw/xfree86/utils/man/cvt.man index f5075f5bf..310e46405 100644 --- a/xorg-server/hw/xfree86/utils/man/cvt.man +++ b/xorg-server/hw/xfree86/utils/man/cvt.man @@ -12,8 +12,8 @@ cvt - calculate VESA CVT mode lines .I Cvt is a utility for calculating VESA Coordinated Video Timing modes. Given the desired horizontal and vertical resolutions, a modeline adhering to the CVT -standard is printed. This modeline can be included in __xservername__ -.B __xconfigfile__(__filemansuffix__) +standard is printed. This modeline can be included in Xorg +.B xorg.conf(__filemansuffix__) . .SH OPTIONS @@ -31,7 +31,7 @@ Create a mode with reduced blanking. This allows for higher frequency signals, with a lower or equal dotclock. Not for Cathode Ray Tube based displays though. .SH "SEE ALSO" -__xconfigfile__(__filemansuffix__), gtf(__appmansuffix__) +xorg.conf(__filemansuffix__), gtf(__appmansuffix__) .SH AUTHOR Luc Verhaegen. .PP diff --git a/xorg-server/hw/xfree86/utils/man/gtf.man b/xorg-server/hw/xfree86/utils/man/gtf.man index 8e83650aa..004d2f059 100644 --- a/xorg-server/hw/xfree86/utils/man/gtf.man +++ b/xorg-server/hw/xfree86/utils/man/gtf.man @@ -14,8 +14,8 @@ gtf - calculate VESA GTF mode lines is a utility for calculating VESA GTF modes. Given the desired horizontal and vertical resolutions and refresh rate (in Hz), the parameters for a matching VESA GTF mode are printed out. Two output formats are -supported: mode lines suitable for the __xservername__ -.B __xconfigfile__(__filemansuffix__) +supported: mode lines suitable for the Xorg +.B xorg.conf(__filemansuffix__) file, and mode parameters suitable for the Linux .B fbset(8) utility. @@ -27,14 +27,14 @@ Enable verbose printouts This shows a trace for each step of the computation. .TP 8 .BR \-x | \-\-xorgmode -Print the mode parameters as __xservername__-style mode lines. This is the +Print the mode parameters as Xorg-style mode lines. This is the default format. .TP 8 .BR \-f | \-\-fbset Print the mode parameters in a format suitable for .BR fbset(8) . .SH "SEE ALSO" -__xconfigfile__(__filemansuffix__), cvt(__appmansuffix__) +xorg.conf(__filemansuffix__), cvt(__appmansuffix__) .SH AUTHOR Andy Ritger. .PP diff --git a/xorg-server/hw/xnest/Init.c b/xorg-server/hw/xnest/Init.c index 0909826d9..330b8ca17 100644 --- a/xorg-server/hw/xnest/Init.c +++ b/xorg-server/hw/xnest/Init.c @@ -142,7 +142,7 @@ OsVendorInit(void) } void -OsVendorFatalError(void) +OsVendorFatalError(const char *f, va_list args) { return; } diff --git a/xorg-server/hw/xquartz/GL/capabilities.c b/xorg-server/hw/xquartz/GL/capabilities.c index 4624fd4db..4702595f4 100644 --- a/xorg-server/hw/xquartz/GL/capabilities.c +++ b/xorg-server/hw/xquartz/GL/capabilities.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008 Apple Inc. + * Copyright (c) 2008-2012 Apple Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -25,7 +25,7 @@ #include <assert.h> #define Cursor Mac_Cursor -#define BOOL Mac_BOOL +#define BOOL Mac_BOOL #include <OpenGL/OpenGL.h> #include <OpenGL/gl.h> #include <OpenGL/glu.h> @@ -120,7 +120,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, { int offset = 0; - /*1 */ + /*1*/ if (kCGLRGB444Bit & cmodes) { c[offset].r = 4; c[offset].g = 4; @@ -128,7 +128,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*2 */ + /*2*/ if (kCGLARGB4444Bit & cmodes) { c[offset].a = 4; c[offset].r = 4; @@ -138,7 +138,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*3 */ + /*3*/ if (kCGLRGB444A8Bit & cmodes) { c[offset].r = 4; c[offset].g = 4; @@ -147,7 +147,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*4 */ + /*4*/ if (kCGLRGB555Bit & cmodes) { c[offset].r = 5; c[offset].g = 5; @@ -155,7 +155,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*5 */ + /*5*/ if (kCGLARGB1555Bit & cmodes) { c[offset].a = 1; c[offset].r = 5; @@ -165,7 +165,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*6 */ + /*6*/ if (kCGLRGB555A8Bit & cmodes) { c[offset].r = 5; c[offset].g = 5; @@ -174,7 +174,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*7 */ + /*7*/ if (kCGLRGB565Bit & cmodes) { c[offset].r = 5; c[offset].g = 6; @@ -182,7 +182,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*8 */ + /*8*/ if (kCGLRGB565A8Bit & cmodes) { c[offset].r = 5; c[offset].g = 6; @@ -191,7 +191,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*9 */ + /*9*/ if (kCGLRGB888Bit & cmodes) { c[offset].r = 8; c[offset].g = 8; @@ -199,7 +199,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*10 */ + /*10*/ if (kCGLARGB8888Bit & cmodes) { c[offset].a = 8; c[offset].r = 8; @@ -209,7 +209,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*11 */ + /*11*/ if (kCGLRGB888A8Bit & cmodes) { c[offset].r = 8; c[offset].g = 8; @@ -219,16 +219,16 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, } if (forAccum) { -//#if 0 + //#if 0 /* FIXME - * Disable this path, because some part of libGL, X, or Xplugin + * Disable this path, because some part of libGL, X, or Xplugin * doesn't work with sizes greater than 8. * When this is enabled and visuals are chosen using depths * such as 16, the result is that the windows don't redraw * and are often white, until a resize. */ - /*12 */ + /*12*/ if (kCGLRGB101010Bit & cmodes) { c[offset].r = 10; c[offset].g = 10; @@ -236,7 +236,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*13 */ + /*13*/ if (kCGLARGB2101010Bit & cmodes) { c[offset].a = 2; c[offset].r = 10; @@ -246,7 +246,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*14 */ + /*14*/ if (kCGLRGB101010_A8Bit & cmodes) { c[offset].r = 10; c[offset].g = 10; @@ -255,7 +255,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*15 */ + /*15*/ if (kCGLRGB121212Bit & cmodes) { c[offset].r = 12; c[offset].g = 12; @@ -263,7 +263,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*16 */ + /*16*/ if (kCGLARGB12121212Bit & cmodes) { c[offset].a = 12; c[offset].r = 12; @@ -273,7 +273,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*17 */ + /*17*/ if (kCGLRGB161616Bit & cmodes) { c[offset].r = 16; c[offset].g = 16; @@ -281,7 +281,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } - /*18 */ + /*18*/ if (kCGLRGBA16161616Bit & cmodes) { c[offset].r = 16; c[offset].g = 16; @@ -290,7 +290,7 @@ handleColorAndAccumulation(struct glColorBufCapabilities *c, ++offset; } } -//#endif + //#endif /* FIXME should we handle the floating point color modes, and if so, how? */ @@ -318,46 +318,45 @@ static void handleDepthModes(struct glCapabilitiesConfig *c, GLint dmodes) { int offset = 0; +#define DEPTH(flag, value) do { \ + if (dmodes & flag) { \ + c->depth_buffers[offset++] = value; \ + } \ +} while (0) -#define DEPTH(flag,value) do { \ - if(dmodes & flag) { \ - c->depth_buffers[offset++] = value; \ - } \ - } while(0) - - /*1 */ + /*1*/ DEPTH(kCGL0Bit, 0); - /*2 */ + /*2*/ DEPTH(kCGL1Bit, 1); - /*3 */ + /*3*/ DEPTH(kCGL2Bit, 2); - /*4 */ + /*4*/ DEPTH(kCGL3Bit, 3); - /*5 */ + /*5*/ DEPTH(kCGL4Bit, 4); - /*6 */ + /*6*/ DEPTH(kCGL5Bit, 5); - /*7 */ + /*7*/ DEPTH(kCGL6Bit, 6); - /*8 */ + /*8*/ DEPTH(kCGL8Bit, 8); - /*9 */ + /*9*/ DEPTH(kCGL10Bit, 10); - /*10 */ + /*10*/ DEPTH(kCGL12Bit, 12); - /*11 */ + /*11*/ DEPTH(kCGL16Bit, 16); - /*12 */ + /*12*/ DEPTH(kCGL24Bit, 24); - /*13 */ + /*13*/ DEPTH(kCGL32Bit, 32); - /*14 */ + /*14*/ DEPTH(kCGL48Bit, 48); - /*15 */ + /*15*/ DEPTH(kCGL64Bit, 64); - /*16 */ + /*16*/ DEPTH(kCGL96Bit, 96); - /*17 */ + /*17*/ DEPTH(kCGL128Bit, 128); #undef DEPTH @@ -483,8 +482,9 @@ initConfig(struct glCapabilitiesConfig *c) for (i = 0; i < GLCAPS_COLOR_BUFFERS; ++i) { c->color_buffers[i].r = c->color_buffers[i].g = - c->color_buffers[i].b = c->color_buffers[i].a = - GLCAPS_COLOR_BUF_INVALID_VALUE; + c->color_buffers[i].b = + c->color_buffers[i].a = + GLCAPS_COLOR_BUF_INVALID_VALUE; c->color_buffers[i].is_argb = false; } @@ -492,8 +492,9 @@ initConfig(struct glCapabilitiesConfig *c) for (i = 0; i < GLCAPS_COLOR_BUFFERS; ++i) { c->accum_buffers[i].r = c->accum_buffers[i].g = - c->accum_buffers[i].b = c->accum_buffers[i].a = - GLCAPS_COLOR_BUF_INVALID_VALUE; + c->accum_buffers[i].b = + c->accum_buffers[i].a = + GLCAPS_COLOR_BUF_INVALID_VALUE; c->accum_buffers[i].is_argb = false; } @@ -540,7 +541,8 @@ getGlCapabilities(struct glCapabilities *cap) err = handleRendererDescriptions(info, r, &tmpconf); if (err) { ErrorF("handleRendererDescriptions returned error: %s\n", - CGLErrorString(err)); + CGLErrorString( + err)); ErrorF("trying to continue...\n"); continue; } diff --git a/xorg-server/hw/xquartz/GL/capabilities.h b/xorg-server/hw/xquartz/GL/capabilities.h index 361856b07..62b3ac25a 100644 --- a/xorg-server/hw/xquartz/GL/capabilities.h +++ b/xorg-server/hw/xquartz/GL/capabilities.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008 Apple Inc. + * Copyright (c) 2008-2012 Apple Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -55,12 +55,14 @@ struct glCapabilitiesConfig { struct glCapabilitiesConfig *next; }; -struct glCapabilities { +struct glCapabilities { struct glCapabilitiesConfig *configurations; int total_configurations; }; -bool getGlCapabilities(struct glCapabilities *cap); -void freeGlCapabilities(struct glCapabilities *cap); +bool +getGlCapabilities(struct glCapabilities *cap); +void +freeGlCapabilities(struct glCapabilities *cap); #endif diff --git a/xorg-server/hw/xquartz/GL/glcontextmodes.c b/xorg-server/hw/xquartz/GL/glcontextmodes.c index 79fadf876..dc97f89e4 100644 --- a/xorg-server/hw/xquartz/GL/glcontextmodes.c +++ b/xorg-server/hw/xquartz/GL/glcontextmodes.c @@ -47,31 +47,31 @@ #include <stdlib.h> #include <string.h> #define _mesa_malloc(b) malloc(b) -#define _mesa_free(m) free(m) -#define _mesa_memset memset +#define _mesa_free(m) free(m) +#define _mesa_memset memset #else #ifdef XFree86Server #include <os.h> #include <string.h> #define _mesa_malloc(b) malloc(b) #define _mesa_free(m) free(m) -#define _mesa_memset memset +#define _mesa_memset memset #else #include <X11/Xlibint.h> #define _mesa_memset memset #define _mesa_malloc(b) Xmalloc(b) -#define _mesa_free(m) free(m) -#endif /* XFree86Server */ -#endif /* !defined(IN_MINI_GLX) */ +#define _mesa_free(m) free(m) +#endif /* XFree86Server */ +#endif /* !defined(IN_MINI_GLX) */ #include "glcontextmodes.h" #if !defined(IN_MINI_GLX) -#define NUM_VISUAL_TYPES 6 +#define NUM_VISUAL_TYPES 6 /** * Convert an X visual type to a GLX visual type. - * + * * \param visualType X visual type (i.e., \c TrueColor, \c StaticGray, etc.) * to be converted. * \return If \c visualType is a valid X visual type, a GLX visual type will @@ -81,19 +81,19 @@ GLint _gl_convert_from_x_visual_type(int visualType) { static const int glx_visual_types[NUM_VISUAL_TYPES] = { - GLX_STATIC_GRAY, GLX_GRAY_SCALE, + GLX_STATIC_GRAY, GLX_GRAY_SCALE, GLX_STATIC_COLOR, GLX_PSEUDO_COLOR, - GLX_TRUE_COLOR, GLX_DIRECT_COLOR + GLX_TRUE_COLOR, GLX_DIRECT_COLOR }; - return ((unsigned) visualType < NUM_VISUAL_TYPES) - ? glx_visual_types[visualType] : GLX_NONE; + return ((unsigned)visualType < NUM_VISUAL_TYPES) + ? glx_visual_types[visualType] : GLX_NONE; } /** * Convert a GLX visual type to an X visual type. - * - * \param visualType GLX visual type (i.e., \c GLX_TRUE_COLOR, + * + * \param visualType GLX visual type (i.e., \c GLX_TRUE_COLOR, * \c GLX_STATIC_GRAY, etc.) to be converted. * \return If \c visualType is a valid GLX visual type, an X visual type will * be returned. Otherwise -1 will be returned. @@ -102,13 +102,13 @@ GLint _gl_convert_to_x_visual_type(int visualType) { static const int x_visual_types[NUM_VISUAL_TYPES] = { - TrueColor, DirectColor, + TrueColor, DirectColor, PseudoColor, StaticColor, - GrayScale, StaticGray + GrayScale, StaticGray }; - return ((unsigned) (visualType - GLX_TRUE_COLOR) < NUM_VISUAL_TYPES) - ? x_visual_types[visualType - GLX_TRUE_COLOR] : -1; + return ((unsigned)(visualType - GLX_TRUE_COLOR) < NUM_VISUAL_TYPES) + ? x_visual_types[visualType - GLX_TRUE_COLOR] : -1; } /** @@ -117,10 +117,10 @@ _gl_convert_to_x_visual_type(int visualType) * \c mode that can be derrived from the fields of \c config (i.e., * \c haveDepthBuffer) are also filled in. The remaining fields in \c mode * that cannot be derived are set to default values. - * + * * \param mode Destination GL context mode. * \param config Source GLX visual config. - * + * * \note * The \c fbconfigID and \c visualID fields of the \c __GLcontextModes * structure will be set to the \c vid of the \c __GLXvisualConfig structure. @@ -129,9 +129,9 @@ void _gl_copy_visual_to_context_mode(__GLcontextModes * mode, const __GLXvisualConfig * config) { - __GLcontextModes *const next = mode->next; + __GLcontextModes * const next = mode->next; - (void) _mesa_memset(mode, 0, sizeof(__GLcontextModes)); + (void)_mesa_memset(mode, 0, sizeof(__GLcontextModes)); mode->next = next; mode->visualID = config->vid; @@ -190,17 +190,18 @@ _gl_copy_visual_to_context_mode(__GLcontextModes * mode, mode->bindToTextureRgb = (mode->rgbMode) ? GL_TRUE : GL_FALSE; mode->bindToTextureRgba = (mode->rgbMode && mode->alphaBits) ? - GL_TRUE : GL_FALSE; + GL_TRUE : GL_FALSE; mode->bindToMipmapTexture = mode->rgbMode ? GL_TRUE : GL_FALSE; mode->bindToTextureTargets = mode->rgbMode ? - GLX_TEXTURE_1D_BIT_EXT | GLX_TEXTURE_2D_BIT_EXT | - GLX_TEXTURE_RECTANGLE_BIT_EXT : 0; + GLX_TEXTURE_1D_BIT_EXT | + GLX_TEXTURE_2D_BIT_EXT | + GLX_TEXTURE_RECTANGLE_BIT_EXT : 0; mode->yInverted = GL_FALSE; } /** * Get data from a GL context mode. - * + * * \param mode GL context mode whose data is to be returned. * \param attribute Attribute of \c mode that is to be returned. * \param value_return Location to store the data member of \c mode. @@ -208,151 +209,193 @@ _gl_copy_visual_to_context_mode(__GLcontextModes * mode, * returned. Otherwise \c GLX_BAD_ATTRIBUTE is returned. */ int -_gl_get_context_mode_data(const __GLcontextModes * mode, int attribute, +_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute, int *value_return) { switch (attribute) { case GLX_USE_GL: *value_return = GL_TRUE; return 0; + case GLX_BUFFER_SIZE: *value_return = mode->rgbBits; return 0; + case GLX_RGBA: *value_return = mode->rgbMode; return 0; + case GLX_RED_SIZE: *value_return = mode->redBits; return 0; + case GLX_GREEN_SIZE: *value_return = mode->greenBits; return 0; + case GLX_BLUE_SIZE: *value_return = mode->blueBits; return 0; + case GLX_ALPHA_SIZE: *value_return = mode->alphaBits; return 0; + case GLX_DOUBLEBUFFER: *value_return = mode->doubleBufferMode; return 0; + case GLX_STEREO: *value_return = mode->stereoMode; return 0; + case GLX_AUX_BUFFERS: *value_return = mode->numAuxBuffers; return 0; + case GLX_DEPTH_SIZE: *value_return = mode->depthBits; return 0; + case GLX_STENCIL_SIZE: *value_return = mode->stencilBits; return 0; + case GLX_ACCUM_RED_SIZE: *value_return = mode->accumRedBits; return 0; + case GLX_ACCUM_GREEN_SIZE: *value_return = mode->accumGreenBits; return 0; + case GLX_ACCUM_BLUE_SIZE: *value_return = mode->accumBlueBits; return 0; + case GLX_ACCUM_ALPHA_SIZE: *value_return = mode->accumAlphaBits; return 0; + case GLX_LEVEL: *value_return = mode->level; return 0; + case GLX_TRANSPARENT_TYPE_EXT: *value_return = mode->transparentPixel; return 0; + case GLX_TRANSPARENT_RED_VALUE: *value_return = mode->transparentRed; return 0; + case GLX_TRANSPARENT_GREEN_VALUE: *value_return = mode->transparentGreen; return 0; + case GLX_TRANSPARENT_BLUE_VALUE: *value_return = mode->transparentBlue; return 0; + case GLX_TRANSPARENT_ALPHA_VALUE: *value_return = mode->transparentAlpha; return 0; + case GLX_TRANSPARENT_INDEX_VALUE: *value_return = mode->transparentIndex; return 0; + case GLX_X_VISUAL_TYPE: *value_return = mode->visualType; return 0; + case GLX_CONFIG_CAVEAT: *value_return = mode->visualRating; return 0; + case GLX_VISUAL_ID: *value_return = mode->visualID; return 0; + case GLX_DRAWABLE_TYPE: *value_return = mode->drawableType; return 0; + case GLX_RENDER_TYPE: *value_return = mode->renderType; return 0; + case GLX_X_RENDERABLE: *value_return = mode->xRenderable; return 0; + case GLX_FBCONFIG_ID: *value_return = mode->fbconfigID; return 0; + case GLX_MAX_PBUFFER_WIDTH: *value_return = mode->maxPbufferWidth; return 0; + case GLX_MAX_PBUFFER_HEIGHT: *value_return = mode->maxPbufferHeight; return 0; + case GLX_MAX_PBUFFER_PIXELS: *value_return = mode->maxPbufferPixels; return 0; + case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX: *value_return = mode->optimalPbufferWidth; return 0; + case GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX: *value_return = mode->optimalPbufferHeight; return 0; + case GLX_SWAP_METHOD_OML: *value_return = mode->swapMethod; return 0; + case GLX_SAMPLE_BUFFERS_SGIS: *value_return = mode->sampleBuffers; return 0; + case GLX_SAMPLES_SGIS: *value_return = mode->samples; return 0; + case GLX_BIND_TO_TEXTURE_RGB_EXT: *value_return = mode->bindToTextureRgb; return 0; + case GLX_BIND_TO_TEXTURE_RGBA_EXT: *value_return = mode->bindToTextureRgba; return 0; + case GLX_BIND_TO_MIPMAP_TEXTURE_EXT: *value_return = mode->bindToMipmapTexture == GL_TRUE ? GL_TRUE : - GL_FALSE; + GL_FALSE; return 0; + case GLX_BIND_TO_TEXTURE_TARGETS_EXT: *value_return = mode->bindToTextureTargets; return 0; + case GLX_Y_INVERTED_EXT: *value_return = mode->yInverted; return 0; - /* Applications are NOT allowed to query GLX_VISUAL_SELECT_GROUP_SGIX. - * It is ONLY for communication between the GLX client and the GLX - * server. - */ + /* Applications are NOT allowed to query GLX_VISUAL_SELECT_GROUP_SGIX. + * It is ONLY for communication between the GLX client and the GLX + * server. + */ case GLX_VISUAL_SELECT_GROUP_SGIX: default: return GLX_BAD_ATTRIBUTE; } } -#endif /* !defined(IN_MINI_GLX) */ +#endif /* !defined(IN_MINI_GLX) */ /** * Allocate a linked list of \c __GLcontextModes structures. The fields of @@ -362,7 +405,7 @@ _gl_get_context_mode_data(const __GLcontextModes * mode, int attribute, * zero or \c GLX_DONT_CARE (which is -1). As support for additional * extensions is added, the new values will be initialized to appropriate * values from the extension specification. - * + * * \param count Number of structures to allocate. * \param minimum_size Minimum size of a structure to allocate. This allows * for differences in the version of the @@ -370,7 +413,7 @@ _gl_get_context_mode_data(const __GLcontextModes * mode, int attribute, * DRI-based driver. * \returns A pointer to the first element in a linked list of \c count * stuctures on success, or \c NULL on failure. - * + * * \warning Use of \c minimum_size does \b not guarantee binary compatibility. * The fundamental assumption is that if the \c minimum_size * specified by the driver and the size of the \c __GLcontextModes @@ -384,21 +427,21 @@ __GLcontextModes * _gl_context_modes_create(unsigned count, size_t minimum_size) { const size_t size = (minimum_size > sizeof(__GLcontextModes)) - ? minimum_size : sizeof(__GLcontextModes); - __GLcontextModes *base = NULL; - __GLcontextModes **next; + ? minimum_size : sizeof(__GLcontextModes); + __GLcontextModes * base = NULL; + __GLcontextModes ** next; unsigned i; next = &base; for (i = 0; i < count; i++) { - *next = (__GLcontextModes *) _mesa_malloc(size); + *next = (__GLcontextModes *)_mesa_malloc(size); if (*next == NULL) { _gl_context_modes_destroy(base); base = NULL; break; } - (void) _mesa_memset(*next, 0, size); + (void)_mesa_memset(*next, 0, size); (*next)->visualID = GLX_DONT_CARE; (*next)->visualType = GLX_DONT_CARE; (*next)->visualRating = GLX_NONE; @@ -426,7 +469,7 @@ _gl_context_modes_create(unsigned count, size_t minimum_size) /** * Destroy a linked list of \c __GLcontextModes structures created by * \c _gl_context_modes_create. - * + * * \param modes Linked list of structures to be destroyed. All structres * in the list will be freed. */ @@ -434,7 +477,7 @@ void _gl_context_modes_destroy(__GLcontextModes * modes) { while (modes != NULL) { - __GLcontextModes *const next = modes->next; + __GLcontextModes * const next = modes->next; _mesa_free(modes); modes = next; @@ -451,7 +494,7 @@ _gl_context_modes_destroy(__GLcontextModes * modes) */ __GLcontextModes * -_gl_context_modes_find_visual(__GLcontextModes * modes, int vid) +_gl_context_modes_find_visual(__GLcontextModes *modes, int vid) { __GLcontextModes *m; @@ -463,7 +506,7 @@ _gl_context_modes_find_visual(__GLcontextModes * modes, int vid) } __GLcontextModes * -_gl_context_modes_find_fbconfig(__GLcontextModes * modes, int fbid) +_gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid) { __GLcontextModes *m; @@ -477,7 +520,7 @@ _gl_context_modes_find_fbconfig(__GLcontextModes * modes, int fbid) /** * Determine if two context-modes are the same. This is intended to be used * by libGL implementations to compare to sets of driver generated FBconfigs. - * + * * \param a Context-mode to be compared. * \param b Context-mode to be compared. * \returns \c GL_TRUE if the two context-modes are the same. \c GL_FALSE is @@ -494,11 +537,13 @@ _gl_context_modes_are_same(const __GLcontextModes * a, (a->stereoMode == b->stereoMode) && (a->redBits == b->redBits) && (a->greenBits == b->greenBits) && - (a->blueBits == b->blueBits) && (a->alphaBits == b->alphaBits) && -#if 0 /* For some reason these don't get set on the client-side in libGL. */ + (a->blueBits == b->blueBits) && + (a->alphaBits == b->alphaBits) && +#if 0 /* For some reason these don't get set on the client-side in libGL. */ (a->redMask == b->redMask) && (a->greenMask == b->greenMask) && - (a->blueMask == b->blueMask) && (a->alphaMask == b->alphaMask) && + (a->blueMask == b->blueMask) && + (a->alphaMask == b->alphaMask) && #endif (a->rgbBits == b->rgbBits) && (a->indexBits == b->indexBits) && @@ -512,14 +557,18 @@ _gl_context_modes_are_same(const __GLcontextModes * a, (a->level == b->level) && (a->pixmapMode == b->pixmapMode) && (a->visualRating == b->visualRating) && + (a->transparentPixel == b->transparentPixel) && + ((a->transparentPixel != GLX_TRANSPARENT_RGB) || ((a->transparentRed == b->transparentRed) && (a->transparentGreen == b->transparentGreen) && (a->transparentBlue == b->transparentBlue) && (a->transparentAlpha == b->transparentAlpha))) && + ((a->transparentPixel != GLX_TRANSPARENT_INDEX) || (a->transparentIndex == b->transparentIndex)) && + (a->sampleBuffers == b->sampleBuffers) && (a->samples == b->samples) && ((a->drawableType & b->drawableType) != 0) && diff --git a/xorg-server/hw/xquartz/GL/glcontextmodes.h b/xorg-server/hw/xquartz/GL/glcontextmodes.h index 871c2e1b3..7237ccc06 100644 --- a/xorg-server/hw/xquartz/GL/glcontextmodes.h +++ b/xorg-server/hw/xquartz/GL/glcontextmodes.h @@ -33,22 +33,28 @@ #include "GL/internal/glcore.h" #if !defined(IN_MINI_GLX) -extern GLint _gl_convert_from_x_visual_type(int visualType); -extern GLint _gl_convert_to_x_visual_type(int visualType); -extern void _gl_copy_visual_to_context_mode(__GLcontextModes * mode, - const __GLXvisualConfig * config); -extern int _gl_get_context_mode_data(const __GLcontextModes * mode, - int attribute, int *value_return); -#endif /* !defined(IN_MINI_GLX) */ +extern GLint +_gl_convert_from_x_visual_type(int visualType); +extern GLint +_gl_convert_to_x_visual_type(int visualType); +extern void +_gl_copy_visual_to_context_mode(__GLcontextModes * mode, + const __GLXvisualConfig * config); +extern int +_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute, + int *value_return); +#endif /* !defined(IN_MINI_GLX) */ -extern __GLcontextModes *_gl_context_modes_create(unsigned count, - size_t minimum_size); -extern void _gl_context_modes_destroy(__GLcontextModes * modes); -extern __GLcontextModes *_gl_context_modes_find_visual(__GLcontextModes * modes, - int vid); -extern __GLcontextModes *_gl_context_modes_find_fbconfig(__GLcontextModes * - modes, int fbid); -extern GLboolean _gl_context_modes_are_same(const __GLcontextModes * a, - const __GLcontextModes * b); +extern __GLcontextModes * +_gl_context_modes_create(unsigned count, size_t minimum_size); +extern void +_gl_context_modes_destroy(__GLcontextModes * modes); +extern __GLcontextModes * +_gl_context_modes_find_visual(__GLcontextModes *modes, int vid); +extern __GLcontextModes * +_gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid); +extern GLboolean +_gl_context_modes_are_same(const __GLcontextModes * a, + const __GLcontextModes * b); -#endif /* GLCONTEXTMODES_H */ +#endif /* GLCONTEXTMODES_H */ diff --git a/xorg-server/hw/xquartz/GL/indirect.c b/xorg-server/hw/xquartz/GL/indirect.c index 1f4f79c4b..d9dc2a15b 100644 --- a/xorg-server/hw/xquartz/GL/indirect.c +++ b/xorg-server/hw/xquartz/GL/indirect.c @@ -2,7 +2,7 @@ * GLX implementation that uses Apple's OpenGL.framework * (Indirect rendering path -- it's also used for some direct mode code too) * - * Copyright (c) 2007-2011 Apple Inc. + * Copyright (c) 2007-2012 Apple Inc. * Copyright (c) 2004 Torrey T. Lyons. All Rights Reserved. * Copyright (c) 2002 Greg Parker. All Rights Reserved. * @@ -40,7 +40,7 @@ #include <dlfcn.h> #include <OpenGL/OpenGL.h> -#include <OpenGL/gl.h> /* Just to prevent glxserver.h from loading mesa's and colliding with OpenGL.h */ +#include <OpenGL/gl.h> /* Just to prevent glxserver.h from loading mesa's and colliding with OpenGL.h */ #include <X11/Xproto.h> #include <GL/glxproto.h> @@ -56,30 +56,41 @@ #include "dri.h" #include "darwin.h" -#define GLAQUA_DEBUG_MSG(msg, args...) ASL_LOG(ASL_LEVEL_DEBUG, "GLXAqua", msg, ##args) +#define GLAQUA_DEBUG_MSG(msg, args ...) ASL_LOG(ASL_LEVEL_DEBUG, "GLXAqua", \ + msg, \ + ## args) -__GLXprovider *GlxGetDRISWrastProvider(void); +__GLXprovider * +GlxGetDRISWrastProvider(void); -static void setup_dispatch_table(void); -GLuint __glFloorLog2(GLuint val); -void warn_func(void *p1, char *format, ...); +static void +setup_dispatch_table(void); +GLuint +__glFloorLog2(GLuint val); +void +warn_func(void * p1, char *format, ...); // some prototypes -static __GLXscreen *__glXAquaScreenProbe(ScreenPtr pScreen); -static __GLXdrawable *__glXAquaScreenCreateDrawable(ClientPtr client, - __GLXscreen * screen, - DrawablePtr pDraw, - XID drawId, int type, - XID glxDrawId, - __GLXconfig * conf); - -static void __glXAquaContextDestroy(__GLXcontext * baseContext); -static int __glXAquaContextMakeCurrent(__GLXcontext * baseContext); -static int __glXAquaContextLoseCurrent(__GLXcontext * baseContext); -static int __glXAquaContextCopy(__GLXcontext * baseDst, __GLXcontext * baseSrc, - unsigned long mask); - -static CGLPixelFormatObj makeFormat(__GLXconfig * conf); +static __GLXscreen * +__glXAquaScreenProbe(ScreenPtr pScreen); +static __GLXdrawable * +__glXAquaScreenCreateDrawable(ClientPtr client, __GLXscreen *screen, + DrawablePtr pDraw, XID drawId, int type, + XID glxDrawId, + __GLXconfig *conf); + +static void +__glXAquaContextDestroy(__GLXcontext *baseContext); +static int +__glXAquaContextMakeCurrent(__GLXcontext *baseContext); +static int +__glXAquaContextLoseCurrent(__GLXcontext *baseContext); +static int +__glXAquaContextCopy(__GLXcontext *baseDst, __GLXcontext *baseSrc, + unsigned long mask); + +static CGLPixelFormatObj +makeFormat(__GLXconfig *conf); __GLXprovider __glXDRISWRastProvider = { __glXAquaScreenProbe, @@ -94,9 +105,9 @@ typedef struct __GLXAquaDrawable __GLXAquaDrawable; /* * The following structs must keep the base as the first member. * It's used to treat the start of the struct as a different struct - * in GLX. + * in GLX. * - * Note: these structs should be initialized with xcalloc or memset + * Note: these structs should be initialized with xcalloc or memset * prior to usage, and some of them require initializing * the base with function pointers. */ @@ -111,7 +122,7 @@ struct __GLXAquaContext { CGLContextObj ctx; CGLPixelFormatObj pixelFormat; xp_surface_id sid; - unsigned isAttached:1; + unsigned isAttached : 1; }; struct __GLXAquaDrawable { @@ -122,12 +133,12 @@ struct __GLXAquaDrawable { }; static __GLXcontext * -__glXAquaScreenCreateContext(__GLXscreen * screen, - __GLXconfig * conf, - __GLXcontext * baseShareContext) +__glXAquaScreenCreateContext(__GLXscreen *screen, + __GLXconfig *conf, + __GLXcontext *baseShareContext) { __GLXAquaContext *context; - __GLXAquaContext *shareContext = (__GLXAquaContext *) baseShareContext; + __GLXAquaContext *shareContext = (__GLXAquaContext *)baseShareContext; CGLError gl_err; GLAQUA_DEBUG_MSG("glXAquaScreenCreateContext\n"); @@ -176,21 +187,21 @@ __glXAquaScreenCreateContext(__GLXscreen * screen, static x_hash_table *surface_hash; static void -__glXAquaContextDestroy(__GLXcontext * baseContext) +__glXAquaContextDestroy(__GLXcontext *baseContext) { x_list *lst; - __GLXAquaContext *context = (__GLXAquaContext *) baseContext; + __GLXAquaContext *context = (__GLXAquaContext *)baseContext; GLAQUA_DEBUG_MSG("glAquaContextDestroy (ctx %p)\n", baseContext); if (context != NULL) { if (context->sid != 0 && surface_hash != NULL) { lst = - x_hash_table_lookup(surface_hash, - x_cvt_uint_to_vptr(context->sid), NULL); + x_hash_table_lookup(surface_hash, x_cvt_uint_to_vptr( + context->sid), NULL); lst = x_list_remove(lst, context); - x_hash_table_insert(surface_hash, x_cvt_uint_to_vptr(context->sid), - lst); + x_hash_table_insert(surface_hash, x_cvt_uint_to_vptr( + context->sid), lst); } if (context->ctx != NULL) @@ -204,7 +215,7 @@ __glXAquaContextDestroy(__GLXcontext * baseContext) } static int -__glXAquaContextLoseCurrent(__GLXcontext * baseContext) +__glXAquaContextLoseCurrent(__GLXcontext *baseContext) { CGLError gl_err; @@ -214,9 +225,9 @@ __glXAquaContextLoseCurrent(__GLXcontext * baseContext) if (gl_err != 0) ErrorF("CGLSetCurrentContext error: %s\n", CGLErrorString(gl_err)); - /* + /* * There should be no need to set __glXLastContext to NULL here, because - * glxcmds.c does it as part of the context cache flush after calling + * glxcmds.c does it as part of the context cache flush after calling * this. */ @@ -228,11 +239,10 @@ __glXAquaContextLoseCurrent(__GLXcontext * baseContext) static void surface_notify(void *_arg, void *data) { - DRISurfaceNotifyArg *arg = (DRISurfaceNotifyArg *) _arg; - __GLXAquaDrawable *draw = (__GLXAquaDrawable *) data; + DRISurfaceNotifyArg *arg = (DRISurfaceNotifyArg *)_arg; + __GLXAquaDrawable *draw = (__GLXAquaDrawable *)data; __GLXAquaContext *context; x_list *lst; - if (_arg == NULL || data == NULL) { ErrorF("surface_notify called with bad params"); return; @@ -250,14 +260,15 @@ surface_notify(void *_arg, void *data) case AppleDRISurfaceNotifyChanged: if (surface_hash != NULL) { lst = - x_hash_table_lookup(surface_hash, x_cvt_uint_to_vptr(arg->id), - NULL); + x_hash_table_lookup(surface_hash, x_cvt_uint_to_vptr( + arg->id), NULL); for (; lst != NULL; lst = lst->next) { context = lst->data; xp_update_gl_context(context->ctx); } } break; + default: ErrorF("surface_notify: unknown kind %d\n", arg->kind); break; @@ -265,7 +276,7 @@ surface_notify(void *_arg, void *data) } static BOOL -attach(__GLXAquaContext * context, __GLXAquaDrawable * draw) +attach(__GLXAquaContext *context, __GLXAquaDrawable *draw) { DrawablePtr pDraw; @@ -284,7 +295,8 @@ attach(__GLXAquaContext * context, __GLXAquaDrawable * draw) if (draw->sid == 0) { //if (!quartzProcs->CreateSurface(pDraw->pScreen, pDraw->id, pDraw, if (!DRICreateSurface(pDraw->pScreen, pDraw->id, pDraw, - 0, &draw->sid, NULL, surface_notify, draw)) + 0, &draw->sid, NULL, + surface_notify, draw)) return TRUE; draw->pDraw = pDraw; } @@ -311,16 +323,16 @@ attach(__GLXAquaContext * context, __GLXAquaDrawable * draw) surface_hash = x_hash_table_new(NULL, NULL, NULL, NULL); lst = - x_hash_table_lookup(surface_hash, x_cvt_uint_to_vptr(context->sid), - NULL); + x_hash_table_lookup(surface_hash, x_cvt_uint_to_vptr( + context->sid), NULL); if (x_list_find(lst, context) == NULL) { lst = x_list_prepend(lst, context); - x_hash_table_insert(surface_hash, x_cvt_uint_to_vptr(context->sid), - lst); + x_hash_table_insert(surface_hash, x_cvt_uint_to_vptr( + context->sid), lst); } - GLAQUA_DEBUG_MSG("attached 0x%x to 0x%x\n", (unsigned int) pDraw->id, - (unsigned int) draw->sid); + GLAQUA_DEBUG_MSG("attached 0x%x to 0x%x\n", (unsigned int)pDraw->id, + (unsigned int)draw->sid); } draw->context = context; @@ -328,12 +340,11 @@ attach(__GLXAquaContext * context, __GLXAquaDrawable * draw) return FALSE; } -#if 0 // unused +#if 0 // unused static void -unattach(__GLXAquaContext * context) +unattach(__GLXAquaContext *context) { x_list *lst; - GLAQUA_DEBUG_MSG("unattach\n"); if (context == NULL) { ErrorF("Tried to unattach a null context\n"); @@ -343,10 +354,10 @@ unattach(__GLXAquaContext * context) GLAQUA_DEBUG_MSG("unattaching\n"); if (surface_hash != NULL) { - lst = - x_hash_table_lookup(surface_hash, (void *) context->sid, NULL); + lst = x_hash_table_lookup(surface_hash, (void *)context->sid, + NULL); lst = x_list_remove(lst, context); - x_hash_table_insert(surface_hash, (void *) context->sid, lst); + x_hash_table_insert(surface_hash, (void *)context->sid, lst); } CGLClearDrawable(context->ctx); @@ -357,16 +368,16 @@ unattach(__GLXAquaContext * context) #endif static int -__glXAquaContextMakeCurrent(__GLXcontext * baseContext) +__glXAquaContextMakeCurrent(__GLXcontext *baseContext) { CGLError gl_err; - __GLXAquaContext *context = (__GLXAquaContext *) baseContext; - __GLXAquaDrawable *drawPriv = (__GLXAquaDrawable *) context->base.drawPriv; + __GLXAquaContext *context = (__GLXAquaContext *)baseContext; + __GLXAquaDrawable *drawPriv = (__GLXAquaDrawable *)context->base.drawPriv; GLAQUA_DEBUG_MSG("glAquaMakeCurrent (ctx 0x%p)\n", baseContext); if (attach(context, drawPriv)) - return /*error */ 0; + return /*error*/ 0; gl_err = CGLSetCurrentContext(context->ctx); if (gl_err != 0) @@ -376,13 +387,13 @@ __glXAquaContextMakeCurrent(__GLXcontext * baseContext) } static int -__glXAquaContextCopy(__GLXcontext * baseDst, __GLXcontext * baseSrc, +__glXAquaContextCopy(__GLXcontext *baseDst, __GLXcontext *baseSrc, unsigned long mask) { CGLError gl_err; - __GLXAquaContext *dst = (__GLXAquaContext *) baseDst; - __GLXAquaContext *src = (__GLXAquaContext *) baseSrc; + __GLXAquaContext *dst = (__GLXAquaContext *)baseDst; + __GLXAquaContext *src = (__GLXAquaContext *)baseSrc; GLAQUA_DEBUG_MSG("GLXAquaContextCopy\n"); @@ -395,7 +406,7 @@ __glXAquaContextCopy(__GLXcontext * baseDst, __GLXcontext * baseSrc, /* Drawing surface notification callbacks */ static GLboolean -__glXAquaDrawableSwapBuffers(ClientPtr client, __GLXdrawable * base) +__glXAquaDrawableSwapBuffers(ClientPtr client, __GLXdrawable *base) { CGLError err; __GLXAquaDrawable *drawable; @@ -407,11 +418,11 @@ __glXAquaDrawableSwapBuffers(ClientPtr client, __GLXdrawable * base) return GL_FALSE; } - drawable = (__GLXAquaDrawable *) base; + drawable = (__GLXAquaDrawable *)base; if (NULL == drawable->context) { ErrorF("%s called with a NULL->context for drawable %p!\n", - __func__, (void *) drawable); + __func__, (void *)drawable); return GL_FALSE; } @@ -427,7 +438,7 @@ __glXAquaDrawableSwapBuffers(ClientPtr client, __GLXdrawable * base) } static CGLPixelFormatObj -makeFormat(__GLXconfig * conf) +makeFormat(__GLXconfig *conf) { CGLPixelFormatAttribute attr[64]; CGLPixelFormatObj fobj; @@ -451,7 +462,7 @@ makeFormat(__GLXconfig * conf) attr[i++] = kCGLPFAAccumSize; attr[i++] = conf->accumRedBits + conf->accumGreenBits - + conf->accumBlueBits + conf->accumAlphaBits; + + conf->accumBlueBits + conf->accumAlphaBits; } attr[i++] = kCGLPFADepthSize; @@ -486,7 +497,7 @@ makeFormat(__GLXconfig * conf) } static void -__glXAquaScreenDestroy(__GLXscreen * screen) +__glXAquaScreenDestroy(__GLXscreen *screen) { GLAQUA_DEBUG_MSG("glXAquaScreenDestroy(%p)\n", screen); @@ -517,9 +528,8 @@ __glXAquaScreenProbe(ScreenPtr pScreen) screen->base.swapInterval = /*FIXME*/ NULL; screen->base.pScreen = pScreen; - screen->base.fbconfigs = - __glXAquaCreateVisualConfigs(&screen->base.numFBConfigs, - pScreen->myNum); + screen->base.fbconfigs = __glXAquaCreateVisualConfigs( + &screen->base.numFBConfigs, pScreen->myNum); __glXScreenInit(&screen->base, pScreen); @@ -536,24 +546,24 @@ __glXAquaScreenProbe(ScreenPtr pScreen) return &screen->base; } -#if 0 // unused +#if 0 // unused static void -__glXAquaDrawableCopySubBuffer(__GLXdrawable * drawable, +__glXAquaDrawableCopySubBuffer(__GLXdrawable *drawable, int x, int y, int w, int h) { - /*TODO finish me */ + /*TODO finish me*/ } #endif static void -__glXAquaDrawableDestroy(__GLXdrawable * base) +__glXAquaDrawableDestroy(__GLXdrawable *base) { - /* gstaplin: base is the head of the structure, so it's at the same + /* gstaplin: base is the head of the structure, so it's at the same * offset in memory. * Is this safe with strict aliasing? I noticed that the other dri code * does this too... */ - __GLXAquaDrawable *glxPriv = (__GLXAquaDrawable *) base; + __GLXAquaDrawable *glxPriv = (__GLXAquaDrawable *)base; GLAQUA_DEBUG_MSG("TRACE"); @@ -562,10 +572,10 @@ __glXAquaDrawableDestroy(__GLXdrawable * base) frees the surface itself. */ /*gstaplin: verify the statement above. The surface destroy - *messages weren't making it through, and may still not be. - *We need a good test case for surface creation and destruction. - *We also need a good way to enable introspection on the server - *to validate the test, beyond using gdb with print. + *messages weren't making it through, and may still not be. + *We need a good test case for surface creation and destruction. + *We also need a good way to enable introspection on the server + *to validate the test, beyond using gdb with print. */ free(glxPriv); @@ -573,10 +583,12 @@ __glXAquaDrawableDestroy(__GLXdrawable * base) static __GLXdrawable * __glXAquaScreenCreateDrawable(ClientPtr client, - __GLXscreen * screen, + __GLXscreen *screen, DrawablePtr pDraw, XID drawId, - int type, XID glxDrawId, __GLXconfig * conf) + int type, + XID glxDrawId, + __GLXconfig *conf) { __GLXAquaDrawable *glxPriv; @@ -587,8 +599,8 @@ __glXAquaScreenCreateDrawable(ClientPtr client, memset(glxPriv, 0, sizeof *glxPriv); - if (!__glXDrawableInit - (&glxPriv->base, screen, pDraw, type, glxDrawId, conf)) { + if (!__glXDrawableInit(&glxPriv->base, screen, pDraw, type, glxDrawId, + conf)) { free(glxPriv); return NULL; } @@ -619,7 +631,8 @@ __glFloorLog2(GLuint val) } #ifndef OPENGL_FRAMEWORK_PATH -#define OPENGL_FRAMEWORK_PATH "/System/Library/Frameworks/OpenGL.framework/OpenGL" +#define OPENGL_FRAMEWORK_PATH \ + "/System/Library/Frameworks/OpenGL.framework/OpenGL" #endif static void @@ -639,7 +652,7 @@ setup_dispatch_table(void) opengl_framework_path = OPENGL_FRAMEWORK_PATH; } - (void) dlerror(); /*drain dlerror */ + (void)dlerror(); /*drain dlerror */ handle = dlopen(opengl_framework_path, RTLD_LOCAL); if (!handle) { diff --git a/xorg-server/hw/xquartz/GL/visualConfigs.c b/xorg-server/hw/xquartz/GL/visualConfigs.c index c02427c99..e37eefbe4 100644 --- a/xorg-server/hw/xquartz/GL/visualConfigs.c +++ b/xorg-server/hw/xquartz/GL/visualConfigs.c @@ -73,7 +73,7 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) } /* - conf->stereo is 0 or 1, but we need at least 1 iteration of the loop, + 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. @@ -86,9 +86,9 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) 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_accum_buffers iterations for accum (with at least 1 if equal to 0) - conf->total_depth_buffer_depths + 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. @@ -104,14 +104,15 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) 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); + * (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); } if (numConfigsPtr) @@ -125,22 +126,22 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) return NULL; } - c = visualConfigs; /* 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 < ((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 < ((conf->total_accum_buffers > 0) ? + conf-> + total_accum_buffers : 1); ++accum) { for (depth = 0; depth < conf->total_depth_buffer_depths; @@ -159,7 +160,7 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) c->level = 0; c->indexBits = 0; - c->pixmapMode = 0; // TODO: What should this be? + c->pixmapMode = 0; // TODO: What should this be? if (conf->accelerated) { c->visualRating = GLX_NONE; @@ -178,7 +179,8 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) c->visualSelectGroup = 0; - c->swapMethod = GLX_SWAP_UNDEFINED_OML; + c->swapMethod = + GLX_SWAP_UNDEFINED_OML; // Stereo c->stereoMode = stereo ? TRUE : FALSE; @@ -192,10 +194,11 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) buffers ? TRUE : FALSE; // Stencil Buffer - if (conf->total_stencil_bit_depths > 0) { + if (conf->total_stencil_bit_depths > + 0) { c->stencilBits = - conf-> - stencil_bit_depths[stencil]; + conf->stencil_bit_depths[ + stencil]; } else { c->stencilBits = 0; @@ -217,22 +220,27 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) c->blueBits = conf->color_buffers[color].b; - c->rgbBits = - c->alphaBits + c->redBits + - c->greenBits + c->blueBits; + c->rgbBits = c->alphaBits + + c->redBits + + c->greenBits + + c->blueBits; c->alphaMask = AM_ARGB(c->alphaBits, c->redBits, - c->greenBits, c->blueBits); + c->greenBits, + c->blueBits); c->redMask = RM_ARGB(c->alphaBits, c->redBits, - c->greenBits, c->blueBits); + c->greenBits, + c->blueBits); c->greenMask = GM_ARGB(c->alphaBits, c->redBits, - c->greenBits, c->blueBits); + c->greenBits, + c->blueBits); c->blueMask = BM_ARGB(c->alphaBits, c->redBits, - c->greenBits, c->blueBits); + c->greenBits, + c->blueBits); // Accumulation Buffers if (conf->total_accum_buffers > 0) { @@ -242,12 +250,14 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) conf->accum_buffers[accum].g; c->accumBlueBits = conf->accum_buffers[accum].b; - if (GLCAPS_COLOR_BUF_INVALID_VALUE + if ( + GLCAPS_COLOR_BUF_INVALID_VALUE != - conf->accum_buffers[accum].a) { + conf->accum_buffers[accum].a) + { c->accumAlphaBits = - conf->accum_buffers[accum]. - a; + conf->accum_buffers[accum + ].a; } else { c->accumAlphaBits = 0; @@ -276,33 +286,33 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) c->sampleBuffers = 0; } - /* - * The Apple libGL supports GLXPixmaps and + /* + * 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->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; - /* + /*Do we need this?*/ 0; + /* * There is no introspection for this sort of thing * with CGL. What should we do realistically? */ @@ -330,9 +340,9 @@ __glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber) (c - 1)->next = NULL; if (c - visualConfigs != numConfigs) { - FatalError - ("numConfigs calculation error in setVisualConfigs! numConfigs is %d i is %d\n", - numConfigs, (int) (c - visualConfigs)); + FatalError( + "numConfigs calculation error in setVisualConfigs! numConfigs is %d i is %d\n", + numConfigs, (int)(c - visualConfigs)); } freeGlCapabilities(&caps); diff --git a/xorg-server/hw/xquartz/GL/visualConfigs.h b/xorg-server/hw/xquartz/GL/visualConfigs.h index 2e1a1b3fd..889cdb904 100644 --- a/xorg-server/hw/xquartz/GL/visualConfigs.h +++ b/xorg-server/hw/xquartz/GL/visualConfigs.h @@ -23,6 +23,7 @@ #ifndef VISUAL_CONFIGS_H #define VISUAL_CONFIGS_H -__GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber); +__GLXconfig * +__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber); #endif diff --git a/xorg-server/hw/xquartz/X11Application.h b/xorg-server/hw/xquartz/X11Application.h index bdbe6ac1f..87cba6dec 100644 --- a/xorg-server/hw/xquartz/X11Application.h +++ b/xorg-server/hw/xquartz/X11Application.h @@ -1,31 +1,32 @@ /* X11Application.h -- subclass of NSApplication to multiplex events - - Copyright (c) 2002-2007 Apple Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifndef X11APPLICATION_H #define X11APPLICATION_H 1 @@ -34,57 +35,37 @@ #import "X11Controller.h" - @ interface X11Application:NSApplication { +@interface X11Application : NSApplication { X11Controller *_controller; - unsigned int _x_active:1; + unsigned int _x_active : 1; } - -(void) set_controller:controller; - -(void) set_window_menu:(NSArray *) list; - - -(CFPropertyListRef) prefs_get_copy:(NSString *) -key CF_RETURNS_RETAINED; - - -(int) prefs_get_integer:(NSString *) -key default:(int) def; - - -(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 NS_RETURNS_RETAINED; +- (void)set_controller:controller; +- (void)set_window_menu:(NSArray *)list; - -(NSArray *) prefs_get_array:(NSString *) key; - -(void) prefs_set_integer:(NSString *) -key value:(int) value; +- (CFPropertyListRef)prefs_get_copy:(NSString *)key CF_RETURNS_RETAINED; +- (int)prefs_get_integer:(NSString *)key default:(int)def; +- (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 + NS_RETURNS_RETAINED; +- (NSArray *)prefs_get_array:(NSString *)key; +- (void)prefs_set_integer:(NSString *)key value:(int)value; +- (void)prefs_set_float:(NSString *)key value:(float)value; +- (void)prefs_set_boolean:(NSString *)key value:(int)value; +- (void)prefs_set_array:(NSString *)key value:(NSArray *)value; +- (void)prefs_set_string:(NSString *)key value:(NSString *)value; +- (void)prefs_synchronize; - -(void) prefs_set_float:(NSString *) -key value:(float) value; +- (X11Controller *)controller; +- (OSX_BOOL)x_active; +@end - -(void) prefs_set_boolean:(NSString *) -key value:(int) value; +extern X11Application * X11App; - -(void) prefs_set_array:(NSString *) -key value:(NSArray *) value; - - -(void) prefs_set_string:(NSString *) -key value:(NSString *) value; - --(void) prefs_synchronize; - --(X11Controller *) controller; --(OSX_BOOL) x_active; -@end extern X11Application *X11App; - -#endif /* __OBJC__ */ +#endif /* __OBJC__ */ void X11ApplicationSetWindowMenu(int nitems, const char **items, @@ -106,33 +87,37 @@ Bool X11ApplicationCanEnterRandR(void); void +X11ApplicationFatalError(const char *f, va_list args) __printflike(1, 0); + +void X11ApplicationMain(int argc, char **argv, char **envp); -#define PREFS_APPSMENU "apps_menu" -#define PREFS_FAKEBUTTONS "enable_fake_buttons" -#define PREFS_KEYEQUIVS "enable_key_equivalents" -#define PREFS_FULLSCREEN_HOTKEYS "fullscreen_hotkeys" -#define PREFS_FULLSCREEN_MENU "fullscreen_menu" -#define PREFS_SYNC_KEYMAP "sync_keymap" -#define PREFS_DEPTH "depth" -#define PREFS_NO_AUTH "no_auth" -#define PREFS_NO_TCP "nolisten_tcp" -#define PREFS_DONE_XINIT_CHECK "done_xinit_check" -#define PREFS_NO_QUIT_ALERT "no_quit_alert" -#define PREFS_NO_RANDR_ALERT "no_randr_alert" -#define PREFS_OPTION_SENDS_ALT "option_sends_alt" -#define PREFS_FAKE_BUTTON2 "fake_button2" -#define PREFS_FAKE_BUTTON3 "fake_button3" -#define PREFS_APPKIT_MODIFIERS "appkit_modifiers" -#define PREFS_WINDOW_ITEM_MODIFIERS "window_item_modifiers" -#define PREFS_ROOTLESS "rootless" -#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" +#define PREFS_APPSMENU "apps_menu" +#define PREFS_FAKEBUTTONS "enable_fake_buttons" +#define PREFS_KEYEQUIVS "enable_key_equivalents" +#define PREFS_FULLSCREEN_HOTKEYS "fullscreen_hotkeys" +#define PREFS_FULLSCREEN_MENU "fullscreen_menu" +#define PREFS_SYNC_KEYMAP "sync_keymap" +#define PREFS_DEPTH "depth" +#define PREFS_NO_AUTH "no_auth" +#define PREFS_NO_TCP "nolisten_tcp" +#define PREFS_DONE_XINIT_CHECK "done_xinit_check" +#define PREFS_NO_QUIT_ALERT "no_quit_alert" +#define PREFS_NO_RANDR_ALERT "no_randr_alert" +#define PREFS_OPTION_SENDS_ALT "option_sends_alt" +#define PREFS_FAKE_BUTTON2 "fake_button2" +#define PREFS_FAKE_BUTTON3 "fake_button3" +#define PREFS_APPKIT_MODIFIERS "appkit_modifiers" +#define PREFS_WINDOW_ITEM_MODIFIERS "window_item_modifiers" +#define PREFS_ROOTLESS "rootless" +#define PREFS_RENDER_EXTENSION "enable_render_extension" +#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" #define PREFS_SCROLL_IN_DEV_DIRECTION "scroll_in_device_direction" extern Bool XQuartzScrollInDeviceDirection; @@ -143,4 +128,4 @@ extern Bool XQuartzScrollInDeviceDirection; #define PREFS_SYNC_CLIPBOARD_TO_PB "sync_clipboard_to_pasteboard" #define PREFS_SYNC_PRIMARY_ON_SELECT "sync_primary_on_select" -#endif /* X11APPLICATION_H */ +#endif /* X11APPLICATION_H */ diff --git a/xorg-server/hw/xquartz/X11Application.m b/xorg-server/hw/xquartz/X11Application.m index e091fbb3d..a203f7807 100644 --- a/xorg-server/hw/xquartz/X11Application.m +++ b/xorg-server/hw/xquartz/X11Application.m @@ -1,31 +1,32 @@ /* X11Application.m -- subclass of NSApplication to multiplex events - - Copyright (c) 2002-2008 Apple 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 ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #include "sanitizedCarbon.h" @@ -54,9 +55,10 @@ #include <Xplugin.h> // pbproxy/pbproxy.h -extern int xpbproxy_run(void); +extern int +xpbproxy_run(void); -#define DEFAULTS_FILE X11LIBDIR"/X11/xserver/Xquartz.plist" +#define DEFAULTS_FILE X11LIBDIR "/X11/xserver/Xquartz.plist" #ifndef XSERVER_VERSION #define XSERVER_VERSION "?" @@ -69,6 +71,8 @@ static dispatch_queue_t eventTranslationQueue; #endif extern Bool noTestExtensions; +extern Bool noRenderExtension; +extern BOOL serverRunning; #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 static TISInputSourceRef last_key_layout; @@ -93,23 +97,23 @@ X11Application *X11App; CFStringRef app_prefs_domain_cfstr = NULL; -#define ALL_KEY_MASKS (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask) +#define ALL_KEY_MASKS (NSShiftKeyMask | NSControlKeyMask | \ + NSAlternateKeyMask | NSCommandKeyMask) + +@interface X11Application (Private) +- (void) sendX11NSEvent:(NSEvent *)e; +@end + +@implementation X11Application -@interface X11Application(Private) - - (void) sendX11NSEvent:(NSEvent *) e; -@end @ implementation X11Application typedef struct message_struct - message; +typedef struct message_struct message; struct message_struct { - mach_msg_header_t - hdr; - SEL - selector; - NSObject * - arg; + mach_msg_header_t hdr; + SEL selector; + NSObject *arg; }; -static mach_port_t - _port; +static mach_port_t _port; /* Quartz mode initialization routine. This is often dynamically loaded but is statically linked into this X server. */ @@ -122,20 +126,19 @@ init_ports(void) kern_return_t r; NSPort *p; - if (_port != MACH_PORT_NULL) - return; + if (_port != MACH_PORT_NULL) return; r = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &_port); - if (r != KERN_SUCCESS) - return; + if (r != KERN_SUCCESS) return; - p =[NSMachPort portWithMachPort:_port]; - [p setDelegate:NSApp]; - [p scheduleInRunLoop: [NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + p = [NSMachPort portWithMachPort:_port]; + [p setDelegate:NSApp]; + [p scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode: + NSDefaultRunLoopMode]; } static void -message_kit_thread(SEL selector, NSObject * arg) +message_kit_thread(SEL selector, NSObject *arg) { message msg; kern_return_t r; @@ -148,7 +151,7 @@ message_kit_thread(SEL selector, NSObject * arg) msg.hdr.msgh_id = 0; msg.selector = selector; - msg.arg =[arg retain]; + msg.arg = [arg retain]; r = mach_msg(&msg.hdr, MACH_SEND_MSG, msg.hdr.msgh_size, 0, MACH_PORT_NULL, 0, MACH_PORT_NULL); @@ -156,21 +159,22 @@ message_kit_thread(SEL selector, NSObject * arg) ErrorF("%s: mach_msg failed: %x\n", __FUNCTION__, r); } - -(void) handleMachMessage:(void *) _msg { +- (void) handleMachMessage:(void *)_msg +{ message *msg = _msg; - [self performSelector: msg->selector withObject:msg->arg]; + [self performSelector:msg->selector withObject:msg->arg]; [msg->arg release]; } - -(void) set_controller:obj { - if (_controller == nil) - _controller =[obj retain]; +- (void) set_controller:obj +{ + if (_controller == nil) _controller = [obj retain]; } --(void) dealloc { - if (_controller != nil) - [_controller release]; +- (void) dealloc +{ + if (_controller != nil) [_controller release]; if (_port != MACH_PORT_NULL) mach_port_deallocate(mach_task_self(), _port); @@ -178,30 +182,32 @@ message_kit_thread(SEL selector, NSObject * arg) [super dealloc]; } - -(void) orderFrontStandardAboutPanel:(id) sender { +- (void) orderFrontStandardAboutPanel: (id) sender +{ NSMutableDictionary *dict; NSDictionary *infoDict; NSString *tem; - dict =[NSMutableDictionary dictionaryWithCapacity:3]; - infoDict =[[NSBundle mainBundle] infoDictionary]; + dict = [NSMutableDictionary dictionaryWithCapacity:3]; + infoDict = [[NSBundle mainBundle] infoDictionary]; - [dict setObject:NSLocalizedString(@"The X Window System", @"About panel") - forKey:@"ApplicationName"]; + [dict setObject: NSLocalizedString(@"The X Window System", @"About panel") + forKey:@"ApplicationName"]; - tem =[infoDict objectForKey:@"CFBundleShortVersionString"]; + tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject: [NSString stringWithFormat:@"XQuartz %@", tem] - forKey:@"ApplicationVersion"]; + [dict setObject:[NSString stringWithFormat:@"XQuartz %@", tem] + forKey:@"ApplicationVersion"]; - [dict setObject: [NSString stringWithFormat:@"xorg-server %s", - XSERVER_VERSION] - forKey:@"Version"]; + [dict setObject:[NSString stringWithFormat:@"xorg-server %s", + XSERVER_VERSION] + forKey:@"Version"]; - [self orderFrontStandardAboutPanelWithOptions:dict]; + [self orderFrontStandardAboutPanelWithOptions: dict]; } - -(void) activateX:(OSX_BOOL) state { +- (void) activateX:(OSX_BOOL)state +{ if (_x_active == state) return; @@ -210,7 +216,8 @@ message_kit_thread(SEL selector, NSObject * arg) if (bgMouseLocationUpdated) { DarwinSendPointerEvents(darwinPointer, MotionNotify, 0, bgMouseLocation.x, bgMouseLocation.y, 0.0, - 0.0, 0.0); + 0.0, + 0.0); bgMouseLocationUpdated = FALSE; } DarwinSendDDXEvent(kXquartzActivate, 0); @@ -232,11 +239,13 @@ message_kit_thread(SEL selector, NSObject * arg) _x_active = state; } - -(void) became_key:(NSWindow *) win { - [self activateX:NO]; +- (void) became_key:(NSWindow *)win +{ + [self activateX:NO]; } - -(void) sendEvent:(NSEvent *) e { +- (void) sendEvent:(NSEvent *)e +{ OSX_BOOL for_appkit, for_x; /* By default pass down the responder chain and to X. */ @@ -253,8 +262,7 @@ message_kit_thread(SEL selector, NSObject * arg) if ([e window] != nil) { /* Pointer event has an (AppKit) window. Probably something for the kit. */ for_x = NO; - if (_x_active) - [self activateX:NO]; + if (_x_active) [self activateX:NO]; } else if ([self modalWindow] == nil) { /* Must be an X window. Tell appkit it doesn't have focus. */ @@ -263,27 +271,26 @@ message_kit_thread(SEL selector, NSObject * arg) if ([self isActive]) { [self deactivate]; if (!_x_active && quartzProcs->IsX11Window([e windowNumber])) - [self activateX: YES]; + [self activateX:YES]; } } /* We want to force sending to appkit if we're over the menu bar */ if (!for_appkit) { - NSPoint NSlocation =[e locationInWindow]; - NSWindow *window =[e window]; + NSPoint NSlocation = [e locationInWindow]; + NSWindow *window = [e window]; NSRect NSframe, NSvisibleFrame; CGRect CGframe, CGvisibleFrame; CGPoint CGlocation; if (window != nil) { - NSRect frame =[window frame]; - + NSRect frame = [window frame]; NSlocation.x += frame.origin.x; NSlocation.y += frame.origin.y; } - NSframe =[[NSScreen mainScreen] frame]; - NSvisibleFrame =[[NSScreen mainScreen] visibleFrame]; + NSframe = [[NSScreen mainScreen] frame]; + NSvisibleFrame = [[NSScreen mainScreen] visibleFrame]; CGframe = CGRectMake(NSframe.origin.x, NSframe.origin.y, NSframe.size.width, NSframe.size.height); @@ -313,21 +320,21 @@ message_kit_thread(SEL selector, NSObject * arg) if (darwinAppKitModMask &[e modifierFlags]) { /* Override to force sending to Appkit */ - swallow_keycode =[e keyCode]; + swallow_keycode = [e keyCode]; do_swallow = YES; for_x = NO; #if XPLUGIN_VERSION >= 1 } else if (XQuartzEnableKeyEquivalents && xp_is_symbolic_hotkey_event([e eventRef])) { - swallow_keycode =[e keyCode]; + swallow_keycode = [e keyCode]; do_swallow = YES; for_x = NO; #endif } - else if (XQuartzEnableKeyEquivalents &&[[self mainMenu] performKeyEquivalent:e]) - { - swallow_keycode =[e keyCode]; + else if (XQuartzEnableKeyEquivalents && + [[self mainMenu] performKeyEquivalent:e]) { + swallow_keycode = [e keyCode]; do_swallow = YES; for_appkit = NO; for_x = NO; @@ -335,11 +342,11 @@ message_kit_thread(SEL selector, NSObject * arg) else if (!XQuartzIsRootless && ([e modifierFlags] & ALL_KEY_MASKS) == (NSCommandKeyMask | NSAlternateKeyMask) - && ([e keyCode] == 0 /*a */ || - [e keyCode] == 53 /*Esc */ )) { - /* We have this here to force processing fullscreen + && ([e keyCode] == 0 /*a*/ || [e keyCode] == + 53 /*Esc*/)) { + /* We have this here to force processing fullscreen * toggle even if XQuartzEnableKeyEquivalents is disabled */ - swallow_keycode =[e keyCode]; + swallow_keycode = [e keyCode]; do_swallow = YES; for_x = NO; for_appkit = NO; @@ -350,16 +357,16 @@ message_kit_thread(SEL selector, NSObject * arg) for_appkit = NO; } } - else { /* KeyUp */ + else { /* KeyUp */ /* If we saw a key equivalent on the down, don't pass * the up through to X. */ - if (do_swallow &&[e keyCode] == swallow_keycode) { + if (do_swallow && [e keyCode] == swallow_keycode) { do_swallow = NO; for_x = NO; } } } - else { /* !_x_active */ + else { /* !_x_active */ for_x = NO; } break; @@ -378,7 +385,6 @@ message_kit_thread(SEL selector, NSObject * arg) for_x = NO; if ([e window] == nil && x_was_active) { BOOL order_all_windows = YES, workspaces, ok; - for_appkit = NO; /* FIXME: This is a hack to avoid passing the event to AppKit which @@ -386,26 +392,26 @@ message_kit_thread(SEL selector, NSObject * arg) */ _appFlags._active = YES; - [self set_front_process:nil]; + [self set_front_process:nil]; /* Get the Spaces preference for SwitchOnActivate */ - (void) CFPreferencesAppSynchronize(CFSTR("com.apple.dock")); + (void)CFPreferencesAppSynchronize(CFSTR("com.apple.dock")); workspaces = CFPreferencesGetAppBooleanValue(CFSTR("workspaces"), - CFSTR("com.apple.dock"), + CFSTR( + "com.apple.dock"), &ok); if (!ok) workspaces = NO; if (workspaces) { - (void) - CFPreferencesAppSynchronize(CFSTR - (".GlobalPreferences")); + (void)CFPreferencesAppSynchronize(CFSTR( + ".GlobalPreferences")); order_all_windows = - CFPreferencesGetAppBooleanValue(CFSTR - ("AppleSpacesSwitchOnActivate"), - CFSTR - (".GlobalPreferences"), + CFPreferencesGetAppBooleanValue(CFSTR( + "AppleSpacesSwitchOnActivate"), + CFSTR( + ".GlobalPreferences"), &ok); if (!ok) order_all_windows = YES; @@ -418,16 +424,15 @@ message_kit_thread(SEL selector, NSObject * arg) * If there are no active windows, and there are minimized windows, we should * be restoring one of them. */ - if ([e data2] & 0x10) { // 0x10 (bfCPSOrderAllWindowsForward) is set when we use cmd-tab or the dock icon + if ([e data2] & 0x10) { // 0x10 (bfCPSOrderAllWindowsForward) is set when we use cmd-tab or the dock icon DarwinSendDDXEvent(kXquartzBringAllToFront, 1, order_all_windows); } } break; - case 18: /* ApplicationDidReactivate */ - if (XQuartzFullscreenVisible) - for_appkit = NO; + case 18: /* ApplicationDidReactivate */ + if (XQuartzFullscreenVisible) for_appkit = NO; break; case NSApplicationDeactivatedEventType: @@ -435,73 +440,80 @@ message_kit_thread(SEL selector, NSObject * arg) x_was_active = _x_active; if (_x_active) - [self activateX:NO]; + [self activateX:NO]; break; } break; default: - break; /* for gcc */ + break; /* for gcc */ } - if (for_appkit) - [super sendEvent:e]; + if (for_appkit) [super sendEvent:e]; if (for_x) { #ifdef HAVE_LIBDISPATCH - dispatch_async(eventTranslationQueue, ^ { -#endif - [self sendX11NSEvent:e]; -#ifdef HAVE_LIBDISPATCH - } - ); + dispatch_async(eventTranslationQueue, ^{ + [self sendX11NSEvent:e]; + }); +#else + [self sendX11NSEvent:e]; #endif } } - -(void) set_window_menu:(NSArray *) list { - [_controller set_window_menu:list]; +- (void) set_window_menu:(NSArray *)list +{ + [_controller set_window_menu:list]; } - -(void) set_window_menu_check:(NSNumber *) n { - [_controller set_window_menu_check:n]; +- (void) set_window_menu_check:(NSNumber *)n +{ + [_controller set_window_menu_check:n]; } - -(void) set_apps_menu:(NSArray *) list { - [_controller set_apps_menu:list]; +- (void) set_apps_menu:(NSArray *)list +{ + [_controller set_apps_menu:list]; } - -(void) set_front_process:unused { - [NSApp activateIgnoringOtherApps:YES]; +- (void) set_front_process:unused +{ + [NSApp activateIgnoringOtherApps:YES]; if ([self modalWindow] == nil) - [self activateX:YES]; + [self activateX:YES]; } - -(void) set_can_quit:(NSNumber *) state { - [_controller set_can_quit:[state boolValue]]; +- (void) set_can_quit:(NSNumber *)state +{ + [_controller set_can_quit:[state boolValue]]; } - -(void) server_ready:unused { +- (void) server_ready:unused +{ [_controller server_ready]; } - -(void) show_hide_menubar:(NSNumber *) state { +- (void) show_hide_menubar:(NSNumber *)state +{ /* Also shows/hides the dock */ if ([state boolValue]) SetSystemUIMode(kUIModeNormal, 0); else - SetSystemUIMode(kUIModeAllHidden, XQuartzFullscreenMenu ? kUIOptionAutoShowMenuBar : 0); // kUIModeAllSuppressed or kUIOptionAutoShowMenuBar can be used to allow "mouse-activation" + SetSystemUIMode(kUIModeAllHidden, + XQuartzFullscreenMenu ? kUIOptionAutoShowMenuBar : 0); // kUIModeAllSuppressed or kUIOptionAutoShowMenuBar can be used to allow "mouse-activation" } - -(void) launch_client:(NSString *) cmd { - (void)[_controller application: self openFile:cmd]; +- (void) launch_client:(NSString *)cmd +{ + (void)[_controller application:self openFile:cmd]; } /* user preferences */ /* Note that these functions only work for arrays whose elements - can be toll-free-bridged between NS and CF worlds. */ + can be toll-free-bridged between NS and CF worlds. */ static const void * cfretain(CFAllocatorRef a, const void *b) @@ -516,7 +528,7 @@ cfrelease(CFAllocatorRef a, const void *b) } static CFMutableArrayRef -nsarray_to_cfarray(NSArray * in) +nsarray_to_cfarray(NSArray *in) { CFMutableArrayRef out; CFArrayCallBacks cb; @@ -529,16 +541,16 @@ nsarray_to_cfarray(NSArray * in) cb.retain = cfretain; cb.release = cfrelease; - count =[in count]; + count = [in count]; out = CFArrayCreateMutable(NULL, count, &cb); for (i = 0; i < count; i++) { - ns =[in objectAtIndex:i]; + ns = [in objectAtIndex:i]; - if ([ns isKindOfClass:[NSArray class]]) - cf = (CFTypeRef) nsarray_to_cfarray((NSArray *) ns); + if ([ns isKindOfClass:[NSArray class]]) + cf = (CFTypeRef)nsarray_to_cfarray((NSArray *)ns); else - cf = CFRetain((CFTypeRef) ns); + cf = CFRetain((CFTypeRef)ns); CFArrayAppendValue(out, cf); CFRelease(cf); @@ -556,28 +568,29 @@ cfarray_to_nsarray(CFArrayRef in) int i, count; count = CFArrayGetCount(in); - out =[[NSMutableArray alloc] initWithCapacity:count]; + out = [[NSMutableArray alloc] initWithCapacity:count]; for (i = 0; i < count; i++) { cf = CFArrayGetValueAtIndex(in, i); if (CFGetTypeID(cf) == CFArrayGetTypeID()) - ns = cfarray_to_nsarray((CFArrayRef) cf); + ns = cfarray_to_nsarray((CFArrayRef)cf); else - ns =[(id) cf retain]; + ns = [(id) cf retain]; - [out addObject:ns]; + [out addObject:ns]; [ns release]; } return out; } - -(CFPropertyListRef) prefs_get_copy:(NSString *) key { +- (CFPropertyListRef) prefs_get_copy:(NSString *)key +{ CFPropertyListRef value; - value = - CFPreferencesCopyAppValue((CFStringRef) key, app_prefs_domain_cfstr); + value = CFPreferencesCopyAppValue((CFStringRef)key, + app_prefs_domain_cfstr); if (value == NULL) { static CFDictionaryRef defaults; @@ -589,16 +602,16 @@ cfarray_to_nsarray(CFArrayRef in) SInt32 error_code; url = (CFURLCreateFromFileSystemRepresentation - (NULL, (unsigned char *) DEFAULTS_FILE, - strlen(DEFAULTS_FILE), false)); - if (CFURLCreateDataAndPropertiesFromResource - (NULL, url, &data, NULL, NULL, &error_code)) { - defaults = - (CFPropertyListCreateFromXMLData - (NULL, data, kCFPropertyListMutableContainersAndLeaves, - &error)); - if (error != NULL) - CFRelease(error); + (NULL, (unsigned char *)DEFAULTS_FILE, + strlen(DEFAULTS_FILE), false)); + if (CFURLCreateDataAndPropertiesFromResource(NULL, url, &data, + NULL, NULL, + &error_code)) { + defaults = (CFPropertyListCreateFromXMLData + (NULL, data, + kCFPropertyListMutableContainersAndLeaves, + &error)); + if (error != NULL) CFRelease(error); CFRelease(data); } CFRelease(url); @@ -610,17 +623,20 @@ cfarray_to_nsarray(CFArrayRef in) /* Localize the names in the default apps menu. */ - apps =[(NSDictionary *) defaults objectForKey:@PREFS_APPSMENU]; + apps = + [(NSDictionary *) defaults objectForKey:@PREFS_APPSMENU]; if (apps != nil) { - count =[apps count]; + count = [apps count]; for (i = 0; i < count; i++) { - elt =[apps objectAtIndex:i]; - if (elt != nil &&[elt isKindOfClass:[NSArray class]]) { - name =[elt objectAtIndex: 0]; + elt = [apps objectAtIndex:i]; + if (elt != nil && + [elt isKindOfClass:[NSArray class]]) { + name = [elt objectAtIndex:0]; if (name != nil) { nname = NSLocalizedString(name, nil); if (nname != nil && nname != name) - [elt replaceObjectAtIndex: 0 withObject:nname]; + [elt replaceObjectAtIndex:0 withObject: + nname]; } } } @@ -628,22 +644,19 @@ cfarray_to_nsarray(CFArrayRef in) } } - if (defaults != NULL) - value = CFDictionaryGetValue(defaults, key); - if (value != NULL) - CFRetain(value); + if (defaults != NULL) value = CFDictionaryGetValue(defaults, key); + if (value != NULL) CFRetain(value); } return value; } - -(int) prefs_get_integer:(NSString *) -key default:(int) def +- (int) prefs_get_integer:(NSString *)key default:(int)def { CFPropertyListRef value; int ret; - value =[self prefs_get_copy:key]; + value = [self prefs_get_copy:key]; if (value != NULL && CFGetTypeID(value) == CFNumberGetTypeID()) CFNumberGetValue(value, kCFNumberIntType, &ret); @@ -652,80 +665,73 @@ key default:(int) def else ret = def; - if (value != NULL) - CFRelease(value); + if (value != NULL) CFRelease(value); return ret; } - -(const char *) prefs_get_string:(NSString *) -key default:(const char *) def +- (const char *) prefs_get_string:(NSString *)key default:(const char *)def { CFPropertyListRef value; const char *ret = NULL; - value =[self prefs_get_copy:key]; + value = [self prefs_get_copy:key]; if (value != NULL && CFGetTypeID(value) == CFStringGetTypeID()) { - NSString *s = (NSString *) value; + NSString *s = (NSString *)value; - ret =[s UTF8String]; + ret = [s UTF8String]; } - if (value != NULL) - CFRelease(value); + if (value != NULL) CFRelease(value); return ret != NULL ? ret : def; } - -(NSURL *) prefs_copy_url:(NSString *) -key default:(NSURL *) def +- (NSURL *) prefs_copy_url:(NSString *)key default:(NSURL *)def { CFPropertyListRef value; NSURL *ret = NULL; - value =[self prefs_get_copy:key]; + value = [self prefs_get_copy:key]; if (value != NULL && CFGetTypeID(value) == CFStringGetTypeID()) { - NSString *s = (NSString *) value; + NSString *s = (NSString *)value; - ret =[NSURL URLWithString:s]; + ret = [NSURL URLWithString:s]; [ret retain]; } - if (value != NULL) - CFRelease(value); + if (value != NULL) CFRelease(value); return ret != NULL ? ret : def; } - -(float) prefs_get_float:(NSString *) -key default:(float) def +- (float) prefs_get_float:(NSString *)key default:(float)def { CFPropertyListRef value; float ret = def; - value =[self prefs_get_copy:key]; + value = [self prefs_get_copy:key]; - if (value != NULL && CFGetTypeID(value) == CFNumberGetTypeID() + if (value != NULL + && CFGetTypeID(value) == CFNumberGetTypeID() && CFNumberIsFloatType(value)) CFNumberGetValue(value, kCFNumberFloatType, &ret); else if (value != NULL && CFGetTypeID(value) == CFStringGetTypeID()) ret = CFStringGetDoubleValue(value); - if (value != NULL) - CFRelease(value); + if (value != NULL) CFRelease(value); return ret; } - -(int) prefs_get_boolean:(NSString *) -key default:(int) def +- (int) prefs_get_boolean:(NSString *)key default:(int)def { CFPropertyListRef value; int ret = def; - value =[self prefs_get_copy:key]; + value = [self prefs_get_copy:key]; if (value != NULL) { if (CFGetTypeID(value) == CFNumberGetTypeID()) @@ -733,8 +739,7 @@ key default:(int) def else if (CFGetTypeID(value) == CFBooleanGetTypeID()) ret = CFBooleanGetValue(value); else if (CFGetTypeID(value) == CFStringGetTypeID()) { - const char *tem =[(NSString *) value UTF8String]; - + const char *tem = [(NSString *) value UTF8String]; if (strcasecmp(tem, "true") == 0 || strcasecmp(tem, "yes") == 0) ret = YES; else @@ -746,15 +751,16 @@ key default:(int) def return ret; } - -(NSArray *) prefs_get_array:(NSString *) key { +- (NSArray *) prefs_get_array:(NSString *)key +{ NSArray *ret = nil; CFPropertyListRef value; - value =[self prefs_get_copy:key]; + value = [self prefs_get_copy:key]; if (value != NULL) { if (CFGetTypeID(value) == CFArrayGetTypeID()) - ret =[cfarray_to_nsarray(value) autorelease]; + ret = [cfarray_to_nsarray (value)autorelease]; CFRelease(value); } @@ -762,161 +768,167 @@ key default:(int) def return ret; } - -(void) prefs_set_integer:(NSString *) -key value:(int) value +- (void) prefs_set_integer:(NSString *)key value:(int)value { CFNumberRef x; x = CFNumberCreate(NULL, kCFNumberIntType, &value); - CFPreferencesSetValue((CFStringRef) key, (CFTypeRef) x, - app_prefs_domain_cfstr, kCFPreferencesCurrentUser, + CFPreferencesSetValue((CFStringRef)key, (CFTypeRef)x, + app_prefs_domain_cfstr, + kCFPreferencesCurrentUser, kCFPreferencesAnyHost); CFRelease(x); } - -(void) prefs_set_float:(NSString *) -key value:(float) value +- (void) prefs_set_float:(NSString *)key value:(float)value { CFNumberRef x; x = CFNumberCreate(NULL, kCFNumberFloatType, &value); - CFPreferencesSetValue((CFStringRef) key, (CFTypeRef) x, - app_prefs_domain_cfstr, kCFPreferencesCurrentUser, + CFPreferencesSetValue((CFStringRef)key, (CFTypeRef)x, + app_prefs_domain_cfstr, + kCFPreferencesCurrentUser, kCFPreferencesAnyHost); CFRelease(x); } - -(void) prefs_set_boolean:(NSString *) -key value:(int) value +- (void) prefs_set_boolean:(NSString *)key value:(int)value { - CFPreferencesSetValue((CFStringRef) key, - (CFTypeRef) (value ? kCFBooleanTrue - : kCFBooleanFalse), - app_prefs_domain_cfstr, kCFPreferencesCurrentUser, - kCFPreferencesAnyHost); + CFPreferencesSetValue( + (CFStringRef)key, + (CFTypeRef)(value ? kCFBooleanTrue + : kCFBooleanFalse), + app_prefs_domain_cfstr, + kCFPreferencesCurrentUser, kCFPreferencesAnyHost); } - -(void) prefs_set_array:(NSString *) -key value:(NSArray *) value +- (void) prefs_set_array:(NSString *)key value:(NSArray *)value { CFArrayRef cfarray; cfarray = nsarray_to_cfarray(value); - CFPreferencesSetValue((CFStringRef) key, - (CFTypeRef) cfarray, + CFPreferencesSetValue((CFStringRef)key, + (CFTypeRef)cfarray, app_prefs_domain_cfstr, kCFPreferencesCurrentUser, kCFPreferencesAnyHost); CFRelease(cfarray); } - -(void) prefs_set_string:(NSString *) -key value:(NSString *) value +- (void) prefs_set_string:(NSString *)key value:(NSString *)value { - CFPreferencesSetValue((CFStringRef) key, (CFTypeRef) value, + CFPreferencesSetValue((CFStringRef)key, (CFTypeRef)value, app_prefs_domain_cfstr, kCFPreferencesCurrentUser, kCFPreferencesAnyHost); } --(void) prefs_synchronize { +- (void) prefs_synchronize +{ CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication); } --(void) read_defaults { +- (void) read_defaults +{ NSString *nsstr; const char *tem; -XQuartzRootlessDefault =[self prefs_get_boolean: @PREFS_ROOTLESS default: -XQuartzRootlessDefault]; -XQuartzFullscreenMenu =[self prefs_get_boolean: @PREFS_FULLSCREEN_MENU default: -XQuartzFullscreenMenu]; -XQuartzFullscreenDisableHotkeys = ![self prefs_get_boolean: @PREFS_FULLSCREEN_HOTKEYS default: -!XQuartzFullscreenDisableHotkeys]; -darwinFakeButtons =[self prefs_get_boolean: @PREFS_FAKEBUTTONS default: -darwinFakeButtons]; -XQuartzOptionSendsAlt =[self prefs_get_boolean: @PREFS_OPTION_SENDS_ALT default: -XQuartzOptionSendsAlt]; + XQuartzRootlessDefault = [self prefs_get_boolean:@PREFS_ROOTLESS + default :XQuartzRootlessDefault]; + XQuartzFullscreenMenu = [self prefs_get_boolean:@PREFS_FULLSCREEN_MENU + default :XQuartzFullscreenMenu]; + XQuartzFullscreenDisableHotkeys = + ![self prefs_get_boolean:@PREFS_FULLSCREEN_HOTKEYS + default :! + XQuartzFullscreenDisableHotkeys]; + darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS + default :darwinFakeButtons]; + XQuartzOptionSendsAlt = [self prefs_get_boolean:@PREFS_OPTION_SENDS_ALT + default :XQuartzOptionSendsAlt]; if (darwinFakeButtons) { const char *fake2, *fake3; -fake2 =[self prefs_get_string: @PREFS_FAKE_BUTTON2 default: -NULL]; -fake3 =[self prefs_get_string: @PREFS_FAKE_BUTTON3 default: -NULL]; + fake2 = [self prefs_get_string:@PREFS_FAKE_BUTTON2 default:NULL]; + fake3 = [self prefs_get_string:@PREFS_FAKE_BUTTON3 default:NULL]; - if (fake2 != NULL) - darwinFakeMouse2Mask = DarwinParseModifierList(fake2, TRUE); - if (fake3 != NULL) - darwinFakeMouse3Mask = DarwinParseModifierList(fake3, TRUE); + if (fake2 != NULL) darwinFakeMouse2Mask = DarwinParseModifierList( + fake2, TRUE); + if (fake3 != NULL) darwinFakeMouse3Mask = DarwinParseModifierList( + fake3, TRUE); } -tem =[self prefs_get_string: @PREFS_APPKIT_MODIFIERS default: -NULL]; - if (tem != NULL) - darwinAppKitModMask = DarwinParseModifierList(tem, TRUE); + tem = [self prefs_get_string:@PREFS_APPKIT_MODIFIERS default:NULL]; + if (tem != NULL) darwinAppKitModMask = DarwinParseModifierList(tem, TRUE); -tem =[self prefs_get_string: @PREFS_WINDOW_ITEM_MODIFIERS default: -NULL]; + tem = [self prefs_get_string:@PREFS_WINDOW_ITEM_MODIFIERS default:NULL]; if (tem != NULL) { windowItemModMask = DarwinParseModifierList(tem, FALSE); } else { - nsstr = - NSLocalizedString(@"window item modifiers", - @"window item modifiers"); + nsstr = NSLocalizedString(@"window item modifiers", + @"window item modifiers"); if (nsstr != NULL) { - tem =[nsstr UTF8String]; + tem = [nsstr UTF8String]; if ((tem != NULL) && strcmp(tem, "window item modifiers")) { windowItemModMask = DarwinParseModifierList(tem, FALSE); } } } -XQuartzEnableKeyEquivalents =[self prefs_get_boolean: @PREFS_KEYEQUIVS default: -XQuartzEnableKeyEquivalents]; + XQuartzEnableKeyEquivalents = [self prefs_get_boolean:@PREFS_KEYEQUIVS + default : + XQuartzEnableKeyEquivalents]; -darwinSyncKeymap =[self prefs_get_boolean: @PREFS_SYNC_KEYMAP default: -darwinSyncKeymap]; + darwinSyncKeymap = [self prefs_get_boolean:@PREFS_SYNC_KEYMAP + default :darwinSyncKeymap]; -darwinDesiredDepth =[self prefs_get_integer: @PREFS_DEPTH default: -darwinDesiredDepth]; + darwinDesiredDepth = [self prefs_get_integer:@PREFS_DEPTH + default :darwinDesiredDepth]; -noTestExtensions = ![self prefs_get_boolean: @PREFS_TEST_EXTENSIONS default: -FALSE]; + noTestExtensions = ![self prefs_get_boolean:@PREFS_TEST_EXTENSIONS + default :FALSE]; -XQuartzScrollInDeviceDirection =[self prefs_get_boolean: @PREFS_SCROLL_IN_DEV_DIRECTION default: -XQuartzScrollInDeviceDirection]; + noRenderExtension = ![self prefs_get_boolean:@PREFS_RENDER_EXTENSION + default :TRUE]; -#if XQUARTZ_SPARKLE -NSURL *url =[self prefs_copy_url: @PREFS_UPDATE_FEED default: -nil]; + XQuartzScrollInDeviceDirection = + [self prefs_get_boolean:@PREFS_SCROLL_IN_DEV_DIRECTION + default : + XQuartzScrollInDeviceDirection]; +#if XQUARTZ_SPARKLE + NSURL *url = [self prefs_copy_url:@PREFS_UPDATE_FEED default:nil]; if (url) { - [[SUUpdater sharedUpdater] setFeedURL:url]; + [[SUUpdater sharedUpdater] setFeedURL:url]; [url release]; } #endif } /* This will end up at the end of the responder chain. */ - -(void) copy:sender { - DarwinSendDDXEvent(kXquartzPasteboardNotify, 1, AppleWMCopyToPasteboard); +- (void) copy:sender +{ + DarwinSendDDXEvent(kXquartzPasteboardNotify, 1, + AppleWMCopyToPasteboard); } --(X11Controller *) controller { +- (X11Controller *) controller +{ return _controller; } --(OSX_BOOL) x_active { +- (OSX_BOOL) x_active +{ return _x_active; } -@end static NSArray * +@end + +static NSArray * array_with_strings_and_numbers(int nitems, const char **items, const char *numbers) { @@ -926,24 +938,24 @@ array_with_strings_and_numbers(int nitems, const char **items, /* (Can't autorelease on the X server thread) */ - array =[[NSMutableArray alloc] initWithCapacity:nitems]; + array = [[NSMutableArray alloc] initWithCapacity:nitems]; for (i = 0; i < nitems; i++) { - subarray =[[NSMutableArray alloc] initWithCapacity:2]; + subarray = [[NSMutableArray alloc] initWithCapacity:2]; - string =[[NSString alloc] initWithUTF8String:items[i]]; - [subarray addObject:string]; + string = [[NSString alloc] initWithUTF8String:items[i]]; + [subarray addObject:string]; [string release]; if (numbers[i] != 0) { - number =[[NSString alloc] initWithFormat:@"%d", numbers[i]]; - [subarray addObject:number]; + number = [[NSString alloc] initWithFormat:@"%d", numbers[i]]; + [subarray addObject:number]; [number release]; } else - [subarray addObject:@""]; + [subarray addObject:@""]; - [array addObject:subarray]; + [array addObject:subarray]; [subarray release]; } @@ -955,12 +967,11 @@ X11ApplicationSetWindowMenu(int nitems, const char **items, const char *shortcuts) { NSArray *array; - array = array_with_strings_and_numbers(nitems, items, shortcuts); /* Send the array of strings over to the appkit thread */ - message_kit_thread(@selector(set_window_menu:), array); + message_kit_thread(@selector (set_window_menu:), array); [array release]; } @@ -969,9 +980,9 @@ X11ApplicationSetWindowMenuCheck(int idx) { NSNumber *n; - n =[[NSNumber alloc] initWithInt:idx]; + n = [[NSNumber alloc] initWithInt:idx]; - message_kit_thread(@selector(set_window_menu_check:), n); + message_kit_thread(@selector (set_window_menu_check:), n); [n release]; } @@ -979,7 +990,7 @@ X11ApplicationSetWindowMenuCheck(int idx) void X11ApplicationSetFrontProcess(void) { - message_kit_thread(@selector(set_front_process:), nil); + message_kit_thread(@selector (set_front_process:), nil); } void @@ -987,9 +998,9 @@ X11ApplicationSetCanQuit(int state) { NSNumber *n; - n =[[NSNumber alloc] initWithBool:state]; + n = [[NSNumber alloc] initWithBool:state]; - message_kit_thread(@selector(set_can_quit:), n); + message_kit_thread(@selector (set_can_quit:), n); [n release]; } @@ -997,7 +1008,7 @@ X11ApplicationSetCanQuit(int state) void X11ApplicationServerReady(void) { - message_kit_thread(@selector(server_ready:), nil); + message_kit_thread(@selector (server_ready:), nil); } void @@ -1005,9 +1016,9 @@ X11ApplicationShowHideMenubar(int state) { NSNumber *n; - n =[[NSNumber alloc] initWithBool:state]; + n = [[NSNumber alloc] initWithBool:state]; - message_kit_thread(@selector(show_hide_menubar:), n); + message_kit_thread(@selector (show_hide_menubar:), n); [n release]; } @@ -1017,9 +1028,9 @@ X11ApplicationLaunchClient(const char *cmd) { NSString *string; - string =[[NSString alloc] initWithUTF8String:cmd]; + string = [[NSString alloc] initWithUTF8String:cmd]; - message_kit_thread(@selector(launch_client:), string); + message_kit_thread(@selector (launch_client:), string); [string release]; } @@ -1033,28 +1044,29 @@ X11ApplicationCanEnterRandR(void) { NSString *title, *msg; -if ([X11App prefs_get_boolean: @PREFS_NO_RANDR_ALERT default: -NO] || XQuartzShieldingWindowLevel != 0) + if ([X11App prefs_get_boolean:@PREFS_NO_RANDR_ALERT default:NO] || + XQuartzShieldingWindowLevel != 0) return TRUE; - title = - NSLocalizedString(@"Enter RandR mode?", - @"Dialog title when switching to RandR"); - msg = - NSLocalizedString - (@"An application has requested X11 to change the resolution of your display. X11 will restore the display to its previous state when the requesting application requests to return to the previous state. Alternatively, you can use the ⌥⌘A key sequence to force X11 to return to the previous state.", - @"Dialog when switching to RandR"); + title = NSLocalizedString(@"Enter RandR mode?", + @"Dialog title when switching to RandR"); + msg = NSLocalizedString( + @"An application has requested X11 to change the resolution of your display. X11 will restore the display to its previous state when the requesting application requests to return to the previous state. Alternatively, you can use the ⌥⌘A key sequence to force X11 to return to the previous state.", + @"Dialog when switching to RandR"); if (!XQuartzIsRootless) QuartzShowFullscreen(FALSE); - switch (NSRunAlertPanel - (title, msg, NSLocalizedString(@"Allow", @""), - NSLocalizedString(@"Cancel", @""), - NSLocalizedString(@"Always Allow", @""))) { + switch (NSRunAlertPanel(title, msg, + NSLocalizedString(@"Allow", + @""), + NSLocalizedString(@"Cancel", + @""), + NSLocalizedString(@"Always Allow", @""))) { case NSAlertOtherReturn: - [X11App prefs_set_boolean: @PREFS_NO_RANDR_ALERT value:YES]; + [X11App prefs_set_boolean:@PREFS_NO_RANDR_ALERT value:YES]; [X11App prefs_synchronize]; + case NSAlertDefaultReturn: return YES; @@ -1063,33 +1075,82 @@ NO] || XQuartzShieldingWindowLevel != 0) } } +void +X11ApplicationFatalError(const char *f, va_list args) +{ +#ifdef HAVE_LIBDISPATCH + NSString *title, *msg; + char *error_msg; + + /* This is called by FatalError() in the server thread just before + * we would abort. If the server never got off the ground, We should + * inform the user of the error rather than letting the ever-so-friendly + * CrashReporter do it for us. + * + * This also has the benefit of forcing user interaction rather than + * allowing an infinite throttled-restart if the crash occurs before + * we can drain the launchd socket. + */ + + if (serverRunning) { + return; + } + + title = NSLocalizedString(@"The application X11 could not be opened.", + @"Dialog title when encountering a fatal error"); + msg = NSLocalizedString( + @"An error occurred while starting the X11 server: \"%s\"\n\nClick Quit to quit X11. Click Report to see more details or send a report to Apple.", + @"Dialog when encountering a fatal error"); + + vasprintf(&error_msg, f, args); + msg = [NSString stringWithFormat:msg, error_msg]; + + /* We want the AppKit thread to actually service the alert or we will race [NSApp run] and create an + * 'NSInternalInconsistencyException', reason: 'NSApp with wrong _running count' + */ + dispatch_sync(dispatch_get_main_queue(), ^{ + if (NSAlertDefaultReturn == + NSRunAlertPanel (title, msg, + NSLocalizedString (@"Quit", @""), + NSLocalizedString ( + @"Report...", @""), nil)) { + exit (EXIT_FAILURE); + } + }); + + /* fall back to caller to do the abort() in the DIX */ +#endif +} + static void check_xinitrc(void) { char *tem, buf[1024]; NSString *msg; -if ([X11App prefs_get_boolean: @PREFS_DONE_XINIT_CHECK default: -NO]) + if ([X11App prefs_get_boolean:@PREFS_DONE_XINIT_CHECK default:NO]) return; tem = getenv("HOME"); - if (tem == NULL) - goto done; + if (tem == NULL) goto done; snprintf(buf, sizeof(buf), "%s/.xinitrc", tem); if (access(buf, F_OK) != 0) goto done; - msg = NSLocalizedString(@"You have an existing ~/.xinitrc file.\n\n\ -Windows displayed by X11 applications may not have titlebars, or may look \ -different to windows displayed by native applications.\n\n\ -Would you like to move aside the existing file and use the standard X11 \ -environment the next time you start X11?", @"Startup xinitrc dialog"); + msg = + NSLocalizedString( + @"You have an existing ~/.xinitrc file.\n\n\ + Windows displayed by X11 applications may not have titlebars, or may look \ + different to windows displayed by native applications.\n\n\ + Would you like to move aside the existing file and use the standard X11 \ + environment the next time you start X11?" , + @"Startup xinitrc dialog"); if (NSAlertDefaultReturn == NSRunAlertPanel(nil, msg, NSLocalizedString(@"Yes", @""), - NSLocalizedString(@"No", @""), nil)) { + NSLocalizedString(@"No", + @""), nil)) { char buf2[1024]; int i = -1; @@ -1101,13 +1162,13 @@ environment the next time you start X11?", @"Startup xinitrc dialog"); rename(buf, buf2); } - done: - [X11App prefs_set_boolean: @PREFS_DONE_XINIT_CHECK value:YES]; +done: + [X11App prefs_set_boolean:@PREFS_DONE_XINIT_CHECK value:YES]; [X11App prefs_synchronize]; } static inline pthread_t -create_thread(void *(*func) (void *), void *arg) +create_thread(void *(*func)(void *), void *arg) { pthread_attr_t attr; pthread_t tid; @@ -1136,11 +1197,10 @@ X11ApplicationMain(int argc, char **argv, char **envp) NSAutoreleasePool *pool; #ifdef DEBUG - while (access("/tmp/x11-block", F_OK) == 0) - sleep(1); + while (access("/tmp/x11-block", F_OK) == 0) sleep(1); #endif - pool =[[NSAutoreleasePool alloc] init]; + pool = [[NSAutoreleasePool alloc] init]; X11App = (X11Application *)[X11Application sharedApplication]; init_ports(); @@ -1148,15 +1208,17 @@ X11ApplicationMain(int argc, char **argv, char **envp) (CFStringRef)[[NSBundle mainBundle] bundleIdentifier]; if (app_prefs_domain_cfstr == NULL) { - ErrorF - ("X11ApplicationMain: Unable to determine bundle identifier. Your installation of XQuartz may be broken.\n"); + ErrorF( + "X11ApplicationMain: Unable to determine bundle identifier. Your installation of XQuartz may be broken.\n"); app_prefs_domain_cfstr = CFSTR(BUNDLE_ID_PREFIX ".X11"); } [NSApp read_defaults]; - [NSBundle loadNibNamed: @"main" owner:NSApp]; - [[NSNotificationCenter defaultCenter] addObserver: NSApp selector: @selector(became_key:) - name: NSWindowDidBecomeKeyNotification object:nil]; + [NSBundle loadNibNamed:@"main" owner:NSApp]; + [[NSNotificationCenter defaultCenter] addObserver:NSApp + selector:@selector (became_key:) + name: + NSWindowDidBecomeKeyNotification object:nil]; /* * The xpr Quartz mode is statically linked into this server. @@ -1166,12 +1228,11 @@ X11ApplicationMain(int argc, char **argv, char **envp) /* Calculate the height of the menubar so we can avoid it. */ aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) - - NSMaxY([[NSScreen mainScreen] visibleFrame]); + NSMaxY([[NSScreen mainScreen] visibleFrame]); #ifdef HAVE_LIBDISPATCH - eventTranslationQueue = - dispatch_queue_create(BUNDLE_ID_PREFIX ".X11.NSEventsToX11EventsQueue", - NULL); + eventTranslationQueue = dispatch_queue_create( + BUNDLE_ID_PREFIX ".X11.NSEventsToX11EventsQueue", NULL); assert(eventTranslationQueue != NULL); #endif @@ -1180,13 +1241,13 @@ X11ApplicationMain(int argc, char **argv, char **envp) last_key_layout = TISCopyCurrentKeyboardLayoutInputSource(); if (!last_key_layout) - ErrorF - ("X11ApplicationMain: Unable to determine TISCopyCurrentKeyboardLayoutInputSource() at startup.\n"); + ErrorF( + "X11ApplicationMain: Unable to determine TISCopyCurrentKeyboardLayoutInputSource() at startup.\n"); #else KLGetCurrentKeyboardLayout(&last_key_layout); if (!last_key_layout) - ErrorF - ("X11ApplicationMain: Unable to determine KLGetCurrentKeyboardLayout() at startup.\n"); + ErrorF( + "X11ApplicationMain: Unable to determine KLGetCurrentKeyboardLayout() at startup.\n"); #endif if (!QuartsResyncKeymap(FALSE)) { @@ -1206,7 +1267,7 @@ X11ApplicationMain(int argc, char **argv, char **envp) #if XQUARTZ_SPARKLE [[X11App controller] setup_sparkle]; [[SUUpdater sharedUpdater] resetUpdateCycle]; -// [[SUUpdater sharedUpdater] checkForUpdates:X11App]; + // [[SUUpdater sharedUpdater] checkForUpdates:X11App]; #endif [pool release]; @@ -1214,7 +1275,8 @@ X11ApplicationMain(int argc, char **argv, char **envp) /* not reached */ } -@implementation X11Application(Private) +@implementation X11Application (Private) + #ifdef NX_DEVICELCMDKEYMASK /* This is to workaround a bug in the VNC server where we sometimes see the L * modifier and sometimes see no "side" @@ -1223,7 +1285,8 @@ static inline int ensure_flag(int flags, int device_independent, int device_dependents, int device_dependent_default) { - if ((flags & device_independent) && !(flags & device_dependents)) + if ((flags & device_independent) && + !(flags & device_dependents)) flags |= device_dependent_default; return flags; } @@ -1231,27 +1294,35 @@ ensure_flag(int flags, int device_independent, int device_dependents, #ifdef DEBUG_UNTRUSTED_POINTER_DELTA static const char * -untrusted_str(NSEvent * e) +untrusted_str(NSEvent *e) { switch ([e type]) { case NSScrollWheel: return "NSScrollWheel"; + case NSTabletPoint: return "NSTabletPoint"; + case NSOtherMouseDown: return "NSOtherMouseDown"; + case NSOtherMouseUp: return "NSOtherMouseUp"; + case NSLeftMouseDown: return "NSLeftMouseDown"; + case NSLeftMouseUp: return "NSLeftMouseUp"; + default: switch ([e subtype]) { case NSTabletPointEventSubtype: return "NSTabletPointEventSubtype"; + case NSTabletProximityEventSubtype: return "NSTabletProximityEventSubtype"; + default: return "Other"; } @@ -1259,23 +1330,24 @@ untrusted_str(NSEvent * e) } #endif - -(void) sendX11NSEvent:(NSEvent *) e { +- (void) sendX11NSEvent:(NSEvent *)e +{ NSPoint location = NSZeroPoint; int ev_button, ev_type; - static float pressure = 0.0; // static so ProximityOut will have the value from the previous tablet event - static NSPoint tilt; // static so ProximityOut will have the value from the previous tablet event + static float pressure = 0.0; // static so ProximityOut will have the value from the previous tablet event + static NSPoint tilt; // static so ProximityOut will have the value from the previous tablet event static DeviceIntPtr darwinTabletCurrent = NULL; - static BOOL needsProximityIn = NO; // Do we do need to handle a pending ProximityIn once we have pressure/tilt? + static BOOL needsProximityIn = NO; // Do we do need to handle a pending ProximityIn once we have pressure/tilt? DeviceIntPtr pDev; int modifierFlags; BOOL isMouseOrTabletEvent, isTabletEvent; #ifdef HAVE_LIBDISPATCH static dispatch_once_t once_pred; - - dispatch_once(&once_pred, ^ { - tilt = NSZeroPoint; - darwinTabletCurrent = darwinTabletStylus;}); + dispatch_once(&once_pred, ^{ + tilt = NSZeroPoint; + darwinTabletCurrent = darwinTabletStylus; + }); #else if (!darwinTabletCurrent) { tilt = NSZeroPoint; @@ -1283,23 +1355,28 @@ untrusted_str(NSEvent * e) } #endif - 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 || - [e type] == NSScrollWheel; + 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 || + [e type] == NSScrollWheel; isTabletEvent = ([e type] == NSTabletPoint) || - (isMouseOrTabletEvent && - ([e subtype] == NSTabletPointEventSubtype || - [e subtype] == NSTabletProximityEventSubtype)); + (isMouseOrTabletEvent && + ([e subtype] == NSTabletPointEventSubtype || + [e subtype] == NSTabletProximityEventSubtype)); if (isMouseOrTabletEvent) { static NSPoint lastpt; - NSWindow *window =[e window]; - NSRect screen =[[[NSScreen screens] objectAtIndex:0] frame]; + NSWindow *window = [e window]; + NSRect screen = [[[NSScreen screens] objectAtIndex:0] frame]; BOOL hasUntrustedPointerDelta; // NSEvents for tablets are not consistent wrt deltaXY between events, so we cannot rely on that @@ -1312,23 +1389,21 @@ untrusted_str(NSEvent * e) // The deltaXY for middle click events also appear erroneous after fast user switching // <rdar://problem/7979468> deltaX and deltaY are incorrect for NSOtherMouseDown and NSOtherMouseUp after FUS // http://xquartz.macosforge.org/trac/ticket/389 - hasUntrustedPointerDelta = hasUntrustedPointerDelta || - [e type] == NSOtherMouseDown ||[e type] == NSOtherMouseUp; + hasUntrustedPointerDelta |= [e type] == NSOtherMouseDown || + [e type] == NSOtherMouseUp; // The deltaXY for scroll events correspond to the scroll delta, not the pointer delta // <rdar://problem/7989690> deltaXY for wheel events are being sent as mouse movement - hasUntrustedPointerDelta = hasUntrustedPointerDelta || - [e type] == NSScrollWheel; + hasUntrustedPointerDelta |= [e type] == NSScrollWheel; #ifdef DEBUG_UNTRUSTED_POINTER_DELTA - hasUntrustedPointerDelta = hasUntrustedPointerDelta || - [e type] == NSLeftMouseDown ||[e type] == NSLeftMouseUp; + hasUntrustedPointerDelta |= [e type] == NSLeftMouseDown || + [e type] == NSLeftMouseUp; #endif if (window != nil) { - NSRect frame =[window frame]; - - location =[e locationInWindow]; + NSRect frame = [window frame]; + location = [e locationInWindow]; location.x += frame.origin.x; location.y += frame.origin.y; lastpt = location; @@ -1338,53 +1413,49 @@ untrusted_str(NSEvent * e) ErrorF("--- Begin Event Debug ---\n"); ErrorF("Event type: %s\n", untrusted_str(e)); ErrorF("old lastpt: (%0.2f, %0.2f)\n", lastpt.x, lastpt.y); - ErrorF(" delta: (%0.2f, %0.2f)\n",[e deltaX], -[e deltaY]); - ErrorF(" location: (%0.2f, %0.2f)\n", lastpt.x +[e deltaX], - lastpt.y -[e deltaY]); - ErrorF("workaround: (%0.2f, %0.2f)\n",[e locationInWindow].x, + ErrorF(" delta: (%0.2f, %0.2f)\n", [e deltaX], -[e deltaY]); + ErrorF(" location: (%0.2f, %0.2f)\n", lastpt.x + [e deltaX], + lastpt.y - [e deltaY]); + ErrorF("workaround: (%0.2f, %0.2f)\n", [e locationInWindow].x, [e locationInWindow].y); ErrorF("--- End Event Debug ---\n"); - location.x = lastpt.x +[e deltaX]; - location.y = lastpt.y -[e deltaY]; - lastpt =[e locationInWindow]; + location.x = lastpt.x + [e deltaX]; + location.y = lastpt.y - [e deltaY]; + lastpt = [e locationInWindow]; #else - location =[e locationInWindow]; + location = [e locationInWindow]; lastpt = location; #endif } else { - location.x = lastpt.x +[e deltaX]; - location.y = lastpt.y -[e deltaY]; - lastpt =[e locationInWindow]; + 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; } - modifierFlags =[e modifierFlags]; + modifierFlags = [e modifierFlags]; #ifdef NX_DEVICELCMDKEYMASK /* This is to workaround a bug in the VNC server where we sometimes see the L * modifier and sometimes see no "side" */ - modifierFlags = - ensure_flag(modifierFlags, NX_CONTROLMASK, - NX_DEVICELCTLKEYMASK | NX_DEVICERCTLKEYMASK, - NX_DEVICELCTLKEYMASK); - modifierFlags = - ensure_flag(modifierFlags, NX_SHIFTMASK, - NX_DEVICELSHIFTKEYMASK | NX_DEVICERSHIFTKEYMASK, - NX_DEVICELSHIFTKEYMASK); - modifierFlags = - ensure_flag(modifierFlags, NX_COMMANDMASK, - NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK, - NX_DEVICELCMDKEYMASK); - modifierFlags = - ensure_flag(modifierFlags, NX_ALTERNATEMASK, - NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK, - NX_DEVICELALTKEYMASK); + modifierFlags = ensure_flag(modifierFlags, NX_CONTROLMASK, + NX_DEVICELCTLKEYMASK | NX_DEVICERCTLKEYMASK, + NX_DEVICELCTLKEYMASK); + modifierFlags = ensure_flag(modifierFlags, NX_SHIFTMASK, + NX_DEVICELSHIFTKEYMASK | NX_DEVICERSHIFTKEYMASK, + NX_DEVICELSHIFTKEYMASK); + modifierFlags = ensure_flag(modifierFlags, NX_COMMANDMASK, + NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK, + NX_DEVICELCMDKEYMASK); + modifierFlags = ensure_flag(modifierFlags, NX_ALTERNATEMASK, + NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK, + NX_DEVICELALTKEYMASK); #endif modifierFlags &= darwin_all_modifier_mask; @@ -1402,48 +1473,58 @@ untrusted_str(NSEvent * e) ev_button = 1; ev_type = ButtonPress; goto handle_mouse; + case NSOtherMouseDown: ev_button = 2; ev_type = ButtonPress; goto handle_mouse; + case NSRightMouseDown: ev_button = 3; ev_type = ButtonPress; goto handle_mouse; + case NSLeftMouseUp: ev_button = 1; ev_type = ButtonRelease; goto handle_mouse; + case NSOtherMouseUp: ev_button = 2; ev_type = ButtonRelease; goto handle_mouse; + case NSRightMouseUp: ev_button = 3; ev_type = ButtonRelease; goto handle_mouse; + case NSLeftMouseDragged: ev_button = 1; ev_type = MotionNotify; goto handle_mouse; + case NSOtherMouseDragged: ev_button = 2; ev_type = MotionNotify; goto handle_mouse; + case NSRightMouseDragged: ev_button = 3; ev_type = MotionNotify; goto handle_mouse; + case NSMouseMoved: ev_button = 0; ev_type = MotionNotify; goto handle_mouse; + case NSTabletPoint: ev_button = 0; ev_type = MotionNotify; goto handle_mouse; - handle_mouse: +handle_mouse: pDev = darwinPointer; /* NSTabletPoint can have no subtype */ @@ -1453,9 +1534,11 @@ untrusted_str(NSEvent * e) case NSEraserPointingDevice: darwinTabletCurrent = darwinTabletEraser; break; + case NSPenPointingDevice: darwinTabletCurrent = darwinTabletStylus; break; + case NSCursorPointingDevice: case NSUnknownPointingDevice: default: @@ -1474,8 +1557,8 @@ untrusted_str(NSEvent * e) if ([e type] == NSTabletPoint || [e subtype] == NSTabletPointEventSubtype) { - pressure =[e pressure]; - tilt =[e tilt]; + pressure = [e pressure]; + tilt = [e tilt]; pDev = darwinTabletCurrent; @@ -1490,7 +1573,7 @@ untrusted_str(NSEvent * e) if (!XQuartzServerVisible && noTestExtensions) { #if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION > 0 -/* Older libXplugin (Tiger/"Stock" Leopard) aren't thread safe, so we can't call xp_find_window from the Appkit thread */ + /* Older libXplugin (Tiger/"Stock" Leopard) aren't thread safe, so we can't call xp_find_window from the Appkit thread */ xp_window_id wid = 0; xp_error err; @@ -1529,9 +1612,11 @@ untrusted_str(NSEvent * e) case NSEraserPointingDevice: darwinTabletCurrent = darwinTabletEraser; break; + case NSPenPointingDevice: darwinTabletCurrent = darwinTabletStylus; break; + case NSCursorPointingDevice: case NSUnknownPointingDevice: default: @@ -1549,31 +1634,32 @@ untrusted_str(NSEvent * e) case NSScrollWheel: { - float deltaX =[e deltaX]; - float deltaY =[e deltaY]; - + float deltaX = [e deltaX]; + float deltaY = [e deltaY]; #if !defined(XPLUGIN_VERSION) || XPLUGIN_VERSION == 0 /* If we're in the background, we need to send a MotionNotify event * first, since we aren't getting them on background mouse motion */ if (!XQuartzServerVisible && noTestExtensions) { bgMouseLocationUpdated = FALSE; - DarwinSendPointerEvents(darwinPointer, MotionNotify, 0, location.x, - location.y, pressure, tilt.x, tilt.y); + DarwinSendPointerEvents(darwinPointer, MotionNotify, 0, + location.x, location.y, pressure, + tilt.x, tilt.y); } #endif #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 // TODO: Change 1117 to NSAppKitVersionNumber10_7 when it is defined - if (NSAppKitVersionNumber >= 1117 && XQuartzScrollInDeviceDirection && + if (NSAppKitVersionNumber >= 1117 && + XQuartzScrollInDeviceDirection && [e isDirectionInvertedFromDevice]) { deltaX *= -1; deltaY *= -1; } #endif - DarwinSendScrollEvents(deltaX, deltaY, location.x, location.y, - pressure, tilt.x, tilt.y); + DarwinSendScrollEvents(deltaX, deltaY); break; } + case NSKeyDown: case NSKeyUp: { @@ -1581,7 +1667,6 @@ untrusted_str(NSEvent * e) * TODO: Make this less of a kludge. */ static int force_resync_keymap = YES; - if (force_resync_keymap) { DarwinSendDDXEvent(kXquartzReloadKeymap, 0); force_resync_keymap = NO; @@ -1590,10 +1675,9 @@ untrusted_str(NSEvent * e) if (darwinSyncKeymap) { #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 - TISInputSourceRef key_layout = + TISInputSourceRef key_layout = TISCopyCurrentKeyboardLayoutInputSource(); TISInputSourceRef clear; - if (CFEqual(key_layout, last_key_layout)) { CFRelease(key_layout); } @@ -1604,25 +1688,24 @@ untrusted_str(NSEvent * e) CFRelease(clear); #else KeyboardLayoutRef key_layout; - KLGetCurrentKeyboardLayout(&key_layout); if (key_layout != last_key_layout) { last_key_layout = key_layout; #endif /* Update keyInfo */ if (!QuartsResyncKeymap(TRUE)) { - ErrorF("sendX11NSEvent: Could not build a valid keymap.\n"); + ErrorF( + "sendX11NSEvent: Could not build a valid keymap.\n"); } } } ev_type = ([e type] == NSKeyDown) ? KeyPress : KeyRelease; - DarwinSendKeyboardEvents(ev_type,[e keyCode]); + DarwinSendKeyboardEvents(ev_type, [e keyCode]); break; default: - break; /* for gcc */ + break; /* for gcc */ } } - @end diff --git a/xorg-server/hw/xquartz/X11Controller.h b/xorg-server/hw/xquartz/X11Controller.h index e7fcd453f..1e6027006 100644 --- a/xorg-server/hw/xquartz/X11Controller.h +++ b/xorg-server/hw/xquartz/X11Controller.h @@ -1,31 +1,32 @@ /* X11Controller.h -- connect the IB ui - - Copyright (c) 2002 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifndef X11CONTROLLER_H #define X11CONTROLLER_H 1 @@ -55,9 +56,9 @@ typedef unsigned int NSUInteger; #endif #endif - @interface X11Controller:NSObject +@interface X11Controller : NSObject #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 - < NSTableViewDataSource > + <NSTableViewDataSource> #endif { IBOutlet NSPanel *prefs_panel; @@ -85,7 +86,6 @@ typedef unsigned int NSUInteger; IBOutlet NSPopUpButton *depth; 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" @@ -95,7 +95,6 @@ typedef unsigned int NSUInteger; 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 @@ -118,40 +117,41 @@ typedef unsigned int NSUInteger; OSX_BOOL can_quit; } - -(void) set_window_menu:(NSArray *) list; - -(void) set_window_menu_check:(NSNumber *) n; - -(void) set_apps_menu:(NSArray *) list; +- (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; +- (void)setup_sparkle; +- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *) + update; #endif - -(void) set_can_quit:(OSX_BOOL) state; --(void) server_ready; - -(OSX_BOOL) application:(NSApplication *) -app openFile:(NSString *) filename; - - -(IBAction) apps_table_show:(id) sender; - -(IBAction) apps_table_done:(id) sender; - -(IBAction) apps_table_new:(id) sender; - -(IBAction) apps_table_duplicate:(id) sender; - -(IBAction) apps_table_delete:(id) sender; - -(IBAction) bring_to_front:(id) sender; - -(IBAction) close_window:(id) sender; - -(IBAction) minimize_window:(id) sender; - -(IBAction) zoom_window:(id) sender; - -(IBAction) next_window:(id) sender; - -(IBAction) previous_window:(id) sender; - -(IBAction) enable_fullscreen_changed:(id) sender; - -(IBAction) toggle_fullscreen:(id) sender; - -(IBAction) prefs_changed:(id) sender; - -(IBAction) prefs_show:(id) sender; - -(IBAction) quit:(id) sender; - -(IBAction) x11_help:(id) sender; +- (void)set_can_quit:(OSX_BOOL)state; +- (void)server_ready; +- (OSX_BOOL)application:(NSApplication *)app openFile:(NSString *)filename; + +- (IBAction)apps_table_show:(id)sender; +- (IBAction)apps_table_done:(id)sender; +- (IBAction)apps_table_new:(id)sender; +- (IBAction)apps_table_duplicate:(id)sender; +- (IBAction)apps_table_delete:(id)sender; +- (IBAction)bring_to_front:(id)sender; +- (IBAction)close_window:(id)sender; +- (IBAction)minimize_window:(id)sender; +- (IBAction)zoom_window:(id)sender; +- (IBAction)next_window:(id)sender; +- (IBAction)previous_window:(id)sender; +- (IBAction)enable_fullscreen_changed:(id)sender; +- (IBAction)toggle_fullscreen:(id)sender; +- (IBAction)prefs_changed:(id)sender; +- (IBAction)prefs_show:(id)sender; +- (IBAction)quit:(id)sender; +- (IBAction)x11_help:(id)sender; @end -#endif /* __OBJC__ */ + +#endif /* __OBJC__ */ + void X11ControllerMain(int argc, char **argv, char **envp); -#endif /* X11CONTROLLER_H */ +#endif /* X11CONTROLLER_H */ diff --git a/xorg-server/hw/xquartz/X11Controller.m b/xorg-server/hw/xquartz/X11Controller.m index b0bfc5858..393bc1abe 100644 --- a/xorg-server/hw/xquartz/X11Controller.m +++ b/xorg-server/hw/xquartz/X11Controller.m @@ -1,31 +1,32 @@ /* X11Controller.m -- connect the IB ui, also the NSApp delegate - - Copyright (c) 2002-2008 Apple Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #include "sanitizedCarbon.h" #include <AvailabilityMacros.h> @@ -53,145 +54,159 @@ #include <sys/types.h> #include <sys/wait.h> -@ implementation X11Controller - (void) awakeFromNib { +@implementation X11Controller + +- (void) awakeFromNib +{ X11Application *xapp = NSApp; NSArray *array; /* Point X11Application at ourself. */ - [xapp set_controller:self]; + [xapp set_controller:self]; - array =[xapp prefs_get_array:@PREFS_APPSMENU]; + array = [xapp prefs_get_array:@PREFS_APPSMENU]; if (array != nil) { int count; /* convert from [TITLE1 COMMAND1 TITLE2 COMMAND2 ...] to [[TITLE1 COMMAND1] [TITLE2 COMMAND2] ...] format. */ - count =[array count]; - if (count > 0 && ![[array objectAtIndex: 0] isKindOfClass:[NSArray class]]) - { + count = [array count]; + if (count > 0 + && ![[array objectAtIndex:0] isKindOfClass:[NSArray class]]) { int i; NSMutableArray *copy, *sub; - copy =[NSMutableArray arrayWithCapacity:(count / 2)]; + copy = [NSMutableArray arrayWithCapacity:(count / 2)]; for (i = 0; i < count / 2; i++) { - sub =[[NSMutableArray alloc] initWithCapacity:3]; - [sub addObject: [array objectAtIndex:i * 2]]; - [sub addObject: [array objectAtIndex:i * 2 + 1]]; - [sub addObject:@""]; - [copy addObject:sub]; + sub = [[NSMutableArray alloc] initWithCapacity:3]; + [sub addObject:[array objectAtIndex:i * 2]]; + [sub addObject:[array objectAtIndex:i * 2 + 1]]; + [sub addObject:@""]; + [copy addObject:sub]; [sub release]; } array = copy; } - [self set_apps_menu:array]; + [self set_apps_menu:array]; } [[NSNotificationCenter defaultCenter] - addObserver: self selector: @selector(apps_table_done:) - name: NSWindowWillCloseNotification object:[apps_table window]]; + addObserver: self + 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 menu] removeItem:window_separator]; window_separator = nil; } - windows_menu_start =[[X11App windowsMenu] numberOfItems]; + windows_menu_start = [[X11App windowsMenu] numberOfItems]; } - -(void) item_selected:sender { - [NSApp activateIgnoringOtherApps:YES]; +- (void) item_selected:sender +{ + [NSApp activateIgnoringOtherApps:YES]; DarwinSendDDXEvent(kXquartzControllerNotify, 2, - AppleWMWindowMenuItem,[sender tag]); + AppleWMWindowMenuItem, [sender tag]); } --(void) remove_window_menu { +- (void) remove_window_menu +{ NSMenu *menu; int count, i; /* Work backwards so we don't mess up the indices */ - menu =[X11App windowsMenu]; - count =[menu numberOfItems]; + menu = [X11App windowsMenu]; + count = [menu numberOfItems]; for (i = count - 1; i >= windows_menu_start; i--) - [menu removeItemAtIndex:i]; + [menu removeItemAtIndex:i]; - count =[dock_menu indexOfItem:dock_window_separator]; + count = [dock_menu indexOfItem:dock_window_separator]; for (i = 0; i < count; i++) - [dock_menu removeItemAtIndex:0]; + [dock_menu removeItemAtIndex:0]; } - -(void) install_window_menu:(NSArray *) list { +- (void) install_window_menu:(NSArray *)list +{ NSMenu *menu; NSMenuItem *item; int first, count, i; - menu =[X11App windowsMenu]; + menu = [X11App windowsMenu]; first = windows_menu_start + 1; - count =[list count]; + count = [list count]; // Push a Separator if (count) { - [menu addItem:[NSMenuItem separatorItem]]; + [menu addItem:[NSMenuItem separatorItem]]; } for (i = 0; i < count; i++) { NSString *name, *shortcut; - name =[[list objectAtIndex: i] objectAtIndex:0]; - shortcut =[[list objectAtIndex: i] objectAtIndex:1]; + name = [[list objectAtIndex:i] objectAtIndex:0]; + shortcut = [[list objectAtIndex:i] objectAtIndex:1]; if (windowItemModMask == 0 || windowItemModMask == -1) shortcut = @""; - item = (NSMenuItem *)[menu addItemWithTitle: name action: @selector(item_selected: )keyEquivalent:shortcut]; - [item setKeyEquivalentModifierMask:(NSUInteger) windowItemModMask]; - [item setTarget:self]; - [item setTag:i]; - [item setEnabled:YES]; - - item = (NSMenuItem *)[dock_menu insertItemWithTitle: name action: @selector(item_selected: )keyEquivalent: shortcut atIndex:i]; - [item setKeyEquivalentModifierMask:(NSUInteger) windowItemModMask]; - [item setTarget:self]; - [item setTag:i]; - [item setEnabled:YES]; + item = + (NSMenuItem *)[menu addItemWithTitle:name action: + @selector + (item_selected:) keyEquivalent:shortcut]; + [item setKeyEquivalentModifierMask:(NSUInteger)windowItemModMask]; + [item setTarget:self]; + [item setTag:i]; + [item setEnabled:YES]; + + item = (NSMenuItem *)[dock_menu insertItemWithTitle:name + action:@selector + (item_selected:) keyEquivalent:shortcut + atIndex:i]; + [item setKeyEquivalentModifierMask:(NSUInteger)windowItemModMask]; + [item setTarget:self]; + [item setTag:i]; + [item setEnabled:YES]; } if (checked_window_item >= 0 && checked_window_item < count) { - item = (NSMenuItem *)[menu itemAtIndex:first + checked_window_item]; - [item setState:NSOnState]; - item = (NSMenuItem *)[dock_menu itemAtIndex:checked_window_item]; - [item setState:NSOnState]; + item = (NSMenuItem *)[menu itemAtIndex:first + checked_window_item]; + [item setState:NSOnState]; + item = (NSMenuItem *)[dock_menu itemAtIndex:checked_window_item]; + [item setState:NSOnState]; } } --(void) remove_apps_menu { +- (void) remove_apps_menu +{ NSMenu *menu; NSMenuItem *item; int i; - if (apps == nil || apps_separator == nil) - return; + if (apps == nil || apps_separator == nil) return; - menu =[apps_separator menu]; + menu = [apps_separator menu]; if (menu != nil) { - for (i =[menu numberOfItems] - 1; i >= 0; i--) { - item = (NSMenuItem *)[menu itemAtIndex:i]; + for (i = [menu numberOfItems] - 1; i >= 0; i--) { + item = (NSMenuItem *)[menu itemAtIndex:i]; if ([item tag] != 0) - [menu removeItemAtIndex:i]; + [menu removeItemAtIndex:i]; } } if (dock_apps_menu != nil) { - for (i =[dock_apps_menu numberOfItems] - 1; i >= 0; i--) { - item = (NSMenuItem *)[dock_apps_menu itemAtIndex:i]; + for (i = [dock_apps_menu numberOfItems] - 1; i >= 0; i--) { + item = (NSMenuItem *)[dock_apps_menu itemAtIndex:i]; if ([item tag] != 0) - [dock_apps_menu removeItemAtIndex:i]; + [dock_apps_menu removeItemAtIndex:i]; } } @@ -199,129 +214,139 @@ apps = nil; } - -(void) prepend_apps_item:(NSArray *) -list index:(int) -i menu:(NSMenu *) menu +- (void) prepend_apps_item:(NSArray *)list index:(int)i menu:(NSMenu *)menu { NSString *title, *shortcut = @""; NSArray *group; NSMenuItem *item; - group =[list objectAtIndex:i]; - title =[group objectAtIndex:0]; + group = [list objectAtIndex:i]; + title = [group objectAtIndex:0]; if ([group count] >= 3) - shortcut =[group objectAtIndex:2]; + shortcut = [group objectAtIndex:2]; if ([title length] != 0) { - item = (NSMenuItem *)[menu insertItemWithTitle: title action: @selector(app_selected:) - keyEquivalent: shortcut atIndex:0]; - [item setTarget:self]; - [item setEnabled:YES]; + item = (NSMenuItem *)[menu insertItemWithTitle:title + action:@selector ( + app_selected:) + keyEquivalent:shortcut atIndex:0]; + [item setTarget:self]; + [item setEnabled:YES]; } else { item = (NSMenuItem *)[NSMenuItem separatorItem]; - [menu insertItem: item atIndex:0]; + [menu insertItem:item atIndex:0]; } - [item setTag:i + 1]; /* can't be zero, so add one */ + [item setTag:i + 1]; /* can't be zero, so add one */ } - -(void) install_apps_menu:(NSArray *) list { +- (void) install_apps_menu:(NSArray *)list +{ NSMenu *menu; int i, count; - count =[list count]; + count = [list count]; - if (count == 0 || apps_separator == nil) - return; + if (count == 0 || apps_separator == nil) return; - menu =[apps_separator menu]; + menu = [apps_separator menu]; for (i = count - 1; i >= 0; i--) { if (menu != nil) - [self prepend_apps_item: list index: i menu:menu]; + [self prepend_apps_item:list index:i menu:menu]; if (dock_apps_menu != nil) - [self prepend_apps_item: list index: i menu:dock_apps_menu]; + [self prepend_apps_item:list index:i menu:dock_apps_menu]; } - apps =[list retain]; + apps = [list retain]; } - -(void) set_window_menu:(NSArray *) list { +- (void) set_window_menu:(NSArray *)list +{ [self remove_window_menu]; - [self install_window_menu:list]; + [self install_window_menu:list]; - DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMWindowMenuNotify); + DarwinSendDDXEvent(kXquartzControllerNotify, 1, + AppleWMWindowMenuNotify); } - -(void) set_window_menu_check:(NSNumber *) nn { +- (void) set_window_menu_check:(NSNumber *)nn +{ NSMenu *menu; NSMenuItem *item; int first, count; - int n =[nn intValue]; + int n = [nn intValue]; - menu =[X11App windowsMenu]; + menu = [X11App windowsMenu]; first = windows_menu_start + 1; - count =[menu numberOfItems] - first; + count = [menu numberOfItems] - first; if (checked_window_item >= 0 && checked_window_item < count) { - item = (NSMenuItem *)[menu itemAtIndex:first + checked_window_item]; - [item setState:NSOffState]; - item = (NSMenuItem *)[dock_menu itemAtIndex:checked_window_item]; - [item setState:NSOffState]; + item = (NSMenuItem *)[menu itemAtIndex:first + checked_window_item]; + [item setState:NSOffState]; + item = (NSMenuItem *)[dock_menu itemAtIndex:checked_window_item]; + [item setState:NSOffState]; } if (n >= 0 && n < count) { - item = (NSMenuItem *)[menu itemAtIndex:first + n]; - [item setState:NSOnState]; - item = (NSMenuItem *)[dock_menu itemAtIndex:n]; - [item setState:NSOnState]; + item = (NSMenuItem *)[menu itemAtIndex:first + n]; + [item setState:NSOnState]; + item = (NSMenuItem *)[dock_menu itemAtIndex:n]; + [item setState:NSOnState]; } checked_window_item = n; } - -(void) set_apps_menu:(NSArray *) list { +- (void) set_apps_menu:(NSArray *)list +{ [self remove_apps_menu]; - [self install_apps_menu:list]; + [self install_apps_menu:list]; } #ifdef XQUARTZ_SPARKLE --(void) setup_sparkle { +- (void) setup_sparkle +{ if (check_for_updates_item) - return; // already did it... + return; // already did it... - NSMenu *menu =[x11_about_item menu]; + 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]; + 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]; + [[SUUpdater sharedUpdater] setDelegate:self]; } // Sent immediately before installing the specified update. - -(void) updater:(SUUpdater *) -updater willInstallUpdate:(SUAppcastItem *) update +- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *) + update { //[self set_can_quit:YES]; } #endif - -(void) launch_client:(NSString *) filename { +- (void) launch_client:(NSString *)filename +{ int child1, child2 = 0; int status; const char *newargv[4]; char buf[128]; char *s; -newargv[0] =[X11App prefs_get_string: @PREFS_LOGIN_SHELL default: -"/bin/sh"]; + newargv[0] = + [X11App prefs_get_string:@PREFS_LOGIN_SHELL default:"/bin/sh"]; newargv[1] = "-c"; - newargv[2] =[filename UTF8String]; + newargv[2] = [filename UTF8String]; newargv[3] = NULL; s = getenv("DISPLAY"); @@ -333,19 +358,19 @@ newargv[0] =[X11App prefs_get_string: @PREFS_LOGIN_SHELL default: /* Do the fork-twice trick to avoid having to reap zombies */ child1 = fork(); switch (child1) { - case -1: /* error */ + case -1: /* error */ break; - case 0: /* child1 */ + case 0: /* child1 */ child2 = fork(); switch (child2) { int max_files, i; - case -1: /* error */ + case -1: /* error */ _exit(1); - case 0: /* child2 */ + case 0: /* child2 */ /* close all open files except for standard streams */ max_files = sysconf(_SC_OPEN_MAX); for (i = 3; i < max_files; i++) @@ -355,334 +380,350 @@ newargv[0] =[X11App prefs_get_string: @PREFS_LOGIN_SHELL default: close(0); open("/dev/null", O_RDONLY); - execvp(newargv[0], (char **const) newargv); + execvp(newargv[0], (char * *const)newargv); _exit(2); - default: /* parent (child1) */ + default: /* parent (child1) */ _exit(0); } break; - default: /* parent */ + default: /* parent */ waitpid(child1, &status, 0); } } - -(void) app_selected:sender { +- (void) app_selected:sender +{ int tag; NSString *item; - tag =[sender tag] - 1; - if (apps == nil || tag < 0 || tag >=[apps count]) + tag = [sender tag] - 1; + if (apps == nil || tag < 0 || tag >= [apps count]) return; - item =[[apps objectAtIndex: tag] objectAtIndex:1]; + item = [[apps objectAtIndex:tag] objectAtIndex:1]; - [self launch_client:item]; + [self launch_client:item]; } - -(IBAction) apps_table_show:sender { +- (IBAction) apps_table_show:sender +{ NSArray *columns; NSMutableArray *oldapps = nil; if (table_apps != nil) oldapps = table_apps; - table_apps =[[NSMutableArray alloc] initWithCapacity:1]; + table_apps = [[NSMutableArray alloc] initWithCapacity:1]; if (apps != nil) - [table_apps addObjectsFromArray:apps]; + [table_apps addObjectsFromArray:apps]; - columns =[apps_table tableColumns]; - [[columns objectAtIndex: 0] setIdentifier:@"0"]; - [[columns objectAtIndex: 1] setIdentifier:@"1"]; - [[columns objectAtIndex: 2] setIdentifier:@"2"]; + columns = [apps_table tableColumns]; + [[columns objectAtIndex:0] setIdentifier:@"0"]; + [[columns objectAtIndex:1] setIdentifier:@"1"]; + [[columns objectAtIndex:2] setIdentifier:@"2"]; - [apps_table setDataSource:self]; - [apps_table selectRowIndexes: [NSIndexSet indexSetWithIndex: 0] byExtendingSelection:NO]; + [apps_table setDataSource:self]; + [apps_table selectRowIndexes:[NSIndexSet indexSetWithIndex:0] + byExtendingSelection:NO]; - [[apps_table window] makeKeyAndOrderFront:sender]; + [[apps_table window] makeKeyAndOrderFront:sender]; [apps_table reloadData]; if (oldapps != nil) [oldapps release]; } - -(IBAction) apps_table_done:sender { - [apps_table deselectAll:sender]; - /* flush edits? */ +- (IBAction) apps_table_done:sender +{ + [apps_table deselectAll:sender]; /* flush edits? */ [self remove_apps_menu]; - [self install_apps_menu:table_apps]; + [self install_apps_menu:table_apps]; - [NSApp prefs_set_array: @PREFS_APPSMENU value:table_apps]; + [NSApp prefs_set_array:@PREFS_APPSMENU value:table_apps]; [NSApp prefs_synchronize]; - [[apps_table window] orderOut:sender]; + [[apps_table window] orderOut:sender]; [table_apps release]; table_apps = nil; } - -(IBAction) apps_table_new:sender { +- (IBAction) apps_table_new:sender +{ NSMutableArray *item; - int row =[apps_table selectedRow], i; + int row = [apps_table selectedRow], i; - if (row < 0) - row = 0; - else - row = row + 1; + if (row < 0) row = 0; + else row = row + 1; i = row; - if (i >[table_apps count]) - return; /* avoid exceptions */ + if (i > [table_apps count]) + return; /* avoid exceptions */ - [apps_table deselectAll:sender]; + [apps_table deselectAll:sender]; - item =[[NSMutableArray alloc] initWithCapacity:3]; - [item addObject:@""]; - [item addObject:@""]; - [item addObject:@""]; + item = [[NSMutableArray alloc] initWithCapacity:3]; + [item addObject:@""]; + [item addObject:@""]; + [item addObject:@""]; - [table_apps insertObject: item atIndex:i]; + [table_apps insertObject:item atIndex:i]; [item release]; [apps_table reloadData]; - [apps_table selectRowIndexes: [NSIndexSet indexSetWithIndex: row] byExtendingSelection:NO]; + [apps_table selectRowIndexes:[NSIndexSet indexSetWithIndex:row] + byExtendingSelection:NO]; } - -(IBAction) apps_table_duplicate:sender { - int row =[apps_table selectedRow], i; +- (IBAction) apps_table_duplicate:sender +{ + int row = [apps_table selectedRow], i; NSObject *item; if (row < 0) { - [self apps_table_new:sender]; + [self apps_table_new:sender]; return; } i = row; - if (i >[table_apps count] - 1) - return; /* avoid exceptions */ + if (i > [table_apps count] - 1) return; /* avoid exceptions */ - [apps_table deselectAll:sender]; + [apps_table deselectAll:sender]; - item =[[table_apps objectAtIndex:i] mutableCopy]; - [table_apps insertObject: item atIndex:i]; + item = [[table_apps objectAtIndex:i] mutableCopy]; + [table_apps insertObject:item atIndex:i]; [item release]; [apps_table reloadData]; - [apps_table selectRowIndexes: [NSIndexSet indexSetWithIndex: row + 1] byExtendingSelection:NO]; + [apps_table selectRowIndexes:[NSIndexSet indexSetWithIndex:row + + 1] byExtendingSelection:NO]; } - -(IBAction) apps_table_delete:sender { - int row =[apps_table selectedRow]; +- (IBAction) apps_table_delete:sender +{ + int row = [apps_table selectedRow]; if (row >= 0) { int i = row; - if (i >[table_apps count] - 1) - return; /* avoid exceptions */ + if (i > [table_apps count] - 1) return; /* avoid exceptions */ - [apps_table deselectAll:sender]; + [apps_table deselectAll:sender]; - [table_apps removeObjectAtIndex:i]; + [table_apps removeObjectAtIndex:i]; } [apps_table reloadData]; - row = MIN(row,[table_apps count] - 1); + row = MIN(row, [table_apps count] - 1); if (row >= 0) - [apps_table selectRowIndexes: [NSIndexSet indexSetWithIndex: row] byExtendingSelection:NO]; + [apps_table selectRowIndexes:[NSIndexSet indexSetWithIndex:row] + byExtendingSelection:NO]; } - -(NSInteger) numberOfRowsInTableView:(NSTableView *) tableView { - if (table_apps == nil) - return 0; +- (NSInteger) numberOfRowsInTableView:(NSTableView *)tableView +{ + if (table_apps == nil) return 0; - return[table_apps count]; + return [table_apps count]; } - -(id) tableView: (NSTableView *) tableView objectValueForTableColumn:(NSTableColumn - *) -tableColumn row:(NSInteger) row +- (id) tableView:(NSTableView *)tableView + objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { NSArray *item; int col; - if (table_apps == nil) - return nil; + if (table_apps == nil) return nil; - col =[[tableColumn identifier] intValue]; + col = [[tableColumn identifier] intValue]; - item =[table_apps objectAtIndex:row]; + item = [table_apps objectAtIndex:row]; if ([item count] > col) - return[item objectAtIndex:col]; + return [item objectAtIndex:col]; else return @""; } - -(void) tableView:(NSTableView *) -tableView setObjectValue:(id) object forTableColumn:(NSTableColumn *) -tableColumn row:(NSInteger) row +- (void) tableView:(NSTableView *)tableView setObjectValue:(id)object + forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { NSMutableArray *item; int col; - if (table_apps == nil) - return; + if (table_apps == nil) return; - col =[[tableColumn identifier] intValue]; + col = [[tableColumn identifier] intValue]; - item =[table_apps objectAtIndex:row]; - [item replaceObjectAtIndex: col withObject:object]; + item = [table_apps objectAtIndex:row]; + [item replaceObjectAtIndex:col withObject:object]; } - -(void) hide_window:sender { +- (void) hide_window:sender +{ if ([X11App x_active]) DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMHideWindow); else - NSBeep(); /* FIXME: something here */ + NSBeep(); /* FIXME: something here */ } - -(IBAction) bring_to_front:sender { +- (IBAction)bring_to_front:sender +{ DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMBringAllToFront); } - -(IBAction) close_window:sender { +- (IBAction)close_window:sender +{ if ([X11App x_active]) DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMCloseWindow); else - [[NSApp keyWindow] performClose:sender]; + [[NSApp keyWindow] performClose:sender]; } - -(IBAction) minimize_window:sender { +- (IBAction)minimize_window:sender +{ if ([X11App x_active]) DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMMinimizeWindow); else - [[NSApp keyWindow] performMiniaturize:sender]; + [[NSApp keyWindow] performMiniaturize:sender]; } - -(IBAction) zoom_window:sender { +- (IBAction)zoom_window:sender +{ if ([X11App x_active]) DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMZoomWindow); else - [[NSApp keyWindow] performZoom:sender]; + [[NSApp keyWindow] performZoom:sender]; } - -(IBAction) next_window:sender { +- (IBAction) next_window:sender +{ DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMNextWindow); } - -(IBAction) previous_window:sender { +- (IBAction) previous_window:sender +{ DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMPreviousWindow); } - -(IBAction) enable_fullscreen_changed:sender { +- (IBAction) enable_fullscreen_changed:sender +{ XQuartzRootlessDefault = ![enable_fullscreen intValue]; - [enable_fullscreen_menu setEnabled:!XQuartzRootlessDefault]; - [enable_fullscreen_menu_text setTextColor:XQuartzRootlessDefault ?[NSColor disabledControlTextColor] :[NSColor - controlTextColor]]; + [enable_fullscreen_menu setEnabled:!XQuartzRootlessDefault]; + [enable_fullscreen_menu_text setTextColor:XQuartzRootlessDefault ?[ + NSColor disabledControlTextColor] : [NSColor controlTextColor]]; DarwinSendDDXEvent(kXquartzSetRootless, 1, XQuartzRootlessDefault); - [NSApp prefs_set_boolean: @PREFS_ROOTLESS value:XQuartzRootlessDefault]; + [NSApp prefs_set_boolean:@PREFS_ROOTLESS value:XQuartzRootlessDefault]; [NSApp prefs_synchronize]; } - -(IBAction) toggle_fullscreen:sender { +- (IBAction) toggle_fullscreen:sender +{ DarwinSendDDXEvent(kXquartzToggleFullscreen, 0); } - -(void) set_can_quit:(OSX_BOOL) state { +- (void) set_can_quit:(OSX_BOOL)state +{ can_quit = state; } - -(IBAction) prefs_changed:sender { +- (IBAction)prefs_changed:sender +{ if (!sender) return; if (sender == fake_buttons) { - darwinFakeButtons =[fake_buttons intValue]; - [NSApp prefs_set_boolean: @PREFS_FAKEBUTTONS value:darwinFakeButtons]; + darwinFakeButtons = [fake_buttons intValue]; + [NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons]; } else if (sender == enable_keyequivs) { - XQuartzEnableKeyEquivalents =[enable_keyequivs intValue]; - [NSApp prefs_set_boolean: @PREFS_KEYEQUIVS value:XQuartzEnableKeyEquivalents]; + XQuartzEnableKeyEquivalents = [enable_keyequivs intValue]; + [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value: + XQuartzEnableKeyEquivalents]; } else if (sender == sync_keymap) { - darwinSyncKeymap =[sync_keymap intValue]; - [NSApp prefs_set_boolean: @PREFS_SYNC_KEYMAP value:darwinSyncKeymap]; + darwinSyncKeymap = [sync_keymap intValue]; + [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap]; } else if (sender == enable_fullscreen_menu) { - XQuartzFullscreenMenu =[enable_fullscreen_menu intValue]; - [NSApp prefs_set_boolean: @PREFS_FULLSCREEN_MENU value:XQuartzFullscreenMenu]; + XQuartzFullscreenMenu = [enable_fullscreen_menu intValue]; + [NSApp prefs_set_boolean:@PREFS_FULLSCREEN_MENU value: + XQuartzFullscreenMenu]; } else if (sender == option_sends_alt) { BOOL prev_opt_sends_alt = XQuartzOptionSendsAlt; - XQuartzOptionSendsAlt =[option_sends_alt intValue]; - [NSApp prefs_set_boolean: @PREFS_OPTION_SENDS_ALT value:XQuartzOptionSendsAlt]; + XQuartzOptionSendsAlt = [option_sends_alt intValue]; + [NSApp prefs_set_boolean:@PREFS_OPTION_SENDS_ALT value: + XQuartzOptionSendsAlt]; if (prev_opt_sends_alt != XQuartzOptionSendsAlt) QuartsResyncKeymap(TRUE); } else if (sender == click_through) { - [NSApp prefs_set_boolean: @PREFS_CLICK_THROUGH value:[click_through - intValue]]; + [NSApp prefs_set_boolean:@PREFS_CLICK_THROUGH value:[click_through + intValue]]; } else if (sender == focus_follows_mouse) { - [NSApp prefs_set_boolean: @PREFS_FFM value:[focus_follows_mouse - intValue]]; + [NSApp prefs_set_boolean:@PREFS_FFM value:[focus_follows_mouse + intValue]]; } else if (sender == focus_on_new_window) { - [NSApp prefs_set_boolean: @PREFS_FOCUS_ON_NEW_WINDOW value:[focus_on_new_window - intValue]]; + [NSApp prefs_set_boolean:@PREFS_FOCUS_ON_NEW_WINDOW value:[ + focus_on_new_window intValue]]; } else if (sender == enable_auth) { - [NSApp prefs_set_boolean: @PREFS_NO_AUTH value:![enable_auth - intValue]]; + [NSApp prefs_set_boolean:@PREFS_NO_AUTH value:![enable_auth intValue] + ]; } else if (sender == enable_tcp) { - [NSApp prefs_set_boolean: @PREFS_NO_TCP value:![enable_tcp intValue]]; + [NSApp prefs_set_boolean:@PREFS_NO_TCP value:![enable_tcp intValue]]; } else if (sender == depth) { - [NSApp prefs_set_integer: @PREFS_DEPTH value:[depth selectedTag]]; + [NSApp prefs_set_integer:@PREFS_DEPTH value:[depth selectedTag]]; } else if (sender == sync_pasteboard) { - BOOL pbproxy_active =[sync_pasteboard intValue]; - - [NSApp prefs_set_boolean: @PREFS_SYNC_PB value:pbproxy_active]; + BOOL pbproxy_active = [sync_pasteboard intValue]; + [NSApp prefs_set_boolean:@PREFS_SYNC_PB value:pbproxy_active]; - [sync_pasteboard_to_clipboard setEnabled:pbproxy_active]; - [sync_pasteboard_to_primary setEnabled:pbproxy_active]; - [sync_clipboard_to_pasteboard setEnabled:pbproxy_active]; - [sync_primary_immediately setEnabled:pbproxy_active]; + [sync_pasteboard_to_clipboard setEnabled:pbproxy_active]; + [sync_pasteboard_to_primary setEnabled:pbproxy_active]; + [sync_clipboard_to_pasteboard setEnabled:pbproxy_active]; + [sync_primary_immediately setEnabled:pbproxy_active]; // setEnabled doesn't do this... - [sync_text1 setTextColor:pbproxy_active ?[NSColor controlTextColor] :[NSColor - disabledControlTextColor]]; - [sync_text2 setTextColor:pbproxy_active ?[NSColor controlTextColor] :[NSColor - disabledControlTextColor]]; + [sync_text1 setTextColor:pbproxy_active ?[NSColor controlTextColor] : + [NSColor disabledControlTextColor]]; + [sync_text2 setTextColor:pbproxy_active ?[NSColor controlTextColor] : + [NSColor disabledControlTextColor]]; } else if (sender == sync_pasteboard_to_clipboard) { - [NSApp prefs_set_boolean: @PREFS_SYNC_PB_TO_CLIPBOARD value:[sync_pasteboard_to_clipboard - intValue]]; + [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_CLIPBOARD value:[ + sync_pasteboard_to_clipboard intValue]]; } else if (sender == sync_pasteboard_to_primary) { - [NSApp prefs_set_boolean: @PREFS_SYNC_PB_TO_PRIMARY value:[sync_pasteboard_to_primary - intValue]]; + [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_PRIMARY value:[ + sync_pasteboard_to_primary intValue]]; } else if (sender == sync_clipboard_to_pasteboard) { - [NSApp prefs_set_boolean: @PREFS_SYNC_CLIPBOARD_TO_PB value:[sync_clipboard_to_pasteboard - intValue]]; + [NSApp prefs_set_boolean:@PREFS_SYNC_CLIPBOARD_TO_PB value:[ + sync_clipboard_to_pasteboard intValue]]; } else if (sender == sync_primary_immediately) { - [NSApp prefs_set_boolean: @PREFS_SYNC_PRIMARY_ON_SELECT value:[sync_primary_immediately - intValue]]; + [NSApp prefs_set_boolean:@PREFS_SYNC_PRIMARY_ON_SELECT value:[ + sync_primary_immediately intValue]]; } else if (sender == scroll_in_device_direction) { - XQuartzScrollInDeviceDirection =[scroll_in_device_direction intValue]; - [NSApp prefs_set_boolean: @PREFS_SCROLL_IN_DEV_DIRECTION value:XQuartzScrollInDeviceDirection]; + XQuartzScrollInDeviceDirection = + [scroll_in_device_direction intValue]; + [NSApp prefs_set_boolean:@PREFS_SCROLL_IN_DEV_DIRECTION value: + XQuartzScrollInDeviceDirection]; } [NSApp prefs_synchronize]; @@ -690,9 +731,10 @@ tableColumn row:(NSInteger) row DarwinSendDDXEvent(kXquartzReloadPreferences, 0); } - -(IBAction) prefs_show:sender { -BOOL pbproxy_active =[NSApp prefs_get_boolean: @PREFS_SYNC_PB default: -YES]; +- (IBAction) prefs_show:sender +{ + BOOL pbproxy_active = + [NSApp prefs_get_boolean:@PREFS_SYNC_PB default:YES]; // Remove preferences from the GUI which are not supported // TODO: Change 1117 to NSAppKitVersionNumber10_7 when it is defined @@ -701,116 +743,129 @@ YES]; scroll_in_device_direction = nil; } else { - [scroll_in_device_direction setIntValue:XQuartzScrollInDeviceDirection]; - } - - [fake_buttons setIntValue:darwinFakeButtons]; - [enable_keyequivs setIntValue:XQuartzEnableKeyEquivalents]; - [sync_keymap setIntValue:darwinSyncKeymap]; - [option_sends_alt setIntValue:XQuartzOptionSendsAlt]; -[click_through setIntValue: [NSApp prefs_get_boolean: @PREFS_CLICK_THROUGH default: -NO]]; -[focus_follows_mouse setIntValue: [NSApp prefs_get_boolean: @PREFS_FFM default: -NO]]; -[focus_on_new_window setIntValue: [NSApp prefs_get_boolean: @PREFS_FOCUS_ON_NEW_WINDOW default: -YES]]; - -[enable_auth setIntValue: ![NSApp prefs_get_boolean: @PREFS_NO_AUTH default: -NO]]; -[enable_tcp setIntValue: ![NSApp prefs_get_boolean: @PREFS_NO_TCP default: -NO]]; - -[depth selectItemAtIndex: [depth indexOfItemWithTag: [NSApp prefs_get_integer: @PREFS_DEPTH default: --1]]]; - - [sync_pasteboard setIntValue:pbproxy_active]; -[sync_pasteboard_to_clipboard setIntValue: [NSApp prefs_get_boolean: @PREFS_SYNC_PB_TO_CLIPBOARD default: -YES]]; -[sync_pasteboard_to_primary setIntValue: [NSApp prefs_get_boolean: @PREFS_SYNC_PB_TO_PRIMARY default: -YES]]; -[sync_clipboard_to_pasteboard setIntValue: [NSApp prefs_get_boolean: @PREFS_SYNC_CLIPBOARD_TO_PB default: -YES]]; -[sync_primary_immediately setIntValue: [NSApp prefs_get_boolean: @PREFS_SYNC_PRIMARY_ON_SELECT default: -NO]]; - - [sync_pasteboard_to_clipboard setEnabled:pbproxy_active]; - [sync_pasteboard_to_primary setEnabled:pbproxy_active]; - [sync_clipboard_to_pasteboard setEnabled:pbproxy_active]; - [sync_primary_immediately setEnabled:pbproxy_active]; + [scroll_in_device_direction setIntValue: + XQuartzScrollInDeviceDirection]; + } + + [fake_buttons setIntValue:darwinFakeButtons]; + [enable_keyequivs setIntValue:XQuartzEnableKeyEquivalents]; + [sync_keymap setIntValue:darwinSyncKeymap]; + [option_sends_alt setIntValue:XQuartzOptionSendsAlt]; + [click_through setIntValue:[NSApp prefs_get_boolean:@PREFS_CLICK_THROUGH + default:NO]]; + [focus_follows_mouse setIntValue:[NSApp prefs_get_boolean:@PREFS_FFM + default:NO]]; + [focus_on_new_window setIntValue:[NSApp prefs_get_boolean: + @PREFS_FOCUS_ON_NEW_WINDOW default:YES] + ]; + + [enable_auth setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_AUTH default + :NO]]; + [enable_tcp setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_TCP default: + NO]]; + + [depth selectItemAtIndex:[depth indexOfItemWithTag:[NSApp + prefs_get_integer: + @PREFS_DEPTH default: + -1]]]; + + [sync_pasteboard setIntValue:pbproxy_active]; + [sync_pasteboard_to_clipboard setIntValue:[NSApp prefs_get_boolean: + @PREFS_SYNC_PB_TO_CLIPBOARD + default:YES]]; + [sync_pasteboard_to_primary setIntValue:[NSApp prefs_get_boolean: + @PREFS_SYNC_PB_TO_PRIMARY + default:YES]]; + [sync_clipboard_to_pasteboard setIntValue:[NSApp prefs_get_boolean: + @PREFS_SYNC_CLIPBOARD_TO_PB + default:YES]]; + [sync_primary_immediately setIntValue:[NSApp prefs_get_boolean: + @PREFS_SYNC_PRIMARY_ON_SELECT + default:NO]]; + + [sync_pasteboard_to_clipboard setEnabled:pbproxy_active]; + [sync_pasteboard_to_primary setEnabled:pbproxy_active]; + [sync_clipboard_to_pasteboard setEnabled:pbproxy_active]; + [sync_primary_immediately setEnabled:pbproxy_active]; // setEnabled doesn't do this... - [sync_text1 setTextColor:pbproxy_active ?[NSColor controlTextColor] :[NSColor - disabledControlTextColor]]; - [sync_text2 setTextColor:pbproxy_active ?[NSColor controlTextColor] :[NSColor - disabledControlTextColor]]; + [sync_text1 setTextColor:pbproxy_active ?[NSColor controlTextColor] : [ + NSColor disabledControlTextColor]]; + [sync_text2 setTextColor:pbproxy_active ?[NSColor controlTextColor] : [ + NSColor disabledControlTextColor]]; - [enable_fullscreen setIntValue:!XQuartzRootlessDefault]; - [enable_fullscreen_menu setIntValue:XQuartzFullscreenMenu]; - [enable_fullscreen_menu setEnabled:!XQuartzRootlessDefault]; - [enable_fullscreen_menu_text setTextColor:XQuartzRootlessDefault ?[NSColor disabledControlTextColor] :[NSColor - controlTextColor]]; + [enable_fullscreen setIntValue:!XQuartzRootlessDefault]; + [enable_fullscreen_menu setIntValue:XQuartzFullscreenMenu]; + [enable_fullscreen_menu setEnabled:!XQuartzRootlessDefault]; + [enable_fullscreen_menu_text setTextColor:XQuartzRootlessDefault ?[ + NSColor disabledControlTextColor] : [NSColor controlTextColor]]; - [prefs_panel makeKeyAndOrderFront:sender]; + [prefs_panel makeKeyAndOrderFront:sender]; } - -(IBAction) quit:sender { +- (IBAction) quit:sender +{ DarwinSendDDXEvent(kXquartzQuit, 0); } - -(IBAction) x11_help:sender { +- (IBAction) x11_help:sender +{ #if MAC_OS_X_VERSION_MIN_REQUIRED < 1060 - AHLookupAnchor((CFStringRef) NSLocalizedString(@"Mac Help", no comment), + AHLookupAnchor((CFStringRef)NSLocalizedString(@"Mac Help", + no comment), CFSTR("mchlp2276")); #else AHLookupAnchor(CFSTR("com.apple.machelp"), CFSTR("mchlp2276")); #endif } - -(OSX_BOOL) validateMenuItem:(NSMenuItem *) item { - NSMenu *menu =[item menu]; +- (OSX_BOOL) validateMenuItem:(NSMenuItem *)item +{ + NSMenu *menu = [item menu]; if (item == toggle_fullscreen_item) return !XQuartzIsRootless; - else if (menu ==[X11App windowsMenu] || menu == dock_menu - || (menu ==[x11_about_item menu] &&[item tag] == 42)) + else if (menu == [X11App windowsMenu] || menu == dock_menu + || (menu == [x11_about_item menu] && [item tag] == 42)) return (AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0; else return TRUE; } - -(void) applicationDidHide:(NSNotification *) notify { +- (void) applicationDidHide:(NSNotification *)notify +{ DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMHideAll); - /* Toggle off fullscreen mode to leave our non-default video - * mode and hide our guard window. + /* Toggle off fullscreen mode to leave our non-default video + * mode and hide our guard window. */ if (!XQuartzIsRootless && XQuartzFullscreenVisible) { DarwinSendDDXEvent(kXquartzToggleFullscreen, 0); } } - -(void) applicationDidUnhide:(NSNotification *) notify { +- (void) applicationDidUnhide:(NSNotification *)notify +{ DarwinSendDDXEvent(kXquartzControllerNotify, 1, AppleWMShowAll); } - -(NSApplicationTerminateReply) applicationShouldTerminate:sender { +- (NSApplicationTerminateReply) applicationShouldTerminate:sender +{ NSString *msg; NSString *title; -if (can_quit ||[X11App prefs_get_boolean: @PREFS_NO_QUIT_ALERT default: -NO]) + if (can_quit || + [X11App prefs_get_boolean:@PREFS_NO_QUIT_ALERT default:NO]) return NSTerminateNow; /* Make sure we're frontmost. */ - [NSApp activateIgnoringOtherApps:YES]; + [NSApp activateIgnoringOtherApps:YES]; - title = - NSLocalizedString(@"Do you really want to quit X11?", - @"Dialog title when quitting"); - msg = - NSLocalizedString - (@"Any open X11 applications will stop immediately, and you will lose any unsaved changes.", - @"Dialog when quitting"); + title = NSLocalizedString(@"Do you really want to quit X11?", + @"Dialog title when quitting"); + msg = NSLocalizedString( + @"Any open X11 applications will stop immediately, and you will lose any unsaved changes.", + @"Dialog when quitting"); /* FIXME: safe to run the alert in here? Or should we return Later * and then run the alert on a timer? It seems to work here, so.. @@ -821,9 +876,9 @@ NO]) == NSAlertDefaultReturn) ? NSTerminateNow : NSTerminateCancel; } - -(void) applicationWillTerminate:(NSNotification *) aNotification { +- (void) applicationWillTerminate:(NSNotification *)aNotification +{ unsigned remain; - [X11App prefs_synchronize]; /* shutdown the X server, it will exit () for us. */ @@ -831,20 +886,20 @@ NO]) /* In case it doesn't, exit anyway after a while. */ remain = 10000000; - while ((remain = usleep(remain)) > 0); + while ((remain = usleep(remain)) > 0) ; exit(1); } --(void) server_ready { +- (void) server_ready +{ x_list *node; finished_launching = YES; for (node = pending_apps; node != NULL; node = node->next) { NSString *filename = node->data; - - [self launch_client:filename]; + [self launch_client:filename]; [filename release]; } @@ -852,21 +907,22 @@ NO]) pending_apps = NULL; } - -(OSX_BOOL) application:(NSApplication *) -app openFile:(NSString *) filename +- (OSX_BOOL) application:(NSApplication *)app openFile:(NSString *)filename { - const char *name =[filename UTF8String]; + const char *name = [filename UTF8String]; if (finished_launching) - [self launch_client:filename]; - else if (name[0] != ':') /* ignore display names */ - pending_apps = x_list_prepend(pending_apps,[filename retain]); + [self launch_client:filename]; + else if (name[0] != ':') /* ignore display names */ + pending_apps = x_list_prepend(pending_apps, [filename retain]); /* FIXME: report failures. */ return YES; } -@end void +@end + +void X11ControllerMain(int argc, char **argv, char **envp) { X11ApplicationMain(argc, argv, envp); diff --git a/xorg-server/hw/xquartz/applewm.c b/xorg-server/hw/xquartz/applewm.c index 70fb60a18..81db13ea9 100644 --- a/xorg-server/hw/xquartz/applewm.c +++ b/xorg-server/hw/xquartz/applewm.c @@ -1,29 +1,32 @@ -/************************************************************************** - -Copyright (c) 2002-2007 Apple Inc. All Rights Reserved. -Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -**************************************************************************/ +/* + * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #include "sanitizedCarbon.h" @@ -52,19 +55,19 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "X11Application.h" #include "protocol-versions.h" -#define DEFINE_ATOM_HELPER(func,atom_name) \ -static Atom func (void) { \ - static int generation; \ - static Atom atom; \ - if (generation != serverGeneration) { \ - generation = serverGeneration; \ - atom = MakeAtom (atom_name, strlen (atom_name), TRUE); \ - } \ - return atom; \ -} +#define DEFINE_ATOM_HELPER(func, atom_name) \ + static Atom func(void) { \ + static int generation; \ + static Atom atom; \ + if (generation != serverGeneration) { \ + generation = serverGeneration; \ + atom = MakeAtom(atom_name, strlen(atom_name), TRUE); \ + } \ + return atom; \ + } DEFINE_ATOM_HELPER(xa_native_screen_origin, "_NATIVE_SCREEN_ORIGIN") - DEFINE_ATOM_HELPER(xa_apple_no_order_in, "_APPLE_NO_ORDER_IN") +DEFINE_ATOM_HELPER(xa_apple_no_order_in, "_APPLE_NO_ORDER_IN") static AppleWMProcsPtr appleWMProcs; @@ -73,7 +76,7 @@ static int WMErrorBase; static unsigned char WMReqCode = 0; static int WMEventBase = 0; -static RESTYPE ClientType, EventType; /* resource types for event masks */ +static RESTYPE ClientType, EventType; /* resource types for event masks */ static XID eventResource; /* Currently selected events */ @@ -84,7 +87,7 @@ WMFreeClient(pointer data, XID id); static int WMFreeEvents(pointer data, XID id); static void -SNotifyEvent(xAppleWMNotifyEvent * from, xAppleWMNotifyEvent * to); +SNotifyEvent(xAppleWMNotifyEvent *from, xAppleWMNotifyEvent *to); typedef struct _WMEvent *WMEventPtr; typedef struct _WMEvent { @@ -98,7 +101,6 @@ static inline BoxRec make_box(int x, int y, int w, int h) { BoxRec r; - r.x1 = x; r.y1 = y; r.x2 = x + w; @@ -155,14 +157,14 @@ ProcAppleWMQueryVersion(register ClientPtr client) swaps(&rep.sequenceNumber); swapl(&rep.length); } - WriteToClient(client, sizeof(xAppleWMQueryVersionReply), (char *) &rep); + WriteToClient(client, sizeof(xAppleWMQueryVersionReply), (char *)&rep); return Success; } - + /* events */ static inline void -updateEventMask(WMEventPtr * pHead) +updateEventMask(WMEventPtr *pHead) { WMEventPtr pCur; @@ -171,18 +173,19 @@ updateEventMask(WMEventPtr * pHead) eventMask |= pCur->mask; } - /*ARGSUSED*/ static int +/*ARGSUSED*/ +static int WMFreeClient(pointer data, XID id) { WMEventPtr pEvent; - WMEventPtr *pHead, pCur, pPrev; + WMEventPtr *pHead, pCur, pPrev; int i; - pEvent = (WMEventPtr) data; - i = dixLookupResourceByType((pointer *) &pHead, eventResource, EventType, - serverClient, - DixReadAccess | DixWriteAccess | - DixDestroyAccess); + pEvent = (WMEventPtr)data; + i = dixLookupResourceByType( + (pointer *)&pHead, eventResource, EventType, serverClient, + DixReadAccess | + DixWriteAccess | DixDestroyAccess); if (i == Success && pHead) { pPrev = 0; for (pCur = *pHead; pCur && pCur != pEvent; pCur = pCur->next) @@ -195,22 +198,23 @@ WMFreeClient(pointer data, XID id) } updateEventMask(pHead); } - free((pointer) pEvent); + free((pointer)pEvent); return 1; } - /*ARGSUSED*/ static int +/*ARGSUSED*/ +static int WMFreeEvents(pointer data, XID id) { - WMEventPtr *pHead, pCur, pNext; + WMEventPtr *pHead, pCur, pNext; - pHead = (WMEventPtr *) data; + pHead = (WMEventPtr *)data; for (pCur = *pHead; pCur; pCur = pNext) { pNext = pCur->next; FreeResource(pCur->clientResource, ClientType); - free((pointer) pCur); + free((pointer)pCur); } - free((pointer) pHead); + free((pointer)pHead); eventMask = 0; return 1; } @@ -224,8 +228,10 @@ ProcAppleWMSelectInput(register ClientPtr client) int i; REQUEST_SIZE_MATCH(xAppleWMSelectInputReq); - i = dixLookupResourceByType((pointer *) &pHead, eventResource, EventType, - client, DixWriteAccess); + i = + dixLookupResourceByType((pointer *)&pHead, eventResource, EventType, + client, + DixWriteAccess); if (stuff->mask != 0) { if (i == Success && pHead) { /* check for existing entry. */ @@ -239,7 +245,7 @@ ProcAppleWMSelectInput(register ClientPtr client) } /* build the entry */ - pNewEvent = (WMEventPtr) malloc(sizeof(WMEventRec)); + pNewEvent = (WMEventPtr)malloc(sizeof(WMEventRec)); if (!pNewEvent) return BadAlloc; pNewEvent->next = 0; @@ -251,7 +257,7 @@ ProcAppleWMSelectInput(register ClientPtr client) */ clientResource = FakeClientID(client->index); pNewEvent->clientResource = clientResource; - if (!AddResource(clientResource, ClientType, (pointer) pNewEvent)) + if (!AddResource(clientResource, ClientType, (pointer)pNewEvent)) return BadAlloc; /* * create a resource to contain a pointer to the list @@ -260,9 +266,9 @@ ProcAppleWMSelectInput(register ClientPtr client) * done through the resource database. */ if (i != Success || !pHead) { - pHead = (WMEventPtr *) malloc(sizeof(WMEventPtr)); + pHead = (WMEventPtr *)malloc(sizeof(WMEventPtr)); if (!pHead || - !AddResource(eventResource, EventType, (pointer) pHead)) { + !AddResource(eventResource, EventType, (pointer)pHead)) { FreeResource(clientResource, RT_NONE); return BadAlloc; } @@ -306,12 +312,14 @@ ProcAppleWMSelectInput(register ClientPtr client) void AppleWMSendEvent(int type, unsigned int mask, int which, int arg) { - WMEventPtr *pHead, pEvent; + WMEventPtr *pHead, pEvent; xAppleWMNotifyEvent se; int i; - i = dixLookupResourceByType((pointer *) &pHead, eventResource, EventType, - serverClient, DixReadAccess); + i = + dixLookupResourceByType((pointer *)&pHead, eventResource, EventType, + serverClient, + DixReadAccess); if (i != Success || !pHead) return; for (pEvent = *pHead; pEvent; pEvent = pEvent->next) { @@ -321,7 +329,7 @@ AppleWMSendEvent(int type, unsigned int mask, int which, int arg) se.kind = which; se.arg = arg; se.time = currentTime.milliseconds; - WriteEventsToClient(pEvent->client, 1, (xEvent *) &se); + WriteEventsToClient(pEvent->client, 1, (xEvent *)&se); } } @@ -331,7 +339,7 @@ AppleWMSelectedEvents(void) { return eventMask; } - + /* general utility functions */ static int @@ -353,7 +361,7 @@ ProcAppleWMReenableUpdate(register ClientPtr client) return Success; } - + /* window functions */ static int @@ -362,7 +370,6 @@ ProcAppleWMSetWindowMenu(register ClientPtr client) const char *bytes, **items; char *shortcuts; int max_len, nitems, i, j; - REQUEST(xAppleWMSetWindowMenuReq); REQUEST_AT_LEAST_SIZE(xAppleWMSetWindowMenuReq); @@ -372,13 +379,14 @@ ProcAppleWMSetWindowMenu(register ClientPtr client) shortcuts = malloc(sizeof(char) * nitems); max_len = (stuff->length << 2) - sizeof(xAppleWMSetWindowMenuReq); - bytes = (char *) &stuff[1]; + bytes = (char *)&stuff[1]; for (i = j = 0; i < max_len && j < nitems;) { shortcuts[j] = bytes[i++]; items[j++] = bytes + i; - while (i < max_len) { + while (i < max_len) + { if (bytes[i++] == 0) break; } @@ -418,7 +426,8 @@ ProcAppleWMSetWindowLevel(register ClientPtr client) REQUEST_SIZE_MATCH(xAppleWMSetWindowLevelReq); - if (Success != dixLookupWindow(&pWin, stuff->window, client, DixReadAccess)) + if (Success != dixLookupWindow(&pWin, stuff->window, client, + DixReadAccess)) return BadValue; if (stuff->level >= AppleWMNumWindowLevels) { @@ -456,7 +465,6 @@ static int ProcAppleWMAttachTransient(register ClientPtr client) { WindowPtr pWinChild, pWinParent; - REQUEST(xAppleWMAttachTransientReq); int err; @@ -496,7 +504,7 @@ ProcAppleWMSetCanQuit(register ClientPtr client) X11ApplicationSetCanQuit(stuff->state); return Success; } - + /* frame functions */ static int @@ -504,7 +512,6 @@ ProcAppleWMFrameGetRect(register ClientPtr client) { xAppleWMFrameGetRectReply rep; BoxRec ir, or, rr; - REQUEST(xAppleWMFrameGetRectReq); REQUEST_SIZE_MATCH(xAppleWMFrameGetRectReq); @@ -526,7 +533,7 @@ ProcAppleWMFrameGetRect(register ClientPtr client) rep.w = rr.x2 - rr.x1; rep.h = rr.y2 - rr.y1; - WriteToClient(client, sizeof(xAppleWMFrameGetRectReply), (char *) &rep); + WriteToClient(client, sizeof(xAppleWMFrameGetRectReply), (char *)&rep); return Success; } @@ -536,7 +543,6 @@ ProcAppleWMFrameHitTest(register ClientPtr client) xAppleWMFrameHitTestReply rep; BoxRec ir, or; int ret; - REQUEST(xAppleWMFrameHitTestReq); REQUEST_SIZE_MATCH(xAppleWMFrameHitTestReq); @@ -554,7 +560,7 @@ ProcAppleWMFrameHitTest(register ClientPtr client) rep.ret = ret; - WriteToClient(client, sizeof(xAppleWMFrameHitTestReply), (char *) &rep); + WriteToClient(client, sizeof(xAppleWMFrameHitTestReply), (char *)&rep); return Success; } @@ -564,13 +570,13 @@ ProcAppleWMFrameDraw(register ClientPtr client) BoxRec ir, or; unsigned int title_length, title_max; unsigned char *title_bytes; - REQUEST(xAppleWMFrameDrawReq); WindowPtr pWin; REQUEST_AT_LEAST_SIZE(xAppleWMFrameDrawReq); - if (Success != dixLookupWindow(&pWin, stuff->window, client, DixReadAccess)) + if (Success != dixLookupWindow(&pWin, stuff->window, client, + DixReadAccess)) return BadValue; ir = make_box(stuff->ix, stuff->iy, stuff->iw, stuff->ih); @@ -582,7 +588,7 @@ ProcAppleWMFrameDraw(register ClientPtr client) if (title_max < title_length) return BadValue; - title_bytes = (unsigned char *) &stuff[1]; + title_bytes = (unsigned char *)&stuff[1]; errno = appleWMProcs->FrameDraw(pWin, stuff->frame_class, stuff->frame_attr, &or, &ir, @@ -593,7 +599,7 @@ ProcAppleWMFrameDraw(register ClientPtr client) return Success; } - + /* dispatch */ static int @@ -612,37 +618,50 @@ ProcAppleWMDispatch(register ClientPtr client) switch (stuff->data) { case X_AppleWMSelectInput: return ProcAppleWMSelectInput(client); + case X_AppleWMDisableUpdate: return ProcAppleWMDisableUpdate(client); + case X_AppleWMReenableUpdate: return ProcAppleWMReenableUpdate(client); + case X_AppleWMSetWindowMenu: return ProcAppleWMSetWindowMenu(client); + case X_AppleWMSetWindowMenuCheck: return ProcAppleWMSetWindowMenuCheck(client); + case X_AppleWMSetFrontProcess: return ProcAppleWMSetFrontProcess(client); + case X_AppleWMSetWindowLevel: return ProcAppleWMSetWindowLevel(client); + case X_AppleWMSetCanQuit: return ProcAppleWMSetCanQuit(client); + case X_AppleWMFrameGetRect: return ProcAppleWMFrameGetRect(client); + case X_AppleWMFrameHitTest: return ProcAppleWMFrameHitTest(client); + case X_AppleWMFrameDraw: return ProcAppleWMFrameDraw(client); + case X_AppleWMSendPSN: return ProcAppleWMSendPSN(client); + case X_AppleWMAttachTransient: return ProcAppleWMAttachTransient(client); + default: return BadRequest; } } static void -SNotifyEvent(xAppleWMNotifyEvent * from, xAppleWMNotifyEvent * to) +SNotifyEvent(xAppleWMNotifyEvent *from, xAppleWMNotifyEvent *to) { to->type = from->type; to->kind = from->kind; @@ -672,6 +691,7 @@ SProcAppleWMDispatch(register ClientPtr client) switch (stuff->data) { case X_AppleWMQueryVersion: return SProcAppleWMQueryVersion(client); + default: return BadRequest; } @@ -680,7 +700,7 @@ SProcAppleWMDispatch(register ClientPtr client) void AppleWMExtensionInit(AppleWMProcsPtr procsPtr) { - ExtensionEntry *extEntry; + ExtensionEntry* extEntry; ClientType = CreateNewResourceType(WMFreeClient, "WMClient"); EventType = CreateNewResourceType(WMFreeEvents, "WMEvent"); @@ -692,14 +712,14 @@ AppleWMExtensionInit(AppleWMProcsPtr procsPtr) AppleWMNumberErrors, ProcAppleWMDispatch, SProcAppleWMDispatch, - NULL, StandardMinorOpcode))) { + NULL, + StandardMinorOpcode))) { size_t i; - - WMReqCode = (unsigned char) extEntry->base; + WMReqCode = (unsigned char)extEntry->base; WMErrorBase = extEntry->errorBase; WMEventBase = extEntry->eventBase; for (i = 0; i < AppleWMNumberEvents; i++) - EventSwapVector[WMEventBase + i] = (EventSwapPtr) SNotifyEvent; + EventSwapVector[WMEventBase + i] = (EventSwapPtr)SNotifyEvent; appleWMProcs = procsPtr; } } diff --git a/xorg-server/hw/xquartz/applewmExt.h b/xorg-server/hw/xquartz/applewmExt.h index 2ad9f45b9..14c77214a 100644 --- a/xorg-server/hw/xquartz/applewmExt.h +++ b/xorg-server/hw/xquartz/applewmExt.h @@ -1,32 +1,33 @@ -/* - * External interface for the server's AppleWM support +/* External interface for the server's AppleWM support + * + * Copyright (c) 2003-2004 Torrey T. Lyons. All Rights Reserved. + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. */ -/************************************************************************** - -Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved. -Copyright (c) 2003-2004 Torrey T. Lyons. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -**************************************************************************/ #ifndef _APPLEWMEXT_H_ #define _APPLEWMEXT_H_ @@ -40,21 +41,22 @@ typedef int xp_frame_class; typedef int xp_frame_rect; #endif -typedef int (*DisableUpdateProc) (void); -typedef int (*EnableUpdateProc) (void); -typedef int (*SetWindowLevelProc) (WindowPtr pWin, int level); -typedef int (*FrameGetRectProc) (xp_frame_rect type, xp_frame_class class, - const BoxRec * outer, const BoxRec * inner, - BoxRec * ret); -typedef int (*FrameHitTestProc) (xp_frame_class class, int x, int y, - const BoxRec * outer, const BoxRec * inner, - int *ret); -typedef int (*FrameDrawProc) (WindowPtr pWin, xp_frame_class class, - xp_frame_attr attr, const BoxRec * outer, - const BoxRec * inner, 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); +typedef int (*DisableUpdateProc)(void); +typedef int (*EnableUpdateProc)(void); +typedef int (*SetWindowLevelProc)(WindowPtr pWin, int level); +typedef int (*FrameGetRectProc)(xp_frame_rect type, xp_frame_class class, + const BoxRec *outer, + const BoxRec *inner, BoxRec *ret); +typedef int (*FrameHitTestProc)(xp_frame_class class, int x, int y, + const BoxRec *outer, + const BoxRec *inner, int *ret); +typedef int (*FrameDrawProc)(WindowPtr pWin, xp_frame_class class, + xp_frame_attr attr, + const BoxRec *outer, const BoxRec *inner, + 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 @@ -70,19 +72,21 @@ typedef struct _AppleWMProcs { AttachTransientProc AttachTransient; } AppleWMProcsRec, *AppleWMProcsPtr; -void AppleWMExtensionInit(AppleWMProcsPtr procsPtr); +void +AppleWMExtensionInit(AppleWMProcsPtr procsPtr); -void AppleWMSetScreenOrigin(WindowPtr pWin); +void +AppleWMSetScreenOrigin(WindowPtr pWin); -Bool AppleWMDoReorderWindow(WindowPtr pWin); +Bool +AppleWMDoReorderWindow(WindowPtr pWin); -void AppleWMSendEvent(int /* type */ , - unsigned int /* mask */ , - int /* which */ , - int /* arg */ - ); +void +AppleWMSendEvent(int /* type */, unsigned int /* mask */, int /* which */, + int /* arg */ + ); -unsigned int AppleWMSelectedEvents(void - ); +unsigned int +AppleWMSelectedEvents(void); -#endif /* _APPLEWMEXT_H_ */ +#endif /* _APPLEWMEXT_H_ */ diff --git a/xorg-server/hw/xquartz/bundle/Resources/English.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/English.lproj/Localizable.strings Binary files differindex bf2089ca1..36ae0ffb3 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/English.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/English.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/console_redirect.c b/xorg-server/hw/xquartz/console_redirect.c index 0f96a9512..7b92eca39 100644 --- a/xorg-server/hw/xquartz/console_redirect.c +++ b/xorg-server/hw/xquartz/console_redirect.c @@ -1,4 +1,5 @@ -/* Copyright (c) 2011 Apple Inc. +/* + * Copyright (c) 2011-2012 Apple Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files @@ -30,7 +31,7 @@ #include <dix-config.h> #else #define DEBUG_CONSOLE_REDIRECT 1 -#define HAVE_LIBDISPATCH 1 +#define HAVE_LIBDISPATCH 1 #endif #include <assert.h> @@ -102,7 +103,8 @@ _read_redirect(int fd, int flush) asl_redirect *aslr = &redirect_fds[fd]; while ((nbytes = - read(fd, aslr->w, BUF_SIZE - (aslr->w - aslr->buf) - 1)) > 0) { + read(fd, aslr->w, + BUF_SIZE - (aslr->w - aslr->buf) - 1)) > 0) { char *s, *p; /* Increment our returned number read */ @@ -114,7 +116,7 @@ _read_redirect(int fd, int flush) /* One line at a time */ for (p = aslr->buf; *p && (p - aslr->buf) < nbytes; p = s + 1) { // Find null or \n - for (s = p; *s && *s != '\n'; s++); + for (s = p; *s && *s != '\n'; s++) ; if (*s == '\n') { *s = '\0'; asl_log(aslr->asl, aslr->msg, aslr->level, "%s", p); @@ -149,9 +151,8 @@ _read_redirect(int fd, int flush) static void read_from_source(void *_source) { - dispatch_source_t source = (dispatch_source_t) _source; + dispatch_source_t source = (dispatch_source_t)_source; int fd = dispatch_source_get_handle(source); - if (_read_redirect(fd, 0) == EOF) { dispatch_source_cancel(source); } @@ -160,7 +161,7 @@ read_from_source(void *_source) static void cancel_source(void *_source) { - dispatch_source_t source = (dispatch_source_t) _source; + dispatch_source_t source = (dispatch_source_t)_source; int fd = dispatch_source_get_handle(source); asl_redirect *aslr = &redirect_fds[fd]; @@ -174,7 +175,7 @@ cancel_source(void *_source) dispatch_group_leave(read_source_group); } -#else /* !HAVE_LIBDISPATCH */ +#else /* !HAVE_LIBDISPATCH */ static void * redirect_thread(void *ctx __unused) { @@ -205,16 +206,18 @@ redirect_thread(void *ctx __unused) if (fd < 0 || fd >= n_redirect_fds || aslr->buf == NULL) { asl_log(NULL, NULL, ASL_LEVEL_ERR, - "Unexpected file descriptor: %d", fd); + "Unexpected file descriptor: %d", + fd); goto next; } if (ev.flags & EV_EOF) { close_fd = 1; if (EOF != _read_redirect(fd, 1)) { - asl_log(NULL, NULL, ASL_LEVEL_ERR, - "kevent reported EOF on %d, but read doesn't concur.", - fd); + asl_log( + NULL, NULL, ASL_LEVEL_ERR, + "kevent reported EOF on %d, but read doesn't concur.", + fd); } } else { @@ -229,7 +232,7 @@ redirect_thread(void *ctx __unused) memset(aslr, 0, sizeof(*aslr)); } } - next: +next: pthread_mutex_unlock(&redirect_fds_lock); case EVFILT_TIMER: @@ -237,7 +240,8 @@ redirect_thread(void *ctx __unused) return NULL; default: - ;; + ; + ; } } @@ -263,8 +267,8 @@ redirect_atexit(void) /* Wait at least three seconds for our sources to flush to ASL */ dispatch_group_wait(read_source_group, - dispatch_time(DISPATCH_TIME_NOW, - 3LL * NSEC_PER_SEC)); + dispatch_time(DISPATCH_TIME_NOW, 3LL * + NSEC_PER_SEC)); } #else { @@ -299,7 +303,8 @@ xq_asl_init(void) assert(read_source_group != NULL); #else assert((kq = kqueue()) != -1); - assert(pthread_create(&redirect_pthread, NULL, redirect_thread, NULL) == 0); + assert(pthread_create(&redirect_pthread, NULL, redirect_thread, + NULL) == 0); #endif atexit(redirect_atexit); @@ -311,12 +316,10 @@ xq_asl_log_fd(aslclient asl, aslmsg msg, int level, int fd) #ifdef HAVE_LIBDISPATCH int err __block = 0; static dispatch_once_t once_control; - dispatch_once_f(&once_control, NULL, xq_asl_init); #else int err = 0; static pthread_once_t once_control = PTHREAD_ONCE_INIT; - assert(pthread_once(&once_control, xq_asl_init) == 0); #endif @@ -330,70 +333,75 @@ xq_asl_log_fd(aslclient asl, aslmsg msg, int level, int fd) #define BLOCK_DONE goto done assert(pthread_mutex_lock(&redirect_fds_lock) == 0); #endif - { - /* Reallocate if we need more space */ - if (fd >= n_redirect_fds) { - size_t new_n = 1 << (ffs(fd) + 1); - asl_redirect *new_array = - realloc(redirect_fds, new_n * sizeof(*redirect_fds)); - if (!new_array) { - err = errno; - BLOCK_DONE; - } - redirect_fds = new_array; - memset(redirect_fds + n_redirect_fds, 0, new_n - n_redirect_fds); - n_redirect_fds = new_n; - } - - /* If we're already listening on it, return error. */ - if (redirect_fds[fd].buf != NULL) { - err = EBADF; - BLOCK_DONE; - } - - /* Initialize our buffer */ - redirect_fds[fd].buf = (char *) malloc(BUF_SIZE); - if (redirect_fds[fd].buf == NULL) { - err = errno; - BLOCK_DONE; - } - redirect_fds[fd].w = redirect_fds[fd].buf; - - /* Store our ASL settings */ - redirect_fds[fd].level = level; - redirect_fds[fd].asl = asl; - redirect_fds[fd].msg = msg; - - /* Don't block on reads from this fd */ - fcntl(fd, F_SETFL, O_NONBLOCK); - - /* Start listening */ + { + /* Reallocate if we need more space */ + if (fd >= n_redirect_fds) { + size_t new_n = 1 << (ffs(fd) + 1); + asl_redirect *new_array = + realloc(redirect_fds, new_n * + sizeof(*redirect_fds)); + if (!new_array) { + err = errno; + BLOCK_DONE; + } + redirect_fds = new_array; + memset(redirect_fds + n_redirect_fds, 0, new_n - + n_redirect_fds); + n_redirect_fds = new_n; + } + + /* If we're already listening on it, return error. */ + if (redirect_fds[fd].buf != NULL) { + err = EBADF; + BLOCK_DONE; + } + + /* Initialize our buffer */ + redirect_fds[fd].buf = (char *)malloc(BUF_SIZE); + if (redirect_fds[fd].buf == NULL) { + err = errno; + BLOCK_DONE; + } + redirect_fds[fd].w = redirect_fds[fd].buf; + + /* Store our ASL settings */ + redirect_fds[fd].level = level; + redirect_fds[fd].asl = asl; + redirect_fds[fd].msg = msg; + + /* Don't block on reads from this fd */ + fcntl(fd, F_SETFL, + O_NONBLOCK); + + /* Start listening */ #ifdef HAVE_LIBDISPATCH - { - dispatch_source_t read_source = - dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, fd, 0, - redirect_serial_q); - redirect_fds[fd].read_source = read_source; - dispatch_set_context(read_source, read_source); - dispatch_source_set_event_handler_f(read_source, read_from_source); - dispatch_source_set_cancel_handler_f(read_source, cancel_source); - dispatch_group_enter(read_source_group); - dispatch_resume(read_source); - } + { + dispatch_source_t read_source = + dispatch_source_create( + DISPATCH_SOURCE_TYPE_READ, fd, 0, + redirect_serial_q); + redirect_fds[fd].read_source = read_source; + dispatch_set_context(read_source, read_source); + dispatch_source_set_event_handler_f(read_source, + read_from_source); + dispatch_source_set_cancel_handler_f(read_source, + cancel_source); + dispatch_group_enter(read_source_group); + dispatch_resume(read_source); + } #else - { - struct kevent ev; - - EV_SET(&ev, fd, EVFILT_READ, EV_ADD, 0, 0, 0); - kevent(kq, &ev, 1, NULL, 0, NULL); - } + { + struct kevent ev; + EV_SET(&ev, fd, EVFILT_READ, EV_ADD, 0, 0, 0); + kevent(kq, &ev, 1, NULL, 0, NULL); + } #endif - } + } #ifdef HAVE_LIBDISPATCH - ); + ); #else - done: - assert(pthread_mutex_unlock(&redirect_fds_lock) == 0); +done: + assert(pthread_mutex_unlock(&redirect_fds_lock) == 0); #endif #undef BLOCK_DONE @@ -433,7 +441,7 @@ xq_asl_capture_fd(aslclient asl, aslmsg msg, int level, int fd) #ifdef DEBUG_CONSOLE_REDIRECT int -main(int argc __unused, char **argv __unused) +main(int argc __unused, char * *argv __unused) { xq_asl_capture_fd(NULL, NULL, ASL_LEVEL_NOTICE, STDOUT_FILENO); xq_asl_capture_fd(NULL, NULL, ASL_LEVEL_ERR, STDERR_FILENO); diff --git a/xorg-server/hw/xquartz/console_redirect.h b/xorg-server/hw/xquartz/console_redirect.h index 94520a35c..7b80de405 100644 --- a/xorg-server/hw/xquartz/console_redirect.h +++ b/xorg-server/hw/xquartz/console_redirect.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2011 Apple Inc. +/* Copyright (c) 2011-2012 Apple Inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files @@ -34,11 +34,13 @@ /* The given fd is replaced with a pipe. Anything written to it will will be * logged to ASL. */ -int xq_asl_capture_fd(aslclient asl, aslmsg msg, int level, int fd); +int +xq_asl_capture_fd(aslclient asl, aslmsg msg, int level, int fd); /* The given fd is read from and passed along to ASL until all write ends of the * pipe are closed. Once the last writer has closed the pipe, we close our end. */ -int xq_asl_log_fd(aslclient asl, aslmsg msg, int level, int fd); +int +xq_asl_log_fd(aslclient asl, aslmsg msg, int level, int fd); #endif diff --git a/xorg-server/hw/xquartz/darwin.c b/xorg-server/hw/xquartz/darwin.c index a0ce377b1..2e0bfe6da 100644 --- a/xorg-server/hw/xquartz/darwin.c +++ b/xorg-server/hw/xquartz/darwin.c @@ -2,7 +2,7 @@ * * Xquartz initialization code * - * Copyright (c) 2007-2008 Apple Inc. + * Copyright (c) 2007-2012 Apple Inc. * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -56,6 +56,7 @@ #include <sys/types.h> #include <sys/time.h> +#include <sys/stat.h> #include <sys/syslimits.h> #include <stdio.h> #include <fcntl.h> @@ -77,11 +78,14 @@ #include "quartzKeyboard.h" #include "quartz.h" +#include "X11Application.h" + aslclient aslc; void xq_asl_log(int level, const char *subsystem, const char *file, - const char *function, int line, const char *fmt, ...) + const char *function, int line, const char *fmt, + ...) { va_list args; aslmsg msg = asl_new(ASL_TYPE_MSG); @@ -116,7 +120,6 @@ DevPrivateKeyRec darwinScreenKeyRec; io_connect_t darwinParamConnect = 0; int darwinEventReadFD = -1; int darwinEventWriteFD = -1; - // int darwinMouseAccelChange = 1; int darwinFakeButtons = 0; @@ -138,7 +141,7 @@ int darwinFakeMouse3Mask = NX_COMMANDMASK; #endif // Modifier mask for overriding event delivery to appkit (might be useful to set this to rcommand for input menu -unsigned int darwinAppKitModMask = 0; // Any of these bits +unsigned int darwinAppKitModMask = 0; // Any of these bits // Modifier mask for items in the Window menu (0 and -1 cause shortcuts to be disabled) unsigned int windowItemModMask = NX_COMMANDMASK; @@ -152,15 +155,14 @@ DeviceIntPtr darwinTabletEraser = NULL; // Common pixmap formats static PixmapFormatRec formats[] = { - {1, 1, BITMAP_SCANLINE_PAD}, - {4, 8, BITMAP_SCANLINE_PAD}, - {8, 8, BITMAP_SCANLINE_PAD}, - {15, 16, BITMAP_SCANLINE_PAD}, - {16, 16, BITMAP_SCANLINE_PAD}, - {24, 32, BITMAP_SCANLINE_PAD}, - {32, 32, BITMAP_SCANLINE_PAD} + { 1, 1, BITMAP_SCANLINE_PAD }, + { 4, 8, BITMAP_SCANLINE_PAD }, + { 8, 8, BITMAP_SCANLINE_PAD }, + { 15, 16, BITMAP_SCANLINE_PAD }, + { 16, 16, BITMAP_SCANLINE_PAD }, + { 24, 32, BITMAP_SCANLINE_PAD }, + { 32, 32, BITMAP_SCANLINE_PAD } }; - const int NUMFORMATS = sizeof(formats) / sizeof(formats[0]); void @@ -179,12 +181,9 @@ static Bool DarwinSaveScreen(ScreenPtr pScreen, int on) { // FIXME - if (on == SCREEN_SAVER_FORCER) { - } - else if (on == SCREEN_SAVER_ON) { - } - else { - } + if (on == SCREEN_SAVER_FORCER) {} + else if (on == SCREEN_SAVER_ON) {} + else {} return TRUE; } @@ -231,16 +230,18 @@ DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) return FALSE; } -// TODO: Make PseudoColor visuals not suck in TrueColor mode -// if(dfb->depth > 8) -// miSetVisualTypesAndMasks(8, PseudoColorMask, 8, PseudoColor, 0, 0, 0); + // TODO: Make PseudoColor visuals not suck in TrueColor mode + // if(dfb->depth > 8) + // miSetVisualTypesAndMasks(8, PseudoColorMask, 8, PseudoColor, 0, 0, 0); if (dfb->depth > 15) miSetVisualTypesAndMasks(15, TrueColorMask, 5, TrueColor, - RM_ARGB(0, 5, 5, 5), GM_ARGB(0, 5, 5, 5), + RM_ARGB(0, 5, 5, 5), GM_ARGB(0, 5, 5, + 5), BM_ARGB(0, 5, 5, 5)); if (dfb->depth > 24) miSetVisualTypesAndMasks(24, TrueColorMask, 8, TrueColor, - RM_ARGB(0, 8, 8, 8), GM_ARGB(0, 8, 8, 8), + RM_ARGB(0, 8, 8, 8), GM_ARGB(0, 8, 8, + 8), BM_ARGB(0, 8, 8, 8)); miSetPixmapDepths(); @@ -253,12 +254,12 @@ DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) dpi = 96; // initialize fb - if (!fbScreenInit(pScreen, dfb->framebuffer, // pointer to screen bitmap - dfb->width, dfb->height, // screen size in pixels - dpi, dpi, // dots per inch - dfb->pitch / (dfb->bitsPerPixel / 8), // pixel width of framebuffer - dfb->bitsPerPixel)) // bits per pixel for screen - { + if (!fbScreenInit(pScreen, + dfb->framebuffer, // pointer to screen bitmap + dfb->width, dfb->height, // screen size in pixels + dpi, dpi, // dots per inch + dfb->pitch / (dfb->bitsPerPixel / 8), // pixel width of framebuffer + dfb->bitsPerPixel)) { // bits per pixel for screen return FALSE; } @@ -294,12 +295,12 @@ DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) } /* - ============================================================================= + ============================================================================= - mouse and keyboard callbacks + mouse and keyboard callbacks - ============================================================================= -*/ + ============================================================================= + */ /* * DarwinMouseProc: Handle the initialization, etc. of a mouse @@ -307,10 +308,10 @@ DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) static int DarwinMouseProc(DeviceIntPtr pPointer, int what) { -#define NBUTTONS 7 -#define NAXES 2 - // 7 buttons: left, right, middle, then four scroll wheel "buttons" - CARD8 map[NBUTTONS + 1] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +#define NBUTTONS 3 +#define NAXES 4 + // 3 buttons: left, middle, right + CARD8 map[NBUTTONS + 1] = { 0, 1, 2, 3}; Atom btn_labels[NBUTTONS] = { 0 }; Atom axes_labels[NAXES] = { 0 }; @@ -321,28 +322,40 @@ DarwinMouseProc(DeviceIntPtr pPointer, int what) btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT); btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE); btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT); - btn_labels[3] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP); - btn_labels[4] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN); - btn_labels[5] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_LEFT); - btn_labels[6] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_RIGHT); axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X); axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y); + axes_labels[2] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_WHEEL); + axes_labels[3] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_HWHEEL); // Set button map. - InitPointerDeviceStruct((DevicePtr) pPointer, map, NBUTTONS, + InitPointerDeviceStruct((DevicePtr)pPointer, map, NBUTTONS, btn_labels, - (PtrCtrlProcPtr) NoopDDA, - GetMotionHistorySize(), NAXES, axes_labels); - InitValuatorAxisStruct(pPointer, 0, axes_labels[0], NO_AXIS_LIMITS, - NO_AXIS_LIMITS, 0, 0, 0, Absolute); - InitValuatorAxisStruct(pPointer, 1, axes_labels[1], NO_AXIS_LIMITS, - NO_AXIS_LIMITS, 0, 0, 0, Absolute); + (PtrCtrlProcPtr)NoopDDA, + GetMotionHistorySize(), NAXES, + axes_labels); + InitValuatorAxisStruct(pPointer, 0, axes_labels[0], + NO_AXIS_LIMITS, NO_AXIS_LIMITS, + 1, 0, 1, Relative); + InitValuatorAxisStruct(pPointer, 1, axes_labels[1], + NO_AXIS_LIMITS, NO_AXIS_LIMITS, + 1, 0, 1, Relative); + InitValuatorAxisStruct(pPointer, 2, axes_labels[2], + NO_AXIS_LIMITS, NO_AXIS_LIMITS, + 1, 0, 1, Relative); + InitValuatorAxisStruct(pPointer, 3, axes_labels[3], + NO_AXIS_LIMITS, NO_AXIS_LIMITS, + 1, 0, 1, Relative); + + SetScrollValuator(pPointer, 2, SCROLL_TYPE_VERTICAL, -1.0, SCROLL_FLAG_PREFERRED); + SetScrollValuator(pPointer, 3, SCROLL_TYPE_HORIZONTAL, -1.0, SCROLL_FLAG_NONE); break; + case DEVICE_ON: pPointer->public.on = TRUE; AddEnabledDevice(darwinEventReadFD); return Success; + case DEVICE_CLOSE: case DEVICE_OFF: pPointer->public.on = FALSE; @@ -359,7 +372,7 @@ static int DarwinTabletProc(DeviceIntPtr pPointer, int what) { #define NBUTTONS 3 -#define NAXES 5 +#define NAXES 5 CARD8 map[NBUTTONS + 1] = { 0, 1, 2, 3 }; Atom btn_labels[NBUTTONS] = { 0 }; Atom axes_labels[NAXES] = { 0 }; @@ -379,30 +392,38 @@ DarwinTabletProc(DeviceIntPtr pPointer, int what) axes_labels[4] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_TILT_Y); // Set button map. - InitPointerDeviceStruct((DevicePtr) pPointer, map, NBUTTONS, + InitPointerDeviceStruct((DevicePtr)pPointer, map, NBUTTONS, btn_labels, - (PtrCtrlProcPtr) NoopDDA, - GetMotionHistorySize(), NAXES, axes_labels); + (PtrCtrlProcPtr)NoopDDA, + GetMotionHistorySize(), NAXES, + axes_labels); InitProximityClassDeviceStruct(pPointer); InitValuatorAxisStruct(pPointer, 0, axes_labels[0], 0, - XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, Absolute); + XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, + Absolute); InitValuatorAxisStruct(pPointer, 1, axes_labels[1], 0, - XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, Absolute); + XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, + Absolute); InitValuatorAxisStruct(pPointer, 2, axes_labels[2], 0, - XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, Absolute); + XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, + Absolute); InitValuatorAxisStruct(pPointer, 3, axes_labels[3], - -XQUARTZ_VALUATOR_LIMIT, XQUARTZ_VALUATOR_LIMIT, - 1, 0, 1, Absolute); + -XQUARTZ_VALUATOR_LIMIT, + XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, + Absolute); InitValuatorAxisStruct(pPointer, 4, axes_labels[4], - -XQUARTZ_VALUATOR_LIMIT, XQUARTZ_VALUATOR_LIMIT, - 1, 0, 1, Absolute); -// pPointer->use = IsXExtensionDevice; + -XQUARTZ_VALUATOR_LIMIT, + XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, + Absolute); + // pPointer->use = IsXExtensionDevice; break; + case DEVICE_ON: pPointer->public.on = TRUE; AddEnabledDevice(darwinEventReadFD); return Success; + case DEVICE_CLOSE: case DEVICE_OFF: pPointer->public.on = FALSE; @@ -425,14 +446,17 @@ DarwinKeybdProc(DeviceIntPtr pDev, int onoff) case DEVICE_INIT: DarwinKeyboardInit(pDev); break; + case DEVICE_ON: pDev->public.on = TRUE; AddEnabledDevice(darwinEventReadFD); break; + case DEVICE_OFF: pDev->public.on = FALSE; RemoveEnabledDevice(darwinEventReadFD); break; + case DEVICE_CLOSE: break; } @@ -441,12 +465,12 @@ DarwinKeybdProc(DeviceIntPtr pDev, int onoff) } /* -=========================================================================== + =========================================================================== - Utility routines + Utility routines -=========================================================================== -*/ + =========================================================================== + */ /* * DarwinParseModifierList @@ -464,7 +488,7 @@ DarwinParseModifierList(const char *constmodifiers, int separatelr) char *p = modifiers; while (p) { - modifier = strsep(&p, " ,+&|/"); // allow lots of separators + modifier = strsep(&p, " ,+&|/"); // allow lots of separators nxkey = DarwinModifierStringToNXMask(modifier, separatelr); if (nxkey) result |= nxkey; @@ -477,12 +501,12 @@ DarwinParseModifierList(const char *constmodifiers, int separatelr) } /* -=========================================================================== + =========================================================================== - Functions needed to link against device independent X + Functions needed to link against device independent X -=========================================================================== -*/ + =========================================================================== + */ /* * InitInput @@ -491,14 +515,17 @@ DarwinParseModifierList(const char *constmodifiers, int separatelr) void InitInput(int argc, char **argv) { - XkbRMLVOSet rmlvo = {.rules = "base",.model = "empty",.layout = "empty", - .variant = NULL,.options = NULL + XkbRMLVOSet rmlvo = { + .rules = "base", .model = "empty", .layout = "empty", + .variant = NULL, .options = NULL }; + /* We need to really have rules... or something... */ XkbSetRulesDflts(&rmlvo); - darwinKeyboard = AddInputDevice(serverClient, DarwinKeybdProc, TRUE); - darwinKeyboard->name = strdup("keyboard"); + assert(Success == AllocDevicePair(serverClient, "xquartz virtual", + &darwinPointer, &darwinKeyboard, + DarwinMouseProc, DarwinKeybdProc, FALSE)); /* here's the snippet from the current gdk sources: if (!strcmp (tmp_name, "pointer")) @@ -514,16 +541,16 @@ InitInput(int argc, char **argv) gdkdev->info.source = GDK_SOURCE_PEN; */ - darwinPointer = AddInputDevice(serverClient, DarwinMouseProc, TRUE); - darwinPointer->name = strdup("pointer"); - - darwinTabletStylus = AddInputDevice(serverClient, DarwinTabletProc, TRUE); + darwinTabletStylus = AddInputDevice(serverClient, DarwinTabletProc, FALSE); + assert(darwinTabletStylus); darwinTabletStylus->name = strdup("pen"); - darwinTabletCursor = AddInputDevice(serverClient, DarwinTabletProc, TRUE); + darwinTabletCursor = AddInputDevice(serverClient, DarwinTabletProc, FALSE); + assert(darwinTabletCursor); darwinTabletCursor->name = strdup("cursor"); - darwinTabletEraser = AddInputDevice(serverClient, DarwinTabletProc, TRUE); + darwinTabletEraser = AddInputDevice(serverClient, DarwinTabletProc, FALSE); + assert(darwinTabletEraser); darwinTabletEraser->name = strdup("eraser"); DarwinEQInit(); @@ -552,7 +579,7 @@ CloseInput(void) * easier target to hit. */ void -DarwinAdjustScreenOrigins(ScreenInfo * pScreenInfo) +DarwinAdjustScreenOrigins(ScreenInfo *pScreenInfo) { int i, left, top; @@ -588,6 +615,9 @@ DarwinAdjustScreenOrigins(ScreenInfo * pScreenInfo) pScreenInfo->screens[i]->y); } } + + /* Update screenInfo.x/y */ + update_desktop_dimensions(); } /* @@ -604,7 +634,7 @@ DarwinAdjustScreenOrigins(ScreenInfo * pScreenInfo) * SetupScreen function can be called to finalize screen setup. */ void -InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) +InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) { int i; @@ -633,9 +663,9 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) * OsVendorFatalError */ void -OsVendorFatalError(void) +OsVendorFatalError(const char *f, va_list args) { - ErrorF(" OsVendorFatalError\n"); + X11ApplicationFatalError(f, args); } /* @@ -648,10 +678,17 @@ OsVendorInit(void) if (serverGeneration == 1) { char *lf; char *home = getenv("HOME"); - assert(home); + assert(0 < asprintf(&lf, "%s/Library/Logs/X11", home)); + + /* Ignore errors. If EEXIST, we don't care. If anything else, + * LogInit will handle it for us. + */ + (void)mkdir(lf, S_IRWXU | S_IRWXG | S_IRWXO); + free(lf); + assert(0 < - asprintf(&lf, "%s/Library/Logs/%s.X11.log", home, + asprintf(&lf, "%s/Library/Logs/X11/%s.log", home, bundle_id_prefix)); LogInit(lf, ".old"); free(lf); @@ -660,15 +697,14 @@ OsVendorInit(void) #ifdef ENABLE_DEBUG_LOG { char *home_dir = NULL, *log_file_path = NULL; - home_dir = getenv("HOME"); - if (home_dir) - asprintf(&log_file_path, "%s/%s", home_dir, DEBUG_LOG_NAME); + if (home_dir) asprintf(&log_file_path, "%s/%s", home_dir, + DEBUG_LOG_NAME); if (log_file_path) { if (!access(log_file_path, F_OK)) { debug_log_fp = fopen(log_file_path, "a"); - if (debug_log_fp) - ErrorF("Debug logging enabled to %s\n", log_file_path); + if (debug_log_fp) ErrorF("Debug logging enabled to %s\n", + log_file_path); } free(log_file_path); } @@ -686,15 +722,15 @@ OsVendorInit(void) int ddxProcessArgument(int argc, char *argv[], int i) { -// if ( !strcmp( argv[i], "-fullscreen" ) ) { -// ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" ); -// return 1; -// } + // if ( !strcmp( argv[i], "-fullscreen" ) ) { + // ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" ); + // return 1; + // } -// if ( !strcmp( argv[i], "-rootless" ) ) { -// ErrorF( "Running rootless inside Mac OS X window server.\n" ); -// return 1; -// } + // if ( !strcmp( argv[i], "-rootless" ) ) { + // ErrorF( "Running rootless inside Mac OS X window server.\n" ); + // return 1; + // } // This command line arg is passed when launched from the Aqua GUI. if (!strncmp(argv[i], "-psn_", 5)) { @@ -756,7 +792,8 @@ ddxProcessArgument(int argc, char *argv[], int i) darwinDesiredDepth = atoi(argv[i + 1]); if (darwinDesiredDepth != -1 && darwinDesiredDepth != 8 && - darwinDesiredDepth != 15 && darwinDesiredDepth != 24) { + darwinDesiredDepth != 15 && + darwinDesiredDepth != 24) { FatalError("Unsupported pixel depth. Use 8, 15, or 24 bits\n"); } @@ -785,15 +822,15 @@ ddxUseMsg(void) ErrorF("Device Dependent Usage:\n"); ErrorF("\n"); ErrorF("-depth <8,15,24> : use this bit depth.\n"); - ErrorF - ("-fakebuttons : fake a three button mouse with Command and Option keys.\n"); + ErrorF( + "-fakebuttons : fake a three button mouse with Command and Option keys.\n"); ErrorF("-nofakebuttons : don't fake a three button mouse.\n"); - ErrorF - ("-fakemouse2 <modifiers> : fake middle mouse button with modifier keys.\n"); - ErrorF - ("-fakemouse3 <modifiers> : fake right mouse button with modifier keys.\n"); - ErrorF - (" ex: -fakemouse2 \"option,shift\" = option-shift-click is middle button.\n"); + ErrorF( + "-fakemouse2 <modifiers> : fake middle mouse button with modifier keys.\n"); + ErrorF( + "-fakemouse3 <modifiers> : fake right mouse button with modifier keys.\n"); + ErrorF( + " ex: -fakemouse2 \"option,shift\" = option-shift-click is middle button.\n"); ErrorF("-version : show the server version.\n"); ErrorF("\n"); } @@ -814,7 +851,8 @@ ddxGiveUp(enum ExitCode error) * made to restore all original setting of the displays. Also all devices * are closed. */ -_X_NORETURN void +_X_NORETURN +void AbortDDX(enum ExitCode error) { ErrorF(" AbortDDX\n"); diff --git a/xorg-server/hw/xquartz/darwin.h b/xorg-server/hw/xquartz/darwin.h index b1157ce97..3cae50b2a 100644 --- a/xorg-server/hw/xquartz/darwin.h +++ b/xorg-server/hw/xquartz/darwin.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Apple, Inc. + * Copyright (C) 2008-2012 Apple, Inc. * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -37,18 +37,21 @@ #include "darwinfb.h" // From darwin.c -void DarwinPrintBanner(void); -int DarwinParseModifierList(const char *constmodifiers, int separatelr); -void DarwinAdjustScreenOrigins(ScreenInfo * pScreenInfo); +void +DarwinPrintBanner(void); +int +DarwinParseModifierList(const char *constmodifiers, int separatelr); +void +DarwinAdjustScreenOrigins(ScreenInfo *pScreenInfo); #define SCREEN_PRIV(pScreen) ((DarwinFramebufferPtr) \ - dixLookupPrivate(&pScreen->devPrivates, darwinScreenKey)) + dixLookupPrivate(&pScreen->devPrivates, \ + darwinScreenKey)) /* * Global variables from darwin.c */ extern DevPrivateKeyRec darwinScreenKeyRec; - #define darwinScreenKey (&darwinScreenKeyRec) extern int darwinScreensFound; extern io_connect_t darwinParamConnect; @@ -80,10 +83,17 @@ extern char *bundle_id_prefix; _X_ATTRIBUTE_PRINTF(6, 7) extern void xq_asl_log(int level, const char *subsystem, const char *file, - const char *function, int line, const char *fmt, ...); + const char *function, int line, const char *fmt, + ...); -#define ASL_LOG(level, subsystem, msg, args...) xq_asl_log(level, subsystem, __FILE__, __FUNCTION__, __LINE__, msg, ##args) -#define DEBUG_LOG(msg, args...) ASL_LOG(ASL_LEVEL_DEBUG, "XQuartz", msg, ##args) -#define TRACE() DEBUG_LOG("TRACE") +#define ASL_LOG(level, subsystem, msg, args ...) xq_asl_log(level, subsystem, \ + __FILE__, \ + __FUNCTION__, \ + __LINE__, msg, \ + ## args) +#define DEBUG_LOG(msg, args ...) ASL_LOG(ASL_LEVEL_DEBUG, \ + "XQuartz", msg, \ + ## args) +#define TRACE() DEBUG_LOG("TRACE") -#endif /* _DARWIN_H */ +#endif /* _DARWIN_H */ diff --git a/xorg-server/hw/xquartz/darwinEvents.c b/xorg-server/hw/xquartz/darwinEvents.c index cf29a7b21..c62dd4484 100644 --- a/xorg-server/hw/xquartz/darwinEvents.c +++ b/xorg-server/hw/xquartz/darwinEvents.c @@ -1,33 +1,41 @@ /* -Darwin event queue and event handling - -Copyright 2007-2008 Apple Inc. -Copyright 2004 Kaleb S. KEITHLEY. All Rights Reserved. -Copyright (c) 2002-2004 Torrey T. Lyons. All Rights Reserved. - -This file is based on mieq.c by Keith Packard, -which contains the following copyright: -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. + * Darwin event queue and event handling + * + * Copyright 2007-2008 Apple Inc. + * Copyright 2004 Kaleb S. KEITHLEY. All Rights Reserved. + * Copyright (c) 2002-2004 Torrey T. Lyons. All Rights Reserved. + * + * This file is based on mieq.c by Keith Packard, + * which contains the following copyright: + * Copyright 1990, 1998 The Open Group + * + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. */ #include "sanitizedCarbon.h" @@ -75,10 +83,10 @@ in this Software without prior written authorization from The Open Group. #include "applewmExt.h" /* FIXME: Abstract this better */ -extern Bool QuartzModeEventHandler(int screenNum, XQuartzEvent * e, - DeviceIntPtr dev); +extern Bool +QuartzModeEventHandler(int screenNum, XQuartzEvent *e, DeviceIntPtr dev); -int darwin_all_modifier_flags = 0; // last known modifier state +int darwin_all_modifier_flags = 0; // last known modifier state int darwin_all_modifier_mask = 0; int darwin_x11_modifier_mask = 0; @@ -89,14 +97,14 @@ static pthread_mutex_t fd_add_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t fd_add_ready_cond = PTHREAD_COND_INITIALIZER; static pthread_t fd_add_tid = NULL; -static InternalEvent *darwinEvents = NULL; +static InternalEvent* darwinEvents = NULL; static pthread_mutex_t mieq_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t mieq_ready_cond = PTHREAD_COND_INITIALIZER; /*** Pthread Magics ***/ static pthread_t -create_thread(void *(*func) (void *), void *arg) +create_thread(void *(*func)(void *), void *arg) { pthread_attr_t attr; pthread_t tid; @@ -110,12 +118,12 @@ create_thread(void *(*func) (void *), void *arg) return tid; } -void darwinEvents_lock(void); +void +darwinEvents_lock(void); void darwinEvents_lock(void) { int err; - if ((err = pthread_mutex_lock(&mieq_lock))) { ErrorF("%s:%s:%d: Failed to lock mieq_lock: %d\n", __FILE__, __FUNCTION__, __LINE__, err); @@ -126,12 +134,12 @@ darwinEvents_lock(void) } } -void darwinEvents_unlock(void); +void +darwinEvents_unlock(void); void darwinEvents_unlock(void) { int err; - if ((err = pthread_mutex_unlock(&mieq_lock))) { ErrorF("%s:%s:%d: Failed to unlock mieq_lock: %d\n", __FILE__, __FUNCTION__, __LINE__, err); @@ -163,12 +171,13 @@ DarwinPressModifierKey(int pressed, int key) static int darwin_x11_modifier_mask_list[] = { #ifdef NX_DEVICELCMDKEYMASK - NX_DEVICELCTLKEYMASK, NX_DEVICERCTLKEYMASK, + NX_DEVICELCTLKEYMASK, NX_DEVICERCTLKEYMASK, NX_DEVICELSHIFTKEYMASK, NX_DEVICERSHIFTKEYMASK, - NX_DEVICELCMDKEYMASK, NX_DEVICERCMDKEYMASK, - NX_DEVICELALTKEYMASK, NX_DEVICERALTKEYMASK, + NX_DEVICELCMDKEYMASK, NX_DEVICERCMDKEYMASK, + NX_DEVICELALTKEYMASK, NX_DEVICERALTKEYMASK, #else - NX_CONTROLMASK, NX_SHIFTMASK, NX_COMMANDMASK, NX_ALTERNATEMASK, + NX_CONTROLMASK, NX_SHIFTMASK, NX_COMMANDMASK, + NX_ALTERNATEMASK, #endif NX_ALPHASHIFTMASK, 0 @@ -177,8 +186,8 @@ static int darwin_x11_modifier_mask_list[] = { static int darwin_all_modifier_mask_additions[] = { NX_SECONDARYFNMASK, }; static void -DarwinUpdateModifiers(int pressed, // KeyPress or KeyRelease - int flags) // modifier flags that have changed +DarwinUpdateModifiers(int pressed, // KeyPress or KeyRelease + int flags) // modifier flags that have changed { int *f; int key; @@ -195,7 +204,8 @@ DarwinUpdateModifiers(int pressed, // KeyPress or KeyRelease if (*f & flags && *f != NX_ALPHASHIFTMASK) { key = DarwinModifierNXMaskToNXKey(*f); if (key == -1) - ErrorF("DarwinUpdateModifiers: Unsupported NXMask: 0x%x\n", *f); + ErrorF("DarwinUpdateModifiers: Unsupported NXMask: 0x%x\n", + *f); else DarwinPressModifierKey(pressed, key); } @@ -214,26 +224,32 @@ DarwinEventHandler(int screenNum, InternalEvent *ie, DeviceIntPtr dev) case kXquartzControllerNotify: DEBUG_LOG("kXquartzControllerNotify\n"); AppleWMSendEvent(AppleWMControllerNotify, - AppleWMControllerNotifyMask, e->data[0], e->data[1]); + AppleWMControllerNotifyMask, + e->data[0], + e->data[1]); break; case kXquartzPasteboardNotify: DEBUG_LOG("kXquartzPasteboardNotify\n"); AppleWMSendEvent(AppleWMPasteboardNotify, - AppleWMPasteboardNotifyMask, e->data[0], e->data[1]); + AppleWMPasteboardNotifyMask, + e->data[0], + e->data[1]); break; case kXquartzActivate: DEBUG_LOG("kXquartzActivate\n"); QuartzShow(); AppleWMSendEvent(AppleWMActivationNotify, - AppleWMActivationNotifyMask, AppleWMIsActive, 0); + AppleWMActivationNotifyMask, + AppleWMIsActive, 0); break; case kXquartzDeactivate: DEBUG_LOG("kXquartzDeactivate\n"); AppleWMSendEvent(AppleWMActivationNotify, - AppleWMActivationNotifyMask, AppleWMIsInactive, 0); + AppleWMActivationNotifyMask, + AppleWMIsInactive, 0); QuartzHide(); break; @@ -247,8 +263,8 @@ DarwinEventHandler(int screenNum, InternalEvent *ie, DeviceIntPtr dev) case kXquartzToggleFullscreen: DEBUG_LOG("kXquartzToggleFullscreen\n"); if (XQuartzIsRootless) - ErrorF - ("Ignoring kXquartzToggleFullscreen because of rootless mode."); + ErrorF( + "Ignoring kXquartzToggleFullscreen because of rootless mode."); else QuartzRandRToggleFullscreen(); break; @@ -264,7 +280,7 @@ DarwinEventHandler(int screenNum, InternalEvent *ie, DeviceIntPtr dev) break; case kXquartzSetRootClip: - QuartzSetRootClip((Bool) e->data[0]); + QuartzSetRootClip((Bool)e->data[0]); break; case kXquartzQuit: @@ -277,8 +293,8 @@ DarwinEventHandler(int screenNum, InternalEvent *ie, DeviceIntPtr dev) break; case kXquartzListenOnOpenFD: - ErrorF("Calling ListenOnOpenFD() for new fd: %d\n", (int) e->data[0]); - ListenOnOpenFD((int) e->data[0], 1); + ErrorF("Calling ListenOnOpenFD() for new fd: %d\n", (int)e->data[0]); + ListenOnOpenFD((int)e->data[0], 1); break; case kXquartzReloadKeymap: @@ -333,8 +349,8 @@ DarwinProcessFDAdditionQueue_thread(void *args) sleep_for.tv_sec = 3; sleep_for.tv_nsec = 0; - ErrorF - ("X11.app: DarwinProcessFDAdditionQueue_thread: Sleeping to allow xinitrc to catchup.\n"); + ErrorF( + "X11.app: DarwinProcessFDAdditionQueue_thread: Sleeping to allow xinitrc to catchup.\n"); while (nanosleep(&sleep_for, &sleep_remaining) != 0) { sleep_for = sleep_remaining; } @@ -361,8 +377,9 @@ DarwinEQInit(void) darwin_x11_modifier_mask |= *p; } - for (p = darwin_all_modifier_mask_additions, darwin_all_modifier_mask = - darwin_x11_modifier_mask; *p; p++) { + for (p = darwin_all_modifier_mask_additions, + darwin_all_modifier_mask = darwin_x11_modifier_mask; + *p; p++) { darwin_all_modifier_mask |= *p; } @@ -374,7 +391,8 @@ DarwinEQInit(void) * here, so I don't bother. */ if (!darwinEvents) { - darwinEvents = InitEventList(GetMaximumEventsNum());; + darwinEvents = InitEventList(GetMaximumEventsNum()); + ; if (!darwinEvents) FatalError("Couldn't allocate event buffer\n"); @@ -420,7 +438,6 @@ static void DarwinPokeEQ(void) { char nullbyte = 0; - // <daniels> oh, i ... er ... christ. write(darwinEventWriteFD, &nullbyte, sizeof(nullbyte)); } @@ -430,10 +447,15 @@ DarwinPokeEQ(void) * display. */ static void -DarwinPrepareValuators(DeviceIntPtr pDev, int *valuators, ScreenPtr screen, - float pointer_x, float pointer_y, - float pressure, float tilt_x, float tilt_y) +DarwinPrepareValuators(DeviceIntPtr pDev, ValuatorMask *pmask, + ScreenPtr screen, + double pointer_x, double pointer_y, + double pressure, double tilt_x, + double tilt_y) { + + valuator_mask_zero(pmask); + /* Fix offset between darwin and X screens */ pointer_x -= darwinMainScreenX + screen->x; pointer_y -= darwinMainScreenY + screen->y; @@ -445,38 +467,42 @@ DarwinPrepareValuators(DeviceIntPtr pDev, int *valuators, ScreenPtr screen, pointer_y = 0.0; if (pDev == darwinPointer) { - valuators[0] = pointer_x; - valuators[1] = pointer_y; - valuators[2] = 0; - valuators[3] = 0; - valuators[4] = 0; + valuator_mask_set_double(pmask, 0, pointer_x); + valuator_mask_set_double(pmask, 1, pointer_y); } else { - /* Setup our array of values */ - valuators[0] = - XQUARTZ_VALUATOR_LIMIT * (pointer_x / - (float) screenInfo.screens[0]->width); - valuators[1] = - XQUARTZ_VALUATOR_LIMIT * (pointer_y / - (float) screenInfo.screens[0]->height); - valuators[2] = XQUARTZ_VALUATOR_LIMIT * pressure; - valuators[3] = XQUARTZ_VALUATOR_LIMIT * tilt_x; - valuators[4] = XQUARTZ_VALUATOR_LIMIT * tilt_y; + valuator_mask_set_double(pmask, 0, XQUARTZ_VALUATOR_LIMIT * + (pointer_x / + (double)screenInfo.screens[0]->width)); + valuator_mask_set_double(pmask, 1, XQUARTZ_VALUATOR_LIMIT * + (pointer_y / + (double)screenInfo.screens[0]->height)); + valuator_mask_set_double(pmask, 2, XQUARTZ_VALUATOR_LIMIT * pressure); + valuator_mask_set_double(pmask, 3, XQUARTZ_VALUATOR_LIMIT * tilt_x); + valuator_mask_set_double(pmask, 4, XQUARTZ_VALUATOR_LIMIT * tilt_y); + DEBUG_LOG("Pointer (%lf, %lf), Valuators: {%lf,%lf,%lf,%lf,%lf}\n", + pointer_x, pointer_y, + valuator_mask_get_double(pmask, + 0), + valuator_mask_get_double(pmask, 1), + valuator_mask_get_double(pmask, + 2), + valuator_mask_get_double(pmask, 3), + valuator_mask_get_double(pmask, 4)); } - //DEBUG_LOG("Pointer (%f, %f), Valuators: {%d,%d,%d,%d,%d}\n", pointer_x, pointer_y, - // valuators[0], valuators[1], valuators[2], valuators[3], valuators[4]); } void DarwinInputReleaseButtonsAndKeys(DeviceIntPtr pDev) { - darwinEvents_lock(); { + darwinEvents_lock(); + { int i; - if (pDev->button) { for (i = 0; i < pDev->button->numButtons; i++) { if (BitIsOn(pDev->button->down, i)) { - QueuePointerEvents(pDev, ButtonRelease, i, POINTER_ABSOLUTE, + QueuePointerEvents(pDev, ButtonRelease, i, + POINTER_ABSOLUTE, NULL); } } @@ -491,31 +517,31 @@ DarwinInputReleaseButtonsAndKeys(DeviceIntPtr pDev) } } DarwinPokeEQ(); - } - darwinEvents_unlock(); + } darwinEvents_unlock(); } void DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, - float pointer_x, float pointer_y, float pressure, - float tilt_x, float tilt_y) + double pointer_x, double pointer_y, + double pressure, double tilt_x, + double tilt_y) { static int darwinFakeMouseButtonDown = 0; ScreenPtr screen; - int valuators[5]; + ValuatorMask valuators; //DEBUG_LOG("x=%f, y=%f, p=%f, tx=%f, ty=%f\n", pointer_x, pointer_y, pressure, tilt_x, tilt_y); if (!darwinEvents) { - DEBUG_LOG - ("DarwinSendPointerEvents called before darwinEvents was initialized\n"); + DEBUG_LOG( + "DarwinSendPointerEvents called before darwinEvents was initialized\n"); return; } screen = miPointerGetScreen(pDev); if (!screen) { - DEBUG_LOG - ("DarwinSendPointerEvents called before screen was initialized\n"); + DEBUG_LOG( + "DarwinSendPointerEvents called before screen was initialized\n"); return; } @@ -525,20 +551,21 @@ DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, /* We're currently "down" with another button, so release it first */ DarwinSendPointerEvents(pDev, ButtonRelease, darwinFakeMouseButtonDown, pointer_x, - pointer_y, pressure, tilt_x, tilt_y); + pointer_y, pressure, tilt_x, + tilt_y); darwinFakeMouseButtonDown = 0; } if (darwin_all_modifier_flags & darwinFakeMouse2Mask) { ev_button = 2; darwinFakeMouseButtonDown = 2; - DarwinUpdateModKeys(darwin_all_modifier_flags & - ~darwinFakeMouse2Mask); + DarwinUpdateModKeys( + darwin_all_modifier_flags & ~darwinFakeMouse2Mask); } else if (darwin_all_modifier_flags & darwinFakeMouse3Mask) { ev_button = 3; darwinFakeMouseButtonDown = 3; - DarwinUpdateModKeys(darwin_all_modifier_flags & - ~darwinFakeMouse3Mask); + DarwinUpdateModKeys( + darwin_all_modifier_flags & ~darwinFakeMouse3Mask); } } @@ -548,25 +575,24 @@ DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, } if (darwinFakeMouseButtonDown == 2) { - DarwinUpdateModKeys(darwin_all_modifier_flags & - ~darwinFakeMouse2Mask); + DarwinUpdateModKeys( + darwin_all_modifier_flags & ~darwinFakeMouse2Mask); } else if (darwinFakeMouseButtonDown == 3) { - DarwinUpdateModKeys(darwin_all_modifier_flags & - ~darwinFakeMouse3Mask); + DarwinUpdateModKeys( + darwin_all_modifier_flags & ~darwinFakeMouse3Mask); } darwinFakeMouseButtonDown = 0; } - DarwinPrepareValuators(pDev, valuators, screen, pointer_x, pointer_y, - pressure, tilt_x, tilt_y); - darwinEvents_lock(); { - ValuatorMask mask; - - valuator_mask_set_range(&mask, 0, (pDev == darwinPointer) ? 2 : 5, - valuators); - QueuePointerEvents(pDev, ev_type, ev_button, POINTER_ABSOLUTE, &mask); + DarwinPrepareValuators(pDev, &valuators, screen, pointer_x, pointer_y, + pressure, tilt_x, + tilt_y); + darwinEvents_lock(); + { + QueuePointerEvents(pDev, ev_type, ev_button, POINTER_ABSOLUTE, + &valuators); DarwinPokeEQ(); } darwinEvents_unlock(); } @@ -576,93 +602,84 @@ DarwinSendKeyboardEvents(int ev_type, int keycode) { if (!darwinEvents) { - DEBUG_LOG - ("DarwinSendKeyboardEvents called before darwinEvents was initialized\n"); + DEBUG_LOG( + "DarwinSendKeyboardEvents called before darwinEvents was initialized\n"); return; } - darwinEvents_lock(); { + darwinEvents_lock(); + { QueueKeyboardEvents(darwinKeyboard, ev_type, keycode + MIN_KEYCODE, NULL); DarwinPokeEQ(); - } - darwinEvents_unlock(); + } darwinEvents_unlock(); } void -DarwinSendProximityEvents(DeviceIntPtr pDev, int ev_type, float pointer_x, - float pointer_y, float pressure, float tilt_x, - float tilt_y) +DarwinSendProximityEvents(DeviceIntPtr pDev, int ev_type, double pointer_x, + double pointer_y, + double pressure, double tilt_x, + double tilt_y) { ScreenPtr screen; - int valuators[5]; + ValuatorMask valuators; DEBUG_LOG("DarwinSendProximityEvents: %d l:%f,%f p:%f t:%f,%f\n", ev_type, - pointer_x, pointer_y, pressure, tilt_x, tilt_y); + pointer_x, pointer_y, pressure, tilt_x, + tilt_y); if (!darwinEvents) { - DEBUG_LOG - ("DarwinSendProximityEvents called before darwinEvents was initialized\n"); + DEBUG_LOG( + "DarwinSendProximityEvents called before darwinEvents was initialized\n"); return; } screen = miPointerGetScreen(pDev); if (!screen) { - DEBUG_LOG - ("DarwinSendPointerEvents called before screen was initialized\n"); + DEBUG_LOG( + "DarwinSendPointerEvents called before screen was initialized\n"); return; } - DarwinPrepareValuators(pDev, valuators, screen, pointer_x, pointer_y, - pressure, tilt_x, tilt_y); - darwinEvents_lock(); { - ValuatorMask mask; - - valuator_mask_set_range(&mask, 0, 5, valuators); - QueueProximityEvents(pDev, ev_type, &mask); + DarwinPrepareValuators(pDev, &valuators, screen, pointer_x, pointer_y, + pressure, tilt_x, + tilt_y); + darwinEvents_lock(); + { + QueueProximityEvents(pDev, ev_type, &valuators); DarwinPokeEQ(); } darwinEvents_unlock(); } /* Send the appropriate number of button clicks to emulate scroll wheel */ void -DarwinSendScrollEvents(float count_x, float count_y, - float pointer_x, float pointer_y, - float pressure, float tilt_x, float tilt_y) -{ - int sign_x, sign_y; +DarwinSendScrollEvents(double scroll_x, double scroll_y) { + ScreenPtr screen; + ValuatorMask valuators; if (!darwinEvents) { - DEBUG_LOG - ("DarwinSendScrollEvents called before darwinEvents was initialized\n"); + DEBUG_LOG( + "DarwinSendScrollEvents called before darwinEvents was initialized\n"); return; } - sign_x = count_x > 0.0f ? SCROLLWHEELLEFTFAKE : SCROLLWHEELRIGHTFAKE; - sign_y = count_y > 0.0f ? SCROLLWHEELUPFAKE : SCROLLWHEELDOWNFAKE; - count_x = fabs(count_x); - count_y = fabs(count_y); - - while ((count_x > 0.0f) || (count_y > 0.0f)) { - if (count_x > 0.0f) { - DarwinSendPointerEvents(darwinPointer, ButtonPress, sign_x, - pointer_x, pointer_y, pressure, tilt_x, - tilt_y); - DarwinSendPointerEvents(darwinPointer, ButtonRelease, sign_x, - pointer_x, pointer_y, pressure, tilt_x, - tilt_y); - count_x = count_x - 1.0f; - } - if (count_y > 0.0f) { - DarwinSendPointerEvents(darwinPointer, ButtonPress, sign_y, - pointer_x, pointer_y, pressure, tilt_x, - tilt_y); - DarwinSendPointerEvents(darwinPointer, ButtonRelease, sign_y, - pointer_x, pointer_y, pressure, tilt_x, - tilt_y); - count_y = count_y - 1.0f; - } + screen = miPointerGetScreen(darwinPointer); + if (!screen) { + DEBUG_LOG( + "DarwinSendScrollEvents called before screen was initialized\n"); + return; } + + valuator_mask_zero(&valuators); + valuator_mask_set_double(&valuators, 2, scroll_y); + valuator_mask_set_double(&valuators, 3, scroll_x); + + darwinEvents_lock(); + { + QueuePointerEvents(darwinPointer, MotionNotify, 0, + POINTER_RELATIVE, &valuators); + DarwinPokeEQ(); + } darwinEvents_unlock(); } /* Send the appropriate KeyPress/KeyRelease events to GetKeyboardEvents to @@ -670,12 +687,12 @@ DarwinSendScrollEvents(float count_x, float count_y, void DarwinUpdateModKeys(int flags) { - DarwinUpdateModifiers(KeyRelease, - darwin_all_modifier_flags & ~flags & - darwin_x11_modifier_mask); - DarwinUpdateModifiers(KeyPress, - ~darwin_all_modifier_flags & flags & - darwin_x11_modifier_mask); + DarwinUpdateModifiers( + KeyRelease, darwin_all_modifier_flags & ~flags & + darwin_x11_modifier_mask); + DarwinUpdateModifiers( + KeyPress, ~darwin_all_modifier_flags & flags & + darwin_x11_modifier_mask); darwin_all_modifier_flags = flags; } @@ -700,12 +717,13 @@ DarwinSendDDXEvent(int type, int argc, ...) if (argc > 0 && argc < XQUARTZ_EVENT_MAXARGS) { va_start(args, argc); for (i = 0; i < argc; i++) - e.data[i] = (uint32_t) va_arg(args, uint32_t); + e.data[i] = (uint32_t)va_arg(args, uint32_t); va_end(args); } - darwinEvents_lock(); { - mieqEnqueue(NULL, (InternalEvent *) &e); + darwinEvents_lock(); + { + mieqEnqueue(NULL, (InternalEvent *)&e); DarwinPokeEQ(); } darwinEvents_unlock(); } diff --git a/xorg-server/hw/xquartz/darwinEvents.h b/xorg-server/hw/xquartz/darwinEvents.h index 515dd3049..61ace6ee3 100644 --- a/xorg-server/hw/xquartz/darwinEvents.h +++ b/xorg-server/hw/xquartz/darwinEvents.h @@ -31,55 +31,67 @@ /* For extra precision of our cursor and other valuators */ #define XQUARTZ_VALUATOR_LIMIT (1 << 16) -Bool DarwinEQInit(void); -void DarwinEQFini(void); -void DarwinEQEnqueue(const xEventPtr e); -void DarwinEQPointerPost(DeviceIntPtr pDev, xEventPtr e); -void DarwinEQSwitchScreen(ScreenPtr pScreen, Bool fromDIX); -void DarwinInputReleaseButtonsAndKeys(DeviceIntPtr pDev); -void DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, - float pointer_x, float pointer_y, float pressure, - float tilt_x, float tilt_y); -void DarwinSendProximityEvents(DeviceIntPtr pDev, int ev_type, float pointer_x, - float pointer_y, float pressure, float tilt_x, - float tilt_y); -void DarwinSendKeyboardEvents(int ev_type, int keycode); -void DarwinSendScrollEvents(float count_x, float count_y, float pointer_x, - float pointer_y, float pressure, float tilt_x, - float tilt_y); -void DarwinUpdateModKeys(int flags); -void DarwinListenOnOpenFD(int fd); +Bool +DarwinEQInit(void); +void +DarwinEQFini(void); +void +DarwinEQEnqueue(const xEventPtr e); +void +DarwinEQPointerPost(DeviceIntPtr pDev, xEventPtr e); +void +DarwinEQSwitchScreen(ScreenPtr pScreen, Bool fromDIX); +void +DarwinInputReleaseButtonsAndKeys(DeviceIntPtr pDev); +void +DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, + double pointer_x, double pointer_y, double pressure, + double tilt_x, + double tilt_y); +void +DarwinSendProximityEvents(DeviceIntPtr pDev, int ev_type, double pointer_x, + double pointer_y, double pressure, double tilt_x, + double tilt_y); +void +DarwinSendKeyboardEvents(int ev_type, int keycode); +void +DarwinSendScrollEvents(double scroll_x, double scroll_y); +void +DarwinUpdateModKeys(int flags); +void +DarwinListenOnOpenFD(int fd); /* * Subtypes for the ET_XQuartz event type */ enum { - kXquartzReloadKeymap, // Reload system keymap - kXquartzActivate, // restore X drawing and cursor - kXquartzDeactivate, // clip X drawing and switch to Aqua cursor - kXquartzSetRootClip, // enable or disable drawing to the X screen - kXquartzQuit, // kill the X server and release the display - kXquartzBringAllToFront, // bring all X windows to front - kXquartzToggleFullscreen, // Enable/Disable fullscreen mode - kXquartzSetRootless, // Set rootless mode - kXquartzSpaceChanged, // Spaces changed - kXquartzListenOnOpenFD, // Listen to the launchd fd (passed as arg) + kXquartzReloadKeymap, // Reload system keymap + kXquartzActivate, // restore X drawing and cursor + kXquartzDeactivate, // clip X drawing and switch to Aqua cursor + kXquartzSetRootClip, // enable or disable drawing to the X screen + kXquartzQuit, // kill the X server and release the display + kXquartzBringAllToFront, // bring all X windows to front + kXquartzToggleFullscreen, // Enable/Disable fullscreen mode + kXquartzSetRootless, // Set rootless mode + kXquartzSpaceChanged, // Spaces changed + kXquartzListenOnOpenFD, // Listen to the launchd fd (passed as arg) /* * AppleWM events */ - kXquartzControllerNotify, // send an AppleWMControllerNotify event - kXquartzPasteboardNotify, // notify the WM to copy or paste - kXquartzReloadPreferences, // send AppleWMReloadPreferences + kXquartzControllerNotify, // send an AppleWMControllerNotify event + kXquartzPasteboardNotify, // notify the WM to copy or paste + kXquartzReloadPreferences, // send AppleWMReloadPreferences /* * Xplugin notification events */ - kXquartzDisplayChanged, // display configuration has changed - kXquartzWindowState, // window visibility state has changed - kXquartzWindowMoved, // window has moved on screen + kXquartzDisplayChanged, // display configuration has changed + kXquartzWindowState, // window visibility state has changed + kXquartzWindowMoved, // window has moved on screen }; /* Send one of the above events to the server thread. */ -void DarwinSendDDXEvent(int type, int argc, ...); +void +DarwinSendDDXEvent(int type, int argc, ...); /* A mask of the modifiers that are in our X11 keyboard layout: * (Fn for example is just useful for 3button mouse emulation) */ @@ -92,4 +104,4 @@ extern int darwin_x11_modifier_mask; /* The current state of the above listed modifiers */ extern int darwin_all_modifier_flags; -#endif /* _DARWIN_EVENTS_H */ +#endif /* _DARWIN_EVENTS_H */ diff --git a/xorg-server/hw/xquartz/darwinXinput.c b/xorg-server/hw/xquartz/darwinXinput.c index 4d6604ed4..3efaa2ca4 100644 --- a/xorg-server/hw/xquartz/darwinXinput.c +++ b/xorg-server/hw/xquartz/darwinXinput.c @@ -7,49 +7,49 @@ /************************************************************ -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -Copyright 1989 by Hewlett-Packard Company, Palo Alto, California. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Hewlett-Packard not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -********************************************************/ + Copyright 1989, 1998 The Open Group + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of The Open Group shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from The Open Group. + + Copyright 1989 by Hewlett-Packard Company, Palo Alto, California. + + All Rights Reserved + + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Hewlett-Packard not be + used in advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR + ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + SOFTWARE. + + ********************************************************/ #ifdef HAVE_DIX_CONFIG_H #include <dix-config.h> @@ -112,7 +112,8 @@ SetDeviceValuators(ClientPtr client, DeviceIntPtr dev, */ int -ChangeDeviceControl(ClientPtr client, DeviceIntPtr dev, xDeviceCtl * control) +ChangeDeviceControl(ClientPtr client, DeviceIntPtr dev, + xDeviceCtl * control) { DEBUG_LOG("ChangeDeviceControl(%p, %p, %p)\n", client, dev, control); @@ -127,7 +128,7 @@ ChangeDeviceControl(ClientPtr client, DeviceIntPtr dev, xDeviceCtl * control) * */ int -NewInputDeviceRequest(InputOption *options, InputAttributes * attrs, +NewInputDeviceRequest(InputOption *options, InputAttributes *attrs, DeviceIntPtr *pdev) { DEBUG_LOG("NewInputDeviceRequest(%p, %p)\n", options, pdev); diff --git a/xorg-server/hw/xquartz/darwinfb.h b/xorg-server/hw/xquartz/darwinfb.h index dab6d4b86..5de360d75 100644 --- a/xorg-server/hw/xquartz/darwinfb.h +++ b/xorg-server/hw/xquartz/darwinfb.h @@ -32,25 +32,26 @@ 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; + 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) +#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/xorg-server/hw/xquartz/keysym2ucs.c b/xorg-server/hw/xquartz/keysym2ucs.c index 73ea55ad3..934b57756 100644 --- a/xorg-server/hw/xquartz/keysym2ucs.c +++ b/xorg-server/hw/xquartz/keysym2ucs.c @@ -1,4 +1,4 @@ -/* +/* * * This module converts keysym values into the corresponding ISO 10646 * (UCS, Unicode) values. @@ -45,787 +45,787 @@ struct codepair { }; const static struct codepair keysymtab[] = { - {0x01a1, 0x0104}, - {0x01a2, 0x02d8}, - {0x01a3, 0x0141}, - {0x01a5, 0x013d}, - {0x01a6, 0x015a}, - {0x01a9, 0x0160}, - {0x01aa, 0x015e}, - {0x01ab, 0x0164}, - {0x01ac, 0x0179}, - {0x01ae, 0x017d}, - {0x01af, 0x017b}, - {0x01b1, 0x0105}, - {0x01b2, 0x02db}, - {0x01b3, 0x0142}, - {0x01b5, 0x013e}, - {0x01b6, 0x015b}, - {0x01b7, 0x02c7}, - {0x01b9, 0x0161}, - {0x01ba, 0x015f}, - {0x01bb, 0x0165}, - {0x01bc, 0x017a}, - {0x01bd, 0x02dd}, - {0x01be, 0x017e}, - {0x01bf, 0x017c}, - {0x01c0, 0x0154}, - {0x01c3, 0x0102}, - {0x01c5, 0x0139}, - {0x01c6, 0x0106}, - {0x01c8, 0x010c}, - {0x01ca, 0x0118}, - {0x01cc, 0x011a}, - {0x01cf, 0x010e}, - {0x01d0, 0x0110}, - {0x01d1, 0x0143}, - {0x01d2, 0x0147}, - {0x01d5, 0x0150}, - {0x01d8, 0x0158}, - {0x01d9, 0x016e}, - {0x01db, 0x0170}, - {0x01de, 0x0162}, - {0x01e0, 0x0155}, - {0x01e3, 0x0103}, - {0x01e5, 0x013a}, - {0x01e6, 0x0107}, - {0x01e8, 0x010d}, - {0x01ea, 0x0119}, - {0x01ec, 0x011b}, - {0x01ef, 0x010f}, - {0x01f0, 0x0111}, - {0x01f1, 0x0144}, - {0x01f2, 0x0148}, - {0x01f5, 0x0151}, - {0x01f8, 0x0159}, - {0x01f9, 0x016f}, - {0x01fb, 0x0171}, - {0x01fe, 0x0163}, - {0x01ff, 0x02d9}, - {0x02a1, 0x0126}, - {0x02a6, 0x0124}, - {0x02a9, 0x0130}, - {0x02ab, 0x011e}, - {0x02ac, 0x0134}, - {0x02b1, 0x0127}, - {0x02b6, 0x0125}, - {0x02b9, 0x0131}, - {0x02bb, 0x011f}, - {0x02bc, 0x0135}, - {0x02c5, 0x010a}, - {0x02c6, 0x0108}, - {0x02d5, 0x0120}, - {0x02d8, 0x011c}, - {0x02dd, 0x016c}, - {0x02de, 0x015c}, - {0x02e5, 0x010b}, - {0x02e6, 0x0109}, - {0x02f5, 0x0121}, - {0x02f8, 0x011d}, - {0x02fd, 0x016d}, - {0x02fe, 0x015d}, - {0x03a2, 0x0138}, - {0x03a3, 0x0156}, - {0x03a5, 0x0128}, - {0x03a6, 0x013b}, - {0x03aa, 0x0112}, - {0x03ab, 0x0122}, - {0x03ac, 0x0166}, - {0x03b3, 0x0157}, - {0x03b5, 0x0129}, - {0x03b6, 0x013c}, - {0x03ba, 0x0113}, - {0x03bb, 0x0123}, - {0x03bc, 0x0167}, - {0x03bd, 0x014a}, - {0x03bf, 0x014b}, - {0x03c0, 0x0100}, - {0x03c7, 0x012e}, - {0x03cc, 0x0116}, - {0x03cf, 0x012a}, - {0x03d1, 0x0145}, - {0x03d2, 0x014c}, - {0x03d3, 0x0136}, - {0x03d9, 0x0172}, - {0x03dd, 0x0168}, - {0x03de, 0x016a}, - {0x03e0, 0x0101}, - {0x03e7, 0x012f}, - {0x03ec, 0x0117}, - {0x03ef, 0x012b}, - {0x03f1, 0x0146}, - {0x03f2, 0x014d}, - {0x03f3, 0x0137}, - {0x03f9, 0x0173}, - {0x03fd, 0x0169}, - {0x03fe, 0x016b}, - {0x047e, 0x203e}, - {0x04a1, 0x3002}, - {0x04a2, 0x300c}, - {0x04a3, 0x300d}, - {0x04a4, 0x3001}, - {0x04a5, 0x30fb}, - {0x04a6, 0x30f2}, - {0x04a7, 0x30a1}, - {0x04a8, 0x30a3}, - {0x04a9, 0x30a5}, - {0x04aa, 0x30a7}, - {0x04ab, 0x30a9}, - {0x04ac, 0x30e3}, - {0x04ad, 0x30e5}, - {0x04ae, 0x30e7}, - {0x04af, 0x30c3}, - {0x04b0, 0x30fc}, - {0x04b1, 0x30a2}, - {0x04b2, 0x30a4}, - {0x04b3, 0x30a6}, - {0x04b4, 0x30a8}, - {0x04b5, 0x30aa}, - {0x04b6, 0x30ab}, - {0x04b7, 0x30ad}, - {0x04b8, 0x30af}, - {0x04b9, 0x30b1}, - {0x04ba, 0x30b3}, - {0x04bb, 0x30b5}, - {0x04bc, 0x30b7}, - {0x04bd, 0x30b9}, - {0x04be, 0x30bb}, - {0x04bf, 0x30bd}, - {0x04c0, 0x30bf}, - {0x04c1, 0x30c1}, - {0x04c2, 0x30c4}, - {0x04c3, 0x30c6}, - {0x04c4, 0x30c8}, - {0x04c5, 0x30ca}, - {0x04c6, 0x30cb}, - {0x04c7, 0x30cc}, - {0x04c8, 0x30cd}, - {0x04c9, 0x30ce}, - {0x04ca, 0x30cf}, - {0x04cb, 0x30d2}, - {0x04cc, 0x30d5}, - {0x04cd, 0x30d8}, - {0x04ce, 0x30db}, - {0x04cf, 0x30de}, - {0x04d0, 0x30df}, - {0x04d1, 0x30e0}, - {0x04d2, 0x30e1}, - {0x04d3, 0x30e2}, - {0x04d4, 0x30e4}, - {0x04d5, 0x30e6}, - {0x04d6, 0x30e8}, - {0x04d7, 0x30e9}, - {0x04d8, 0x30ea}, - {0x04d9, 0x30eb}, - {0x04da, 0x30ec}, - {0x04db, 0x30ed}, - {0x04dc, 0x30ef}, - {0x04dd, 0x30f3}, - {0x04de, 0x309b}, - {0x04df, 0x309c}, - {0x05ac, 0x060c}, - {0x05bb, 0x061b}, - {0x05bf, 0x061f}, - {0x05c1, 0x0621}, - {0x05c2, 0x0622}, - {0x05c3, 0x0623}, - {0x05c4, 0x0624}, - {0x05c5, 0x0625}, - {0x05c6, 0x0626}, - {0x05c7, 0x0627}, - {0x05c8, 0x0628}, - {0x05c9, 0x0629}, - {0x05ca, 0x062a}, - {0x05cb, 0x062b}, - {0x05cc, 0x062c}, - {0x05cd, 0x062d}, - {0x05ce, 0x062e}, - {0x05cf, 0x062f}, - {0x05d0, 0x0630}, - {0x05d1, 0x0631}, - {0x05d2, 0x0632}, - {0x05d3, 0x0633}, - {0x05d4, 0x0634}, - {0x05d5, 0x0635}, - {0x05d6, 0x0636}, - {0x05d7, 0x0637}, - {0x05d8, 0x0638}, - {0x05d9, 0x0639}, - {0x05da, 0x063a}, - {0x05e0, 0x0640}, - {0x05e1, 0x0641}, - {0x05e2, 0x0642}, - {0x05e3, 0x0643}, - {0x05e4, 0x0644}, - {0x05e5, 0x0645}, - {0x05e6, 0x0646}, - {0x05e7, 0x0647}, - {0x05e8, 0x0648}, - {0x05e9, 0x0649}, - {0x05ea, 0x064a}, - {0x05eb, 0x064b}, - {0x05ec, 0x064c}, - {0x05ed, 0x064d}, - {0x05ee, 0x064e}, - {0x05ef, 0x064f}, - {0x05f0, 0x0650}, - {0x05f1, 0x0651}, - {0x05f2, 0x0652}, - {0x06a1, 0x0452}, - {0x06a2, 0x0453}, - {0x06a3, 0x0451}, - {0x06a4, 0x0454}, - {0x06a5, 0x0455}, - {0x06a6, 0x0456}, - {0x06a7, 0x0457}, - {0x06a8, 0x0458}, - {0x06a9, 0x0459}, - {0x06aa, 0x045a}, - {0x06ab, 0x045b}, - {0x06ac, 0x045c}, - {0x06ae, 0x045e}, - {0x06af, 0x045f}, - {0x06b0, 0x2116}, - {0x06b1, 0x0402}, - {0x06b2, 0x0403}, - {0x06b3, 0x0401}, - {0x06b4, 0x0404}, - {0x06b5, 0x0405}, - {0x06b6, 0x0406}, - {0x06b7, 0x0407}, - {0x06b8, 0x0408}, - {0x06b9, 0x0409}, - {0x06ba, 0x040a}, - {0x06bb, 0x040b}, - {0x06bc, 0x040c}, - {0x06be, 0x040e}, - {0x06bf, 0x040f}, - {0x06c0, 0x044e}, - {0x06c1, 0x0430}, - {0x06c2, 0x0431}, - {0x06c3, 0x0446}, - {0x06c4, 0x0434}, - {0x06c5, 0x0435}, - {0x06c6, 0x0444}, - {0x06c7, 0x0433}, - {0x06c8, 0x0445}, - {0x06c9, 0x0438}, - {0x06ca, 0x0439}, - {0x06cb, 0x043a}, - {0x06cc, 0x043b}, - {0x06cd, 0x043c}, - {0x06ce, 0x043d}, - {0x06cf, 0x043e}, - {0x06d0, 0x043f}, - {0x06d1, 0x044f}, - {0x06d2, 0x0440}, - {0x06d3, 0x0441}, - {0x06d4, 0x0442}, - {0x06d5, 0x0443}, - {0x06d6, 0x0436}, - {0x06d7, 0x0432}, - {0x06d8, 0x044c}, - {0x06d9, 0x044b}, - {0x06da, 0x0437}, - {0x06db, 0x0448}, - {0x06dc, 0x044d}, - {0x06dd, 0x0449}, - {0x06de, 0x0447}, - {0x06df, 0x044a}, - {0x06e0, 0x042e}, - {0x06e1, 0x0410}, - {0x06e2, 0x0411}, - {0x06e3, 0x0426}, - {0x06e4, 0x0414}, - {0x06e5, 0x0415}, - {0x06e6, 0x0424}, - {0x06e7, 0x0413}, - {0x06e8, 0x0425}, - {0x06e9, 0x0418}, - {0x06ea, 0x0419}, - {0x06eb, 0x041a}, - {0x06ec, 0x041b}, - {0x06ed, 0x041c}, - {0x06ee, 0x041d}, - {0x06ef, 0x041e}, - {0x06f0, 0x041f}, - {0x06f1, 0x042f}, - {0x06f2, 0x0420}, - {0x06f3, 0x0421}, - {0x06f4, 0x0422}, - {0x06f5, 0x0423}, - {0x06f6, 0x0416}, - {0x06f7, 0x0412}, - {0x06f8, 0x042c}, - {0x06f9, 0x042b}, - {0x06fa, 0x0417}, - {0x06fb, 0x0428}, - {0x06fc, 0x042d}, - {0x06fd, 0x0429}, - {0x06fe, 0x0427}, - {0x06ff, 0x042a}, - {0x07a1, 0x0386}, - {0x07a2, 0x0388}, - {0x07a3, 0x0389}, - {0x07a4, 0x038a}, - {0x07a5, 0x03aa}, - {0x07a7, 0x038c}, - {0x07a8, 0x038e}, - {0x07a9, 0x03ab}, - {0x07ab, 0x038f}, - {0x07ae, 0x0385}, - {0x07af, 0x2015}, - {0x07b1, 0x03ac}, - {0x07b2, 0x03ad}, - {0x07b3, 0x03ae}, - {0x07b4, 0x03af}, - {0x07b5, 0x03ca}, - {0x07b6, 0x0390}, - {0x07b7, 0x03cc}, - {0x07b8, 0x03cd}, - {0x07b9, 0x03cb}, - {0x07ba, 0x03b0}, - {0x07bb, 0x03ce}, - {0x07c1, 0x0391}, - {0x07c2, 0x0392}, - {0x07c3, 0x0393}, - {0x07c4, 0x0394}, - {0x07c5, 0x0395}, - {0x07c6, 0x0396}, - {0x07c7, 0x0397}, - {0x07c8, 0x0398}, - {0x07c9, 0x0399}, - {0x07ca, 0x039a}, - {0x07cb, 0x039b}, - {0x07cc, 0x039c}, - {0x07cd, 0x039d}, - {0x07ce, 0x039e}, - {0x07cf, 0x039f}, - {0x07d0, 0x03a0}, - {0x07d1, 0x03a1}, - {0x07d2, 0x03a3}, - {0x07d4, 0x03a4}, - {0x07d5, 0x03a5}, - {0x07d6, 0x03a6}, - {0x07d7, 0x03a7}, - {0x07d8, 0x03a8}, - {0x07d9, 0x03a9}, - {0x07e1, 0x03b1}, - {0x07e2, 0x03b2}, - {0x07e3, 0x03b3}, - {0x07e4, 0x03b4}, - {0x07e5, 0x03b5}, - {0x07e6, 0x03b6}, - {0x07e7, 0x03b7}, - {0x07e8, 0x03b8}, - {0x07e9, 0x03b9}, - {0x07ea, 0x03ba}, - {0x07eb, 0x03bb}, - {0x07ec, 0x03bc}, - {0x07ed, 0x03bd}, - {0x07ee, 0x03be}, - {0x07ef, 0x03bf}, - {0x07f0, 0x03c0}, - {0x07f1, 0x03c1}, - {0x07f2, 0x03c3}, - {0x07f3, 0x03c2}, - {0x07f4, 0x03c4}, - {0x07f5, 0x03c5}, - {0x07f6, 0x03c6}, - {0x07f7, 0x03c7}, - {0x07f8, 0x03c8}, - {0x07f9, 0x03c9}, - {0x08a1, 0x23b7}, - {0x08a2, 0x250c}, - {0x08a3, 0x2500}, - {0x08a4, 0x2320}, - {0x08a5, 0x2321}, - {0x08a6, 0x2502}, - {0x08a7, 0x23a1}, - {0x08a8, 0x23a3}, - {0x08a9, 0x23a4}, - {0x08aa, 0x23a6}, - {0x08ab, 0x239b}, - {0x08ac, 0x239d}, - {0x08ad, 0x239e}, - {0x08ae, 0x23a0}, - {0x08af, 0x23a8}, - {0x08b0, 0x23ac}, - {0x08bc, 0x2264}, - {0x08bd, 0x2260}, - {0x08be, 0x2265}, - {0x08bf, 0x222b}, - {0x08c0, 0x2234}, - {0x08c1, 0x221d}, - {0x08c2, 0x221e}, - {0x08c5, 0x2207}, - {0x08c8, 0x223c}, - {0x08c9, 0x2243}, - {0x08cd, 0x21d4}, - {0x08ce, 0x21d2}, - {0x08cf, 0x2261}, - {0x08d6, 0x221a}, - {0x08da, 0x2282}, - {0x08db, 0x2283}, - {0x08dc, 0x2229}, - {0x08dd, 0x222a}, - {0x08de, 0x2227}, - {0x08df, 0x2228}, - {0x08ef, 0x2202}, - {0x08f6, 0x0192}, - {0x08fb, 0x2190}, - {0x08fc, 0x2191}, - {0x08fd, 0x2192}, - {0x08fe, 0x2193}, - {0x09e0, 0x25c6}, - {0x09e1, 0x2592}, - {0x09e2, 0x2409}, - {0x09e3, 0x240c}, - {0x09e4, 0x240d}, - {0x09e5, 0x240a}, - {0x09e8, 0x2424}, - {0x09e9, 0x240b}, - {0x09ea, 0x2518}, - {0x09eb, 0x2510}, - {0x09ec, 0x250c}, - {0x09ed, 0x2514}, - {0x09ee, 0x253c}, - {0x09ef, 0x23ba}, - {0x09f0, 0x23bb}, - {0x09f1, 0x2500}, - {0x09f2, 0x23bc}, - {0x09f3, 0x23bd}, - {0x09f4, 0x251c}, - {0x09f5, 0x2524}, - {0x09f6, 0x2534}, - {0x09f7, 0x252c}, - {0x09f8, 0x2502}, - {0x0aa1, 0x2003}, - {0x0aa2, 0x2002}, - {0x0aa3, 0x2004}, - {0x0aa4, 0x2005}, - {0x0aa5, 0x2007}, - {0x0aa6, 0x2008}, - {0x0aa7, 0x2009}, - {0x0aa8, 0x200a}, - {0x0aa9, 0x2014}, - {0x0aaa, 0x2013}, - {0x0aae, 0x2026}, - {0x0aaf, 0x2025}, - {0x0ab0, 0x2153}, - {0x0ab1, 0x2154}, - {0x0ab2, 0x2155}, - {0x0ab3, 0x2156}, - {0x0ab4, 0x2157}, - {0x0ab5, 0x2158}, - {0x0ab6, 0x2159}, - {0x0ab7, 0x215a}, - {0x0ab8, 0x2105}, - {0x0abb, 0x2012}, - {0x0abc, 0x2329}, - {0x0abe, 0x232a}, - {0x0ac3, 0x215b}, - {0x0ac4, 0x215c}, - {0x0ac5, 0x215d}, - {0x0ac6, 0x215e}, - {0x0ac9, 0x2122}, - {0x0aca, 0x2613}, - {0x0acc, 0x25c1}, - {0x0acd, 0x25b7}, - {0x0ace, 0x25cb}, - {0x0acf, 0x25af}, - {0x0ad0, 0x2018}, - {0x0ad1, 0x2019}, - {0x0ad2, 0x201c}, - {0x0ad3, 0x201d}, - {0x0ad4, 0x211e}, - {0x0ad6, 0x2032}, - {0x0ad7, 0x2033}, - {0x0ad9, 0x271d}, - {0x0adb, 0x25ac}, - {0x0adc, 0x25c0}, - {0x0add, 0x25b6}, - {0x0ade, 0x25cf}, - {0x0adf, 0x25ae}, - {0x0ae0, 0x25e6}, - {0x0ae1, 0x25ab}, - {0x0ae2, 0x25ad}, - {0x0ae3, 0x25b3}, - {0x0ae4, 0x25bd}, - {0x0ae5, 0x2606}, - {0x0ae6, 0x2022}, - {0x0ae7, 0x25aa}, - {0x0ae8, 0x25b2}, - {0x0ae9, 0x25bc}, - {0x0aea, 0x261c}, - {0x0aeb, 0x261e}, - {0x0aec, 0x2663}, - {0x0aed, 0x2666}, - {0x0aee, 0x2665}, - {0x0af0, 0x2720}, - {0x0af1, 0x2020}, - {0x0af2, 0x2021}, - {0x0af3, 0x2713}, - {0x0af4, 0x2717}, - {0x0af5, 0x266f}, - {0x0af6, 0x266d}, - {0x0af7, 0x2642}, - {0x0af8, 0x2640}, - {0x0af9, 0x260e}, - {0x0afa, 0x2315}, - {0x0afb, 0x2117}, - {0x0afc, 0x2038}, - {0x0afd, 0x201a}, - {0x0afe, 0x201e}, - {0x0ba3, 0x003c}, - {0x0ba6, 0x003e}, - {0x0ba8, 0x2228}, - {0x0ba9, 0x2227}, - {0x0bc0, 0x00af}, - {0x0bc2, 0x22a5}, - {0x0bc3, 0x2229}, - {0x0bc4, 0x230a}, - {0x0bc6, 0x005f}, - {0x0bca, 0x2218}, - {0x0bcc, 0x2395}, - {0x0bce, 0x22a4}, - {0x0bcf, 0x25cb}, - {0x0bd3, 0x2308}, - {0x0bd6, 0x222a}, - {0x0bd8, 0x2283}, - {0x0bda, 0x2282}, - {0x0bdc, 0x22a2}, - {0x0bfc, 0x22a3}, - {0x0cdf, 0x2017}, - {0x0ce0, 0x05d0}, - {0x0ce1, 0x05d1}, - {0x0ce2, 0x05d2}, - {0x0ce3, 0x05d3}, - {0x0ce4, 0x05d4}, - {0x0ce5, 0x05d5}, - {0x0ce6, 0x05d6}, - {0x0ce7, 0x05d7}, - {0x0ce8, 0x05d8}, - {0x0ce9, 0x05d9}, - {0x0cea, 0x05da}, - {0x0ceb, 0x05db}, - {0x0cec, 0x05dc}, - {0x0ced, 0x05dd}, - {0x0cee, 0x05de}, - {0x0cef, 0x05df}, - {0x0cf0, 0x05e0}, - {0x0cf1, 0x05e1}, - {0x0cf2, 0x05e2}, - {0x0cf3, 0x05e3}, - {0x0cf4, 0x05e4}, - {0x0cf5, 0x05e5}, - {0x0cf6, 0x05e6}, - {0x0cf7, 0x05e7}, - {0x0cf8, 0x05e8}, - {0x0cf9, 0x05e9}, - {0x0cfa, 0x05ea}, - {0x0da1, 0x0e01}, - {0x0da2, 0x0e02}, - {0x0da3, 0x0e03}, - {0x0da4, 0x0e04}, - {0x0da5, 0x0e05}, - {0x0da6, 0x0e06}, - {0x0da7, 0x0e07}, - {0x0da8, 0x0e08}, - {0x0da9, 0x0e09}, - {0x0daa, 0x0e0a}, - {0x0dab, 0x0e0b}, - {0x0dac, 0x0e0c}, - {0x0dad, 0x0e0d}, - {0x0dae, 0x0e0e}, - {0x0daf, 0x0e0f}, - {0x0db0, 0x0e10}, - {0x0db1, 0x0e11}, - {0x0db2, 0x0e12}, - {0x0db3, 0x0e13}, - {0x0db4, 0x0e14}, - {0x0db5, 0x0e15}, - {0x0db6, 0x0e16}, - {0x0db7, 0x0e17}, - {0x0db8, 0x0e18}, - {0x0db9, 0x0e19}, - {0x0dba, 0x0e1a}, - {0x0dbb, 0x0e1b}, - {0x0dbc, 0x0e1c}, - {0x0dbd, 0x0e1d}, - {0x0dbe, 0x0e1e}, - {0x0dbf, 0x0e1f}, - {0x0dc0, 0x0e20}, - {0x0dc1, 0x0e21}, - {0x0dc2, 0x0e22}, - {0x0dc3, 0x0e23}, - {0x0dc4, 0x0e24}, - {0x0dc5, 0x0e25}, - {0x0dc6, 0x0e26}, - {0x0dc7, 0x0e27}, - {0x0dc8, 0x0e28}, - {0x0dc9, 0x0e29}, - {0x0dca, 0x0e2a}, - {0x0dcb, 0x0e2b}, - {0x0dcc, 0x0e2c}, - {0x0dcd, 0x0e2d}, - {0x0dce, 0x0e2e}, - {0x0dcf, 0x0e2f}, - {0x0dd0, 0x0e30}, - {0x0dd1, 0x0e31}, - {0x0dd2, 0x0e32}, - {0x0dd3, 0x0e33}, - {0x0dd4, 0x0e34}, - {0x0dd5, 0x0e35}, - {0x0dd6, 0x0e36}, - {0x0dd7, 0x0e37}, - {0x0dd8, 0x0e38}, - {0x0dd9, 0x0e39}, - {0x0dda, 0x0e3a}, - {0x0ddf, 0x0e3f}, - {0x0de0, 0x0e40}, - {0x0de1, 0x0e41}, - {0x0de2, 0x0e42}, - {0x0de3, 0x0e43}, - {0x0de4, 0x0e44}, - {0x0de5, 0x0e45}, - {0x0de6, 0x0e46}, - {0x0de7, 0x0e47}, - {0x0de8, 0x0e48}, - {0x0de9, 0x0e49}, - {0x0dea, 0x0e4a}, - {0x0deb, 0x0e4b}, - {0x0dec, 0x0e4c}, - {0x0ded, 0x0e4d}, - {0x0df0, 0x0e50}, - {0x0df1, 0x0e51}, - {0x0df2, 0x0e52}, - {0x0df3, 0x0e53}, - {0x0df4, 0x0e54}, - {0x0df5, 0x0e55}, - {0x0df6, 0x0e56}, - {0x0df7, 0x0e57}, - {0x0df8, 0x0e58}, - {0x0df9, 0x0e59}, - {0x0ea1, 0x3131}, - {0x0ea2, 0x3132}, - {0x0ea3, 0x3133}, - {0x0ea4, 0x3134}, - {0x0ea5, 0x3135}, - {0x0ea6, 0x3136}, - {0x0ea7, 0x3137}, - {0x0ea8, 0x3138}, - {0x0ea9, 0x3139}, - {0x0eaa, 0x313a}, - {0x0eab, 0x313b}, - {0x0eac, 0x313c}, - {0x0ead, 0x313d}, - {0x0eae, 0x313e}, - {0x0eaf, 0x313f}, - {0x0eb0, 0x3140}, - {0x0eb1, 0x3141}, - {0x0eb2, 0x3142}, - {0x0eb3, 0x3143}, - {0x0eb4, 0x3144}, - {0x0eb5, 0x3145}, - {0x0eb6, 0x3146}, - {0x0eb7, 0x3147}, - {0x0eb8, 0x3148}, - {0x0eb9, 0x3149}, - {0x0eba, 0x314a}, - {0x0ebb, 0x314b}, - {0x0ebc, 0x314c}, - {0x0ebd, 0x314d}, - {0x0ebe, 0x314e}, - {0x0ebf, 0x314f}, - {0x0ec0, 0x3150}, - {0x0ec1, 0x3151}, - {0x0ec2, 0x3152}, - {0x0ec3, 0x3153}, - {0x0ec4, 0x3154}, - {0x0ec5, 0x3155}, - {0x0ec6, 0x3156}, - {0x0ec7, 0x3157}, - {0x0ec8, 0x3158}, - {0x0ec9, 0x3159}, - {0x0eca, 0x315a}, - {0x0ecb, 0x315b}, - {0x0ecc, 0x315c}, - {0x0ecd, 0x315d}, - {0x0ece, 0x315e}, - {0x0ecf, 0x315f}, - {0x0ed0, 0x3160}, - {0x0ed1, 0x3161}, - {0x0ed2, 0x3162}, - {0x0ed3, 0x3163}, - {0x0ed4, 0x11a8}, - {0x0ed5, 0x11a9}, - {0x0ed6, 0x11aa}, - {0x0ed7, 0x11ab}, - {0x0ed8, 0x11ac}, - {0x0ed9, 0x11ad}, - {0x0eda, 0x11ae}, - {0x0edb, 0x11af}, - {0x0edc, 0x11b0}, - {0x0edd, 0x11b1}, - {0x0ede, 0x11b2}, - {0x0edf, 0x11b3}, - {0x0ee0, 0x11b4}, - {0x0ee1, 0x11b5}, - {0x0ee2, 0x11b6}, - {0x0ee3, 0x11b7}, - {0x0ee4, 0x11b8}, - {0x0ee5, 0x11b9}, - {0x0ee6, 0x11ba}, - {0x0ee7, 0x11bb}, - {0x0ee8, 0x11bc}, - {0x0ee9, 0x11bd}, - {0x0eea, 0x11be}, - {0x0eeb, 0x11bf}, - {0x0eec, 0x11c0}, - {0x0eed, 0x11c1}, - {0x0eee, 0x11c2}, - {0x0eef, 0x316d}, - {0x0ef0, 0x3171}, - {0x0ef1, 0x3178}, - {0x0ef2, 0x317f}, - {0x0ef3, 0x3181}, - {0x0ef4, 0x3184}, - {0x0ef5, 0x3186}, - {0x0ef6, 0x318d}, - {0x0ef7, 0x318e}, - {0x0ef8, 0x11eb}, - {0x0ef9, 0x11f0}, - {0x0efa, 0x11f9}, - {0x0eff, 0x20a9}, + { 0x01a1, 0x0104 }, + { 0x01a2, 0x02d8 }, + { 0x01a3, 0x0141 }, + { 0x01a5, 0x013d }, + { 0x01a6, 0x015a }, + { 0x01a9, 0x0160 }, + { 0x01aa, 0x015e }, + { 0x01ab, 0x0164 }, + { 0x01ac, 0x0179 }, + { 0x01ae, 0x017d }, + { 0x01af, 0x017b }, + { 0x01b1, 0x0105 }, + { 0x01b2, 0x02db }, + { 0x01b3, 0x0142 }, + { 0x01b5, 0x013e }, + { 0x01b6, 0x015b }, + { 0x01b7, 0x02c7 }, + { 0x01b9, 0x0161 }, + { 0x01ba, 0x015f }, + { 0x01bb, 0x0165 }, + { 0x01bc, 0x017a }, + { 0x01bd, 0x02dd }, + { 0x01be, 0x017e }, + { 0x01bf, 0x017c }, + { 0x01c0, 0x0154 }, + { 0x01c3, 0x0102 }, + { 0x01c5, 0x0139 }, + { 0x01c6, 0x0106 }, + { 0x01c8, 0x010c }, + { 0x01ca, 0x0118 }, + { 0x01cc, 0x011a }, + { 0x01cf, 0x010e }, + { 0x01d0, 0x0110 }, + { 0x01d1, 0x0143 }, + { 0x01d2, 0x0147 }, + { 0x01d5, 0x0150 }, + { 0x01d8, 0x0158 }, + { 0x01d9, 0x016e }, + { 0x01db, 0x0170 }, + { 0x01de, 0x0162 }, + { 0x01e0, 0x0155 }, + { 0x01e3, 0x0103 }, + { 0x01e5, 0x013a }, + { 0x01e6, 0x0107 }, + { 0x01e8, 0x010d }, + { 0x01ea, 0x0119 }, + { 0x01ec, 0x011b }, + { 0x01ef, 0x010f }, + { 0x01f0, 0x0111 }, + { 0x01f1, 0x0144 }, + { 0x01f2, 0x0148 }, + { 0x01f5, 0x0151 }, + { 0x01f8, 0x0159 }, + { 0x01f9, 0x016f }, + { 0x01fb, 0x0171 }, + { 0x01fe, 0x0163 }, + { 0x01ff, 0x02d9 }, + { 0x02a1, 0x0126 }, + { 0x02a6, 0x0124 }, + { 0x02a9, 0x0130 }, + { 0x02ab, 0x011e }, + { 0x02ac, 0x0134 }, + { 0x02b1, 0x0127 }, + { 0x02b6, 0x0125 }, + { 0x02b9, 0x0131 }, + { 0x02bb, 0x011f }, + { 0x02bc, 0x0135 }, + { 0x02c5, 0x010a }, + { 0x02c6, 0x0108 }, + { 0x02d5, 0x0120 }, + { 0x02d8, 0x011c }, + { 0x02dd, 0x016c }, + { 0x02de, 0x015c }, + { 0x02e5, 0x010b }, + { 0x02e6, 0x0109 }, + { 0x02f5, 0x0121 }, + { 0x02f8, 0x011d }, + { 0x02fd, 0x016d }, + { 0x02fe, 0x015d }, + { 0x03a2, 0x0138 }, + { 0x03a3, 0x0156 }, + { 0x03a5, 0x0128 }, + { 0x03a6, 0x013b }, + { 0x03aa, 0x0112 }, + { 0x03ab, 0x0122 }, + { 0x03ac, 0x0166 }, + { 0x03b3, 0x0157 }, + { 0x03b5, 0x0129 }, + { 0x03b6, 0x013c }, + { 0x03ba, 0x0113 }, + { 0x03bb, 0x0123 }, + { 0x03bc, 0x0167 }, + { 0x03bd, 0x014a }, + { 0x03bf, 0x014b }, + { 0x03c0, 0x0100 }, + { 0x03c7, 0x012e }, + { 0x03cc, 0x0116 }, + { 0x03cf, 0x012a }, + { 0x03d1, 0x0145 }, + { 0x03d2, 0x014c }, + { 0x03d3, 0x0136 }, + { 0x03d9, 0x0172 }, + { 0x03dd, 0x0168 }, + { 0x03de, 0x016a }, + { 0x03e0, 0x0101 }, + { 0x03e7, 0x012f }, + { 0x03ec, 0x0117 }, + { 0x03ef, 0x012b }, + { 0x03f1, 0x0146 }, + { 0x03f2, 0x014d }, + { 0x03f3, 0x0137 }, + { 0x03f9, 0x0173 }, + { 0x03fd, 0x0169 }, + { 0x03fe, 0x016b }, + { 0x047e, 0x203e }, + { 0x04a1, 0x3002 }, + { 0x04a2, 0x300c }, + { 0x04a3, 0x300d }, + { 0x04a4, 0x3001 }, + { 0x04a5, 0x30fb }, + { 0x04a6, 0x30f2 }, + { 0x04a7, 0x30a1 }, + { 0x04a8, 0x30a3 }, + { 0x04a9, 0x30a5 }, + { 0x04aa, 0x30a7 }, + { 0x04ab, 0x30a9 }, + { 0x04ac, 0x30e3 }, + { 0x04ad, 0x30e5 }, + { 0x04ae, 0x30e7 }, + { 0x04af, 0x30c3 }, + { 0x04b0, 0x30fc }, + { 0x04b1, 0x30a2 }, + { 0x04b2, 0x30a4 }, + { 0x04b3, 0x30a6 }, + { 0x04b4, 0x30a8 }, + { 0x04b5, 0x30aa }, + { 0x04b6, 0x30ab }, + { 0x04b7, 0x30ad }, + { 0x04b8, 0x30af }, + { 0x04b9, 0x30b1 }, + { 0x04ba, 0x30b3 }, + { 0x04bb, 0x30b5 }, + { 0x04bc, 0x30b7 }, + { 0x04bd, 0x30b9 }, + { 0x04be, 0x30bb }, + { 0x04bf, 0x30bd }, + { 0x04c0, 0x30bf }, + { 0x04c1, 0x30c1 }, + { 0x04c2, 0x30c4 }, + { 0x04c3, 0x30c6 }, + { 0x04c4, 0x30c8 }, + { 0x04c5, 0x30ca }, + { 0x04c6, 0x30cb }, + { 0x04c7, 0x30cc }, + { 0x04c8, 0x30cd }, + { 0x04c9, 0x30ce }, + { 0x04ca, 0x30cf }, + { 0x04cb, 0x30d2 }, + { 0x04cc, 0x30d5 }, + { 0x04cd, 0x30d8 }, + { 0x04ce, 0x30db }, + { 0x04cf, 0x30de }, + { 0x04d0, 0x30df }, + { 0x04d1, 0x30e0 }, + { 0x04d2, 0x30e1 }, + { 0x04d3, 0x30e2 }, + { 0x04d4, 0x30e4 }, + { 0x04d5, 0x30e6 }, + { 0x04d6, 0x30e8 }, + { 0x04d7, 0x30e9 }, + { 0x04d8, 0x30ea }, + { 0x04d9, 0x30eb }, + { 0x04da, 0x30ec }, + { 0x04db, 0x30ed }, + { 0x04dc, 0x30ef }, + { 0x04dd, 0x30f3 }, + { 0x04de, 0x309b }, + { 0x04df, 0x309c }, + { 0x05ac, 0x060c }, + { 0x05bb, 0x061b }, + { 0x05bf, 0x061f }, + { 0x05c1, 0x0621 }, + { 0x05c2, 0x0622 }, + { 0x05c3, 0x0623 }, + { 0x05c4, 0x0624 }, + { 0x05c5, 0x0625 }, + { 0x05c6, 0x0626 }, + { 0x05c7, 0x0627 }, + { 0x05c8, 0x0628 }, + { 0x05c9, 0x0629 }, + { 0x05ca, 0x062a }, + { 0x05cb, 0x062b }, + { 0x05cc, 0x062c }, + { 0x05cd, 0x062d }, + { 0x05ce, 0x062e }, + { 0x05cf, 0x062f }, + { 0x05d0, 0x0630 }, + { 0x05d1, 0x0631 }, + { 0x05d2, 0x0632 }, + { 0x05d3, 0x0633 }, + { 0x05d4, 0x0634 }, + { 0x05d5, 0x0635 }, + { 0x05d6, 0x0636 }, + { 0x05d7, 0x0637 }, + { 0x05d8, 0x0638 }, + { 0x05d9, 0x0639 }, + { 0x05da, 0x063a }, + { 0x05e0, 0x0640 }, + { 0x05e1, 0x0641 }, + { 0x05e2, 0x0642 }, + { 0x05e3, 0x0643 }, + { 0x05e4, 0x0644 }, + { 0x05e5, 0x0645 }, + { 0x05e6, 0x0646 }, + { 0x05e7, 0x0647 }, + { 0x05e8, 0x0648 }, + { 0x05e9, 0x0649 }, + { 0x05ea, 0x064a }, + { 0x05eb, 0x064b }, + { 0x05ec, 0x064c }, + { 0x05ed, 0x064d }, + { 0x05ee, 0x064e }, + { 0x05ef, 0x064f }, + { 0x05f0, 0x0650 }, + { 0x05f1, 0x0651 }, + { 0x05f2, 0x0652 }, + { 0x06a1, 0x0452 }, + { 0x06a2, 0x0453 }, + { 0x06a3, 0x0451 }, + { 0x06a4, 0x0454 }, + { 0x06a5, 0x0455 }, + { 0x06a6, 0x0456 }, + { 0x06a7, 0x0457 }, + { 0x06a8, 0x0458 }, + { 0x06a9, 0x0459 }, + { 0x06aa, 0x045a }, + { 0x06ab, 0x045b }, + { 0x06ac, 0x045c }, + { 0x06ae, 0x045e }, + { 0x06af, 0x045f }, + { 0x06b0, 0x2116 }, + { 0x06b1, 0x0402 }, + { 0x06b2, 0x0403 }, + { 0x06b3, 0x0401 }, + { 0x06b4, 0x0404 }, + { 0x06b5, 0x0405 }, + { 0x06b6, 0x0406 }, + { 0x06b7, 0x0407 }, + { 0x06b8, 0x0408 }, + { 0x06b9, 0x0409 }, + { 0x06ba, 0x040a }, + { 0x06bb, 0x040b }, + { 0x06bc, 0x040c }, + { 0x06be, 0x040e }, + { 0x06bf, 0x040f }, + { 0x06c0, 0x044e }, + { 0x06c1, 0x0430 }, + { 0x06c2, 0x0431 }, + { 0x06c3, 0x0446 }, + { 0x06c4, 0x0434 }, + { 0x06c5, 0x0435 }, + { 0x06c6, 0x0444 }, + { 0x06c7, 0x0433 }, + { 0x06c8, 0x0445 }, + { 0x06c9, 0x0438 }, + { 0x06ca, 0x0439 }, + { 0x06cb, 0x043a }, + { 0x06cc, 0x043b }, + { 0x06cd, 0x043c }, + { 0x06ce, 0x043d }, + { 0x06cf, 0x043e }, + { 0x06d0, 0x043f }, + { 0x06d1, 0x044f }, + { 0x06d2, 0x0440 }, + { 0x06d3, 0x0441 }, + { 0x06d4, 0x0442 }, + { 0x06d5, 0x0443 }, + { 0x06d6, 0x0436 }, + { 0x06d7, 0x0432 }, + { 0x06d8, 0x044c }, + { 0x06d9, 0x044b }, + { 0x06da, 0x0437 }, + { 0x06db, 0x0448 }, + { 0x06dc, 0x044d }, + { 0x06dd, 0x0449 }, + { 0x06de, 0x0447 }, + { 0x06df, 0x044a }, + { 0x06e0, 0x042e }, + { 0x06e1, 0x0410 }, + { 0x06e2, 0x0411 }, + { 0x06e3, 0x0426 }, + { 0x06e4, 0x0414 }, + { 0x06e5, 0x0415 }, + { 0x06e6, 0x0424 }, + { 0x06e7, 0x0413 }, + { 0x06e8, 0x0425 }, + { 0x06e9, 0x0418 }, + { 0x06ea, 0x0419 }, + { 0x06eb, 0x041a }, + { 0x06ec, 0x041b }, + { 0x06ed, 0x041c }, + { 0x06ee, 0x041d }, + { 0x06ef, 0x041e }, + { 0x06f0, 0x041f }, + { 0x06f1, 0x042f }, + { 0x06f2, 0x0420 }, + { 0x06f3, 0x0421 }, + { 0x06f4, 0x0422 }, + { 0x06f5, 0x0423 }, + { 0x06f6, 0x0416 }, + { 0x06f7, 0x0412 }, + { 0x06f8, 0x042c }, + { 0x06f9, 0x042b }, + { 0x06fa, 0x0417 }, + { 0x06fb, 0x0428 }, + { 0x06fc, 0x042d }, + { 0x06fd, 0x0429 }, + { 0x06fe, 0x0427 }, + { 0x06ff, 0x042a }, + { 0x07a1, 0x0386 }, + { 0x07a2, 0x0388 }, + { 0x07a3, 0x0389 }, + { 0x07a4, 0x038a }, + { 0x07a5, 0x03aa }, + { 0x07a7, 0x038c }, + { 0x07a8, 0x038e }, + { 0x07a9, 0x03ab }, + { 0x07ab, 0x038f }, + { 0x07ae, 0x0385 }, + { 0x07af, 0x2015 }, + { 0x07b1, 0x03ac }, + { 0x07b2, 0x03ad }, + { 0x07b3, 0x03ae }, + { 0x07b4, 0x03af }, + { 0x07b5, 0x03ca }, + { 0x07b6, 0x0390 }, + { 0x07b7, 0x03cc }, + { 0x07b8, 0x03cd }, + { 0x07b9, 0x03cb }, + { 0x07ba, 0x03b0 }, + { 0x07bb, 0x03ce }, + { 0x07c1, 0x0391 }, + { 0x07c2, 0x0392 }, + { 0x07c3, 0x0393 }, + { 0x07c4, 0x0394 }, + { 0x07c5, 0x0395 }, + { 0x07c6, 0x0396 }, + { 0x07c7, 0x0397 }, + { 0x07c8, 0x0398 }, + { 0x07c9, 0x0399 }, + { 0x07ca, 0x039a }, + { 0x07cb, 0x039b }, + { 0x07cc, 0x039c }, + { 0x07cd, 0x039d }, + { 0x07ce, 0x039e }, + { 0x07cf, 0x039f }, + { 0x07d0, 0x03a0 }, + { 0x07d1, 0x03a1 }, + { 0x07d2, 0x03a3 }, + { 0x07d4, 0x03a4 }, + { 0x07d5, 0x03a5 }, + { 0x07d6, 0x03a6 }, + { 0x07d7, 0x03a7 }, + { 0x07d8, 0x03a8 }, + { 0x07d9, 0x03a9 }, + { 0x07e1, 0x03b1 }, + { 0x07e2, 0x03b2 }, + { 0x07e3, 0x03b3 }, + { 0x07e4, 0x03b4 }, + { 0x07e5, 0x03b5 }, + { 0x07e6, 0x03b6 }, + { 0x07e7, 0x03b7 }, + { 0x07e8, 0x03b8 }, + { 0x07e9, 0x03b9 }, + { 0x07ea, 0x03ba }, + { 0x07eb, 0x03bb }, + { 0x07ec, 0x03bc }, + { 0x07ed, 0x03bd }, + { 0x07ee, 0x03be }, + { 0x07ef, 0x03bf }, + { 0x07f0, 0x03c0 }, + { 0x07f1, 0x03c1 }, + { 0x07f2, 0x03c3 }, + { 0x07f3, 0x03c2 }, + { 0x07f4, 0x03c4 }, + { 0x07f5, 0x03c5 }, + { 0x07f6, 0x03c6 }, + { 0x07f7, 0x03c7 }, + { 0x07f8, 0x03c8 }, + { 0x07f9, 0x03c9 }, + { 0x08a1, 0x23b7 }, + { 0x08a2, 0x250c }, + { 0x08a3, 0x2500 }, + { 0x08a4, 0x2320 }, + { 0x08a5, 0x2321 }, + { 0x08a6, 0x2502 }, + { 0x08a7, 0x23a1 }, + { 0x08a8, 0x23a3 }, + { 0x08a9, 0x23a4 }, + { 0x08aa, 0x23a6 }, + { 0x08ab, 0x239b }, + { 0x08ac, 0x239d }, + { 0x08ad, 0x239e }, + { 0x08ae, 0x23a0 }, + { 0x08af, 0x23a8 }, + { 0x08b0, 0x23ac }, + { 0x08bc, 0x2264 }, + { 0x08bd, 0x2260 }, + { 0x08be, 0x2265 }, + { 0x08bf, 0x222b }, + { 0x08c0, 0x2234 }, + { 0x08c1, 0x221d }, + { 0x08c2, 0x221e }, + { 0x08c5, 0x2207 }, + { 0x08c8, 0x223c }, + { 0x08c9, 0x2243 }, + { 0x08cd, 0x21d4 }, + { 0x08ce, 0x21d2 }, + { 0x08cf, 0x2261 }, + { 0x08d6, 0x221a }, + { 0x08da, 0x2282 }, + { 0x08db, 0x2283 }, + { 0x08dc, 0x2229 }, + { 0x08dd, 0x222a }, + { 0x08de, 0x2227 }, + { 0x08df, 0x2228 }, + { 0x08ef, 0x2202 }, + { 0x08f6, 0x0192 }, + { 0x08fb, 0x2190 }, + { 0x08fc, 0x2191 }, + { 0x08fd, 0x2192 }, + { 0x08fe, 0x2193 }, + { 0x09e0, 0x25c6 }, + { 0x09e1, 0x2592 }, + { 0x09e2, 0x2409 }, + { 0x09e3, 0x240c }, + { 0x09e4, 0x240d }, + { 0x09e5, 0x240a }, + { 0x09e8, 0x2424 }, + { 0x09e9, 0x240b }, + { 0x09ea, 0x2518 }, + { 0x09eb, 0x2510 }, + { 0x09ec, 0x250c }, + { 0x09ed, 0x2514 }, + { 0x09ee, 0x253c }, + { 0x09ef, 0x23ba }, + { 0x09f0, 0x23bb }, + { 0x09f1, 0x2500 }, + { 0x09f2, 0x23bc }, + { 0x09f3, 0x23bd }, + { 0x09f4, 0x251c }, + { 0x09f5, 0x2524 }, + { 0x09f6, 0x2534 }, + { 0x09f7, 0x252c }, + { 0x09f8, 0x2502 }, + { 0x0aa1, 0x2003 }, + { 0x0aa2, 0x2002 }, + { 0x0aa3, 0x2004 }, + { 0x0aa4, 0x2005 }, + { 0x0aa5, 0x2007 }, + { 0x0aa6, 0x2008 }, + { 0x0aa7, 0x2009 }, + { 0x0aa8, 0x200a }, + { 0x0aa9, 0x2014 }, + { 0x0aaa, 0x2013 }, + { 0x0aae, 0x2026 }, + { 0x0aaf, 0x2025 }, + { 0x0ab0, 0x2153 }, + { 0x0ab1, 0x2154 }, + { 0x0ab2, 0x2155 }, + { 0x0ab3, 0x2156 }, + { 0x0ab4, 0x2157 }, + { 0x0ab5, 0x2158 }, + { 0x0ab6, 0x2159 }, + { 0x0ab7, 0x215a }, + { 0x0ab8, 0x2105 }, + { 0x0abb, 0x2012 }, + { 0x0abc, 0x2329 }, + { 0x0abe, 0x232a }, + { 0x0ac3, 0x215b }, + { 0x0ac4, 0x215c }, + { 0x0ac5, 0x215d }, + { 0x0ac6, 0x215e }, + { 0x0ac9, 0x2122 }, + { 0x0aca, 0x2613 }, + { 0x0acc, 0x25c1 }, + { 0x0acd, 0x25b7 }, + { 0x0ace, 0x25cb }, + { 0x0acf, 0x25af }, + { 0x0ad0, 0x2018 }, + { 0x0ad1, 0x2019 }, + { 0x0ad2, 0x201c }, + { 0x0ad3, 0x201d }, + { 0x0ad4, 0x211e }, + { 0x0ad6, 0x2032 }, + { 0x0ad7, 0x2033 }, + { 0x0ad9, 0x271d }, + { 0x0adb, 0x25ac }, + { 0x0adc, 0x25c0 }, + { 0x0add, 0x25b6 }, + { 0x0ade, 0x25cf }, + { 0x0adf, 0x25ae }, + { 0x0ae0, 0x25e6 }, + { 0x0ae1, 0x25ab }, + { 0x0ae2, 0x25ad }, + { 0x0ae3, 0x25b3 }, + { 0x0ae4, 0x25bd }, + { 0x0ae5, 0x2606 }, + { 0x0ae6, 0x2022 }, + { 0x0ae7, 0x25aa }, + { 0x0ae8, 0x25b2 }, + { 0x0ae9, 0x25bc }, + { 0x0aea, 0x261c }, + { 0x0aeb, 0x261e }, + { 0x0aec, 0x2663 }, + { 0x0aed, 0x2666 }, + { 0x0aee, 0x2665 }, + { 0x0af0, 0x2720 }, + { 0x0af1, 0x2020 }, + { 0x0af2, 0x2021 }, + { 0x0af3, 0x2713 }, + { 0x0af4, 0x2717 }, + { 0x0af5, 0x266f }, + { 0x0af6, 0x266d }, + { 0x0af7, 0x2642 }, + { 0x0af8, 0x2640 }, + { 0x0af9, 0x260e }, + { 0x0afa, 0x2315 }, + { 0x0afb, 0x2117 }, + { 0x0afc, 0x2038 }, + { 0x0afd, 0x201a }, + { 0x0afe, 0x201e }, + { 0x0ba3, 0x003c }, + { 0x0ba6, 0x003e }, + { 0x0ba8, 0x2228 }, + { 0x0ba9, 0x2227 }, + { 0x0bc0, 0x00af }, + { 0x0bc2, 0x22a5 }, + { 0x0bc3, 0x2229 }, + { 0x0bc4, 0x230a }, + { 0x0bc6, 0x005f }, + { 0x0bca, 0x2218 }, + { 0x0bcc, 0x2395 }, + { 0x0bce, 0x22a4 }, + { 0x0bcf, 0x25cb }, + { 0x0bd3, 0x2308 }, + { 0x0bd6, 0x222a }, + { 0x0bd8, 0x2283 }, + { 0x0bda, 0x2282 }, + { 0x0bdc, 0x22a2 }, + { 0x0bfc, 0x22a3 }, + { 0x0cdf, 0x2017 }, + { 0x0ce0, 0x05d0 }, + { 0x0ce1, 0x05d1 }, + { 0x0ce2, 0x05d2 }, + { 0x0ce3, 0x05d3 }, + { 0x0ce4, 0x05d4 }, + { 0x0ce5, 0x05d5 }, + { 0x0ce6, 0x05d6 }, + { 0x0ce7, 0x05d7 }, + { 0x0ce8, 0x05d8 }, + { 0x0ce9, 0x05d9 }, + { 0x0cea, 0x05da }, + { 0x0ceb, 0x05db }, + { 0x0cec, 0x05dc }, + { 0x0ced, 0x05dd }, + { 0x0cee, 0x05de }, + { 0x0cef, 0x05df }, + { 0x0cf0, 0x05e0 }, + { 0x0cf1, 0x05e1 }, + { 0x0cf2, 0x05e2 }, + { 0x0cf3, 0x05e3 }, + { 0x0cf4, 0x05e4 }, + { 0x0cf5, 0x05e5 }, + { 0x0cf6, 0x05e6 }, + { 0x0cf7, 0x05e7 }, + { 0x0cf8, 0x05e8 }, + { 0x0cf9, 0x05e9 }, + { 0x0cfa, 0x05ea }, + { 0x0da1, 0x0e01 }, + { 0x0da2, 0x0e02 }, + { 0x0da3, 0x0e03 }, + { 0x0da4, 0x0e04 }, + { 0x0da5, 0x0e05 }, + { 0x0da6, 0x0e06 }, + { 0x0da7, 0x0e07 }, + { 0x0da8, 0x0e08 }, + { 0x0da9, 0x0e09 }, + { 0x0daa, 0x0e0a }, + { 0x0dab, 0x0e0b }, + { 0x0dac, 0x0e0c }, + { 0x0dad, 0x0e0d }, + { 0x0dae, 0x0e0e }, + { 0x0daf, 0x0e0f }, + { 0x0db0, 0x0e10 }, + { 0x0db1, 0x0e11 }, + { 0x0db2, 0x0e12 }, + { 0x0db3, 0x0e13 }, + { 0x0db4, 0x0e14 }, + { 0x0db5, 0x0e15 }, + { 0x0db6, 0x0e16 }, + { 0x0db7, 0x0e17 }, + { 0x0db8, 0x0e18 }, + { 0x0db9, 0x0e19 }, + { 0x0dba, 0x0e1a }, + { 0x0dbb, 0x0e1b }, + { 0x0dbc, 0x0e1c }, + { 0x0dbd, 0x0e1d }, + { 0x0dbe, 0x0e1e }, + { 0x0dbf, 0x0e1f }, + { 0x0dc0, 0x0e20 }, + { 0x0dc1, 0x0e21 }, + { 0x0dc2, 0x0e22 }, + { 0x0dc3, 0x0e23 }, + { 0x0dc4, 0x0e24 }, + { 0x0dc5, 0x0e25 }, + { 0x0dc6, 0x0e26 }, + { 0x0dc7, 0x0e27 }, + { 0x0dc8, 0x0e28 }, + { 0x0dc9, 0x0e29 }, + { 0x0dca, 0x0e2a }, + { 0x0dcb, 0x0e2b }, + { 0x0dcc, 0x0e2c }, + { 0x0dcd, 0x0e2d }, + { 0x0dce, 0x0e2e }, + { 0x0dcf, 0x0e2f }, + { 0x0dd0, 0x0e30 }, + { 0x0dd1, 0x0e31 }, + { 0x0dd2, 0x0e32 }, + { 0x0dd3, 0x0e33 }, + { 0x0dd4, 0x0e34 }, + { 0x0dd5, 0x0e35 }, + { 0x0dd6, 0x0e36 }, + { 0x0dd7, 0x0e37 }, + { 0x0dd8, 0x0e38 }, + { 0x0dd9, 0x0e39 }, + { 0x0dda, 0x0e3a }, + { 0x0ddf, 0x0e3f }, + { 0x0de0, 0x0e40 }, + { 0x0de1, 0x0e41 }, + { 0x0de2, 0x0e42 }, + { 0x0de3, 0x0e43 }, + { 0x0de4, 0x0e44 }, + { 0x0de5, 0x0e45 }, + { 0x0de6, 0x0e46 }, + { 0x0de7, 0x0e47 }, + { 0x0de8, 0x0e48 }, + { 0x0de9, 0x0e49 }, + { 0x0dea, 0x0e4a }, + { 0x0deb, 0x0e4b }, + { 0x0dec, 0x0e4c }, + { 0x0ded, 0x0e4d }, + { 0x0df0, 0x0e50 }, + { 0x0df1, 0x0e51 }, + { 0x0df2, 0x0e52 }, + { 0x0df3, 0x0e53 }, + { 0x0df4, 0x0e54 }, + { 0x0df5, 0x0e55 }, + { 0x0df6, 0x0e56 }, + { 0x0df7, 0x0e57 }, + { 0x0df8, 0x0e58 }, + { 0x0df9, 0x0e59 }, + { 0x0ea1, 0x3131 }, + { 0x0ea2, 0x3132 }, + { 0x0ea3, 0x3133 }, + { 0x0ea4, 0x3134 }, + { 0x0ea5, 0x3135 }, + { 0x0ea6, 0x3136 }, + { 0x0ea7, 0x3137 }, + { 0x0ea8, 0x3138 }, + { 0x0ea9, 0x3139 }, + { 0x0eaa, 0x313a }, + { 0x0eab, 0x313b }, + { 0x0eac, 0x313c }, + { 0x0ead, 0x313d }, + { 0x0eae, 0x313e }, + { 0x0eaf, 0x313f }, + { 0x0eb0, 0x3140 }, + { 0x0eb1, 0x3141 }, + { 0x0eb2, 0x3142 }, + { 0x0eb3, 0x3143 }, + { 0x0eb4, 0x3144 }, + { 0x0eb5, 0x3145 }, + { 0x0eb6, 0x3146 }, + { 0x0eb7, 0x3147 }, + { 0x0eb8, 0x3148 }, + { 0x0eb9, 0x3149 }, + { 0x0eba, 0x314a }, + { 0x0ebb, 0x314b }, + { 0x0ebc, 0x314c }, + { 0x0ebd, 0x314d }, + { 0x0ebe, 0x314e }, + { 0x0ebf, 0x314f }, + { 0x0ec0, 0x3150 }, + { 0x0ec1, 0x3151 }, + { 0x0ec2, 0x3152 }, + { 0x0ec3, 0x3153 }, + { 0x0ec4, 0x3154 }, + { 0x0ec5, 0x3155 }, + { 0x0ec6, 0x3156 }, + { 0x0ec7, 0x3157 }, + { 0x0ec8, 0x3158 }, + { 0x0ec9, 0x3159 }, + { 0x0eca, 0x315a }, + { 0x0ecb, 0x315b }, + { 0x0ecc, 0x315c }, + { 0x0ecd, 0x315d }, + { 0x0ece, 0x315e }, + { 0x0ecf, 0x315f }, + { 0x0ed0, 0x3160 }, + { 0x0ed1, 0x3161 }, + { 0x0ed2, 0x3162 }, + { 0x0ed3, 0x3163 }, + { 0x0ed4, 0x11a8 }, + { 0x0ed5, 0x11a9 }, + { 0x0ed6, 0x11aa }, + { 0x0ed7, 0x11ab }, + { 0x0ed8, 0x11ac }, + { 0x0ed9, 0x11ad }, + { 0x0eda, 0x11ae }, + { 0x0edb, 0x11af }, + { 0x0edc, 0x11b0 }, + { 0x0edd, 0x11b1 }, + { 0x0ede, 0x11b2 }, + { 0x0edf, 0x11b3 }, + { 0x0ee0, 0x11b4 }, + { 0x0ee1, 0x11b5 }, + { 0x0ee2, 0x11b6 }, + { 0x0ee3, 0x11b7 }, + { 0x0ee4, 0x11b8 }, + { 0x0ee5, 0x11b9 }, + { 0x0ee6, 0x11ba }, + { 0x0ee7, 0x11bb }, + { 0x0ee8, 0x11bc }, + { 0x0ee9, 0x11bd }, + { 0x0eea, 0x11be }, + { 0x0eeb, 0x11bf }, + { 0x0eec, 0x11c0 }, + { 0x0eed, 0x11c1 }, + { 0x0eee, 0x11c2 }, + { 0x0eef, 0x316d }, + { 0x0ef0, 0x3171 }, + { 0x0ef1, 0x3178 }, + { 0x0ef2, 0x317f }, + { 0x0ef3, 0x3181 }, + { 0x0ef4, 0x3184 }, + { 0x0ef5, 0x3186 }, + { 0x0ef6, 0x318d }, + { 0x0ef7, 0x318e }, + { 0x0ef8, 0x11eb }, + { 0x0ef9, 0x11f0 }, + { 0x0efa, 0x11f9 }, + { 0x0eff, 0x20a9 }, #if 0 /* FIXME: there is no keysym 0x13a4? But 0x20ac is EuroSign in both keysym and Unicode */ - {0x13a4, 0x20ac}, + { 0x13a4, 0x20ac }, #endif - {0x13bc, 0x0152}, - {0x13bd, 0x0153}, - {0x13be, 0x0178}, - {0x20ac, 0x20ac}, + { 0x13bc, 0x0152 }, + { 0x13bd, 0x0153 }, + { 0x13be, 0x0178 }, + { 0x20ac, 0x20ac }, /* Special function keys. */ - {0xff08, 0x0008}, /* XK_BackSpace */ - {0xff09, 0x0009}, /* XK_Tab */ - {0xff0a, 0x000a}, /* XK_Linefeed */ - {0xff0d, 0x000d}, /* XK_Return */ - {0xff13, 0x0013}, /* XK_Pause */ - {0xff1b, 0x001b}, /* XK_Escape */ - {0xff50, 0x0001}, /* XK_Home */ - {0xff51, 0x001c}, /* XK_Left */ - {0xff52, 0x001e}, /* XK_Up */ - {0xff53, 0x001d}, /* XK_Right */ - {0xff54, 0x001f}, /* XK_Down */ - {0xff55, 0x000b}, /* XK_Prior */ - {0xff56, 0x000c}, /* XK_Next */ - {0xff57, 0x0004}, /* XK_End */ - {0xff6a, 0x0005}, /* XK_Help */ - {0xffff, 0x007f}, /* XK_Delete */ + { 0xff08, 0x0008 }, /* XK_BackSpace */ + { 0xff09, 0x0009 }, /* XK_Tab */ + { 0xff0a, 0x000a }, /* XK_Linefeed */ + { 0xff0d, 0x000d }, /* XK_Return */ + { 0xff13, 0x0013 }, /* XK_Pause */ + { 0xff1b, 0x001b }, /* XK_Escape */ + { 0xff50, 0x0001 }, /* XK_Home */ + { 0xff51, 0x001c }, /* XK_Left */ + { 0xff52, 0x001e }, /* XK_Up */ + { 0xff53, 0x001d }, /* XK_Right */ + { 0xff54, 0x001f }, /* XK_Down */ + { 0xff55, 0x000b }, /* XK_Prior */ + { 0xff56, 0x000c }, /* XK_Next */ + { 0xff57, 0x0004 }, /* XK_End */ + { 0xff6a, 0x0005 }, /* XK_Help */ + { 0xffff, 0x007f }, /* XK_Delete */ }; long @@ -884,11 +884,13 @@ ucs2keysym(long ucs) qsort(reverse_keysymtab, sizeof(keysymtab) / sizeof(struct codepair), - sizeof(struct codepair), reverse_compare); + sizeof(struct codepair), + reverse_compare); } /* first check for Latin-1 characters (1:1 mapping) */ - if ((ucs >= 0x0020 && ucs <= 0x007e) || (ucs >= 0x00a0 && ucs <= 0x00ff)) + if ((ucs >= 0x0020 && ucs <= 0x007e) || + (ucs >= 0x00a0 && ucs <= 0x00ff)) return ucs; /* binary search in table */ diff --git a/xorg-server/hw/xquartz/keysym2ucs.h b/xorg-server/hw/xquartz/keysym2ucs.h index f5b7a18f2..01af0371d 100644 --- a/xorg-server/hw/xquartz/keysym2ucs.h +++ b/xorg-server/hw/xquartz/keysym2ucs.h @@ -30,7 +30,9 @@ #ifndef KEYSYM2UCS_H #define KEYSYM2UCS_H 1 -extern long keysym2ucs(int keysym); -extern int ucs2keysym(long ucs); +extern long +keysym2ucs(int keysym); +extern int +ucs2keysym(long ucs); #endif /* KEYSYM2UCS_H */ diff --git a/xorg-server/hw/xquartz/mach-startup/bundle-main.c b/xorg-server/hw/xquartz/mach-startup/bundle-main.c index 7a53803da..d1ad6f7e3 100644 --- a/xorg-server/hw/xquartz/mach-startup/bundle-main.c +++ b/xorg-server/hw/xquartz/mach-startup/bundle-main.c @@ -1,32 +1,32 @@ /* main.c -- X application launcher - - Copyright (c) 2007 Jeremy Huddleston - Copyright (c) 2007 Apple 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 ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * Copyright (c) 2007 Jeremy Huddleston + * Copyright (c) 2007-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #include <CoreFoundation/CoreFoundation.h> #include <AvailabilityMacros.h> @@ -64,18 +64,16 @@ #include "console_redirect.h" /* From darwinEvents.c ... but don't want to pull in all the server cruft */ -void DarwinListenOnOpenFD(int fd); +void +DarwinListenOnOpenFD(int fd); extern aslclient aslc; /* Ditto, from os/log.c */ extern void -ErrorF(const char *f, ...) -_X_ATTRIBUTE_PRINTF(1, 2); +ErrorF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1, 2); extern void -FatalError(const char *f, ...) -_X_ATTRIBUTE_PRINTF(1, 2) - _X_NORETURN; +FatalError(const char *f, ...) _X_ATTRIBUTE_PRINTF(1, 2) _X_NORETURN; extern int noPanoramiXExtension; @@ -91,14 +89,13 @@ extern int noPanoramiXExtension; #endif static char __crashreporter_info_buff__[4096] = { 0 }; - -static const char *__crashreporter_info__ __attribute__ ((__used__)) = +static const char *__crashreporter_info__ __attribute__((__used__)) = &__crashreporter_info_buff__[0]; #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 // This is actually a toolchain requirement, but I'm not sure the correct check, // but it should be fine to just only include it for Leopard and later. This line // just tells the linker to never strip this symbol (such as for space optimization) -asm(".desc ___crashreporter_info__, 0x10"); +asm (".desc ___crashreporter_info__, 0x10"); #endif static const char *__crashreporter_info__base = @@ -110,10 +107,13 @@ static char *server_bootstrap_name = NULL; #define DEBUG 1 /* This is in quartzStartup.c */ -int server_main(int argc, char **argv, char **envp); +int +server_main(int argc, char **argv, char **envp); -static int execute(const char *command); -static char *command_from_prefs(const char *key, const char *default_value); +static int +execute(const char *command); +static char * +command_from_prefs(const char *key, const char *default_value); static char *pref_app_to_run; static char *pref_login_shell; @@ -122,7 +122,7 @@ static char *pref_startx_script; #ifndef HAVE_LIBDISPATCH /*** Pthread Magics ***/ static pthread_t -create_thread(void *(*func) (void *), void *arg) +create_thread(void *(*func)(void *), void *arg) { pthread_attr_t attr; pthread_t tid; @@ -162,8 +162,8 @@ checkin_or_register(char *bname) exit(EXIT_FAILURE); } - kr = mach_port_insert_right(mach_task_self(), mp, mp, - MACH_MSG_TYPE_MAKE_SEND); + kr = mach_port_insert_right( + mach_task_self(), mp, mp, MACH_MSG_TYPE_MAKE_SEND); if (kr != KERN_SUCCESS) { ErrorF("mach_port_insert_right(): %s\n", mach_error_string(kr)); exit(EXIT_FAILURE); @@ -171,7 +171,7 @@ checkin_or_register(char *bname) #ifdef __clang__ #pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" // bootstrap_register +#pragma clang diagnostic ignored "-Wdeprecated-declarations" // bootstrap_register #endif kr = bootstrap_register(bootstrap_port, bname, mp); #ifdef __clang__ @@ -221,16 +221,16 @@ accept_fd_handoff(int connected_fd) msg.msg_controllen = cmsg->cmsg_len; - *((int *) CMSG_DATA(cmsg)) = -1; + *((int *)CMSG_DATA(cmsg)) = -1; if (recvmsg(connected_fd, &msg, 0) < 0) { - ErrorF - ("X11.app: Error receiving $DISPLAY file descriptor. recvmsg() error: %s\n", - strerror(errno)); + ErrorF( + "X11.app: Error receiving $DISPLAY file descriptor. recvmsg() error: %s\n", + strerror(errno)); return -1; } - launchd_fd = *((int *) CMSG_DATA(cmsg)); + launchd_fd = *((int *)CMSG_DATA(cmsg)); return launchd_fd; } @@ -245,13 +245,13 @@ typedef struct { */ #ifdef HAVE_LIBDISPATCH static void -socket_handoff(socket_handoff_t * handoff_data) +socket_handoff(socket_handoff_t *handoff_data) { #else static void * socket_handoff_thread(void *arg) { - socket_handoff_t *handoff_data = (socket_handoff_t *) arg; + socket_handoff_t *handoff_data = (socket_handoff_t *)arg; #endif int launchd_fd = -1; @@ -263,17 +263,17 @@ socket_handoff_thread(void *arg) while (launchd_fd == -1) { connected_fd = accept(handoff_data->fd, NULL, NULL); if (connected_fd == -1) { - ErrorF - ("X11.app: Failed to accept incoming connection on socket (fd=%d): %s\n", - handoff_data->fd, strerror(errno)); + ErrorF( + "X11.app: Failed to accept incoming connection on socket (fd=%d): %s\n", + handoff_data->fd, strerror(errno)); sleep(2); continue; } launchd_fd = accept_fd_handoff(connected_fd); if (launchd_fd == -1) - ErrorF - ("X11.app: Error receiving $DISPLAY file descriptor, no descriptor received? Waiting for another connection.\n"); + ErrorF( + "X11.app: Error receiving $DISPLAY file descriptor, no descriptor received? Waiting for another connection.\n"); close(connected_fd); } @@ -282,9 +282,9 @@ socket_handoff_thread(void *arg) unlink(handoff_data->filename); free(handoff_data); - ErrorF - ("X11.app Handing off fd to server thread via DarwinListenOnOpenFD(%d)\n", - launchd_fd); + ErrorF( + "X11.app Handing off fd to server thread via DarwinListenOnOpenFD(%d)\n", + launchd_fd); DarwinListenOnOpenFD(launchd_fd); #ifndef HAVE_LIBDISPATCH @@ -310,35 +310,38 @@ create_socket(char *filename_out) strlcpy(servaddr_un.sun_path, filename_out, sizeof(servaddr_un.sun_path)); - servaddr = (struct sockaddr *) &servaddr_un; - servaddr_len = - sizeof(struct sockaddr_un) - sizeof(servaddr_un.sun_path) + - strlen(filename_out); + servaddr = (struct sockaddr *)&servaddr_un; + servaddr_len = sizeof(struct sockaddr_un) - + sizeof(servaddr_un.sun_path) + strlen(filename_out); ret_fd = socket(PF_UNIX, SOCK_STREAM, 0); if (ret_fd == -1) { - ErrorF("X11.app: Failed to create socket (try %d / %d): %s - %s\n", - (int) try + 1, (int) try_max, filename_out, strerror(errno)); + ErrorF( + "X11.app: Failed to create socket (try %d / %d): %s - %s\n", + (int)try + 1, (int)try_max, filename_out, strerror(errno)); continue; } if (bind(ret_fd, servaddr, servaddr_len) != 0) { ErrorF("X11.app: Failed to bind socket: %d - %s\n", errno, - strerror(errno)); + strerror( + errno)); close(ret_fd); return 0; } if (listen(ret_fd, 10) != 0) { ErrorF("X11.app: Failed to listen to socket: %s - %d - %s\n", - filename_out, errno, strerror(errno)); + filename_out, errno, strerror( + errno)); close(ret_fd); return 0; } #ifdef DEBUG ErrorF("X11.app: Listening on socket for fd handoff: (%d) %s\n", - ret_fd, filename_out); + ret_fd, + filename_out); #endif return ret_fd; @@ -356,7 +359,7 @@ do_request_fd_handoff_socket(mach_port_t port, string_t filename) launchd_socket_handed_off = 1; - handoff_data = (socket_handoff_t *) calloc(1, sizeof(socket_handoff_t)); + handoff_data = (socket_handoff_t *)calloc(1, sizeof(socket_handoff_t)); if (!handoff_data) { ErrorF("X11.app: Error allocating memory for handoff_data\n"); return KERN_FAILURE; @@ -371,17 +374,17 @@ do_request_fd_handoff_socket(mach_port_t port, string_t filename) strlcpy(filename, handoff_data->filename, STRING_T_SIZE); #ifdef HAVE_LIBDISPATCH - dispatch_async(dispatch_get_global_queue - (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ { - socket_handoff(handoff_data);} - ); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, + 0), ^ { + socket_handoff(handoff_data); + }); #else create_thread(socket_handoff_thread, handoff_data); #endif #ifdef DEBUG - ErrorF - ("X11.app: Thread created for handoff. Returning success to tell caller to connect and push the fd.\n"); + ErrorF( + "X11.app: Thread created for handoff. Returning success to tell caller to connect and push the fd.\n"); #endif return KERN_SUCCESS; @@ -398,7 +401,8 @@ do_request_pid(mach_port_t port, int *my_pid) kern_return_t do_start_x11_server(mach_port_t port, string_array_t argv, mach_msg_type_number_t argvCnt, - string_array_t envp, mach_msg_type_number_t envpCnt) + string_array_t envp, + mach_msg_type_number_t envpCnt) { /* And now back to char ** */ char **_argv = alloca((argvCnt + 1) * sizeof(char *)); @@ -420,7 +424,7 @@ do_start_x11_server(mach_port_t port, string_array_t argv, ErrorF("X11.app: do_start_x11_server(): argc=%d\n", argvCnt); for (i = 0; i < argvCnt; i++) { _argv[i] = argv[i]; - ErrorF("\targv[%u] = %s\n", (unsigned) i, argv[i]); + ErrorF("\targv[%u] = %s\n", (unsigned)i, argv[i]); } _argv[argvCnt] = NULL; @@ -451,14 +455,13 @@ startup_trigger(int argc, char **argv, char **envp) /* We need to count envp */ int envpc; - - for (envpc = 0; envp[envpc]; envpc++); + for (envpc = 0; envp[envpc]; envpc++) ; /* We have fixed-size string lengths due to limitations in IPC, * so we need to copy our argv and envp. */ - newargv = (string_array_t) alloca(argc * sizeof(string_t)); - newenvp = (string_array_t) alloca(envpc * sizeof(string_t)); + newargv = (string_array_t)alloca(argc * sizeof(string_t)); + newenvp = (string_array_t)alloca(envpc * sizeof(string_t)); if (!newargv || !newenvp) { ErrorF("Memory allocation failure\n"); @@ -476,10 +479,11 @@ startup_trigger(int argc, char **argv, char **envp) if (kr != KERN_SUCCESS) { #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 ErrorF("bootstrap_look_up(%s): %s\n", server_bootstrap_name, - bootstrap_strerror(kr)); + bootstrap_strerror( + kr)); #else ErrorF("bootstrap_look_up(%s): %ul\n", server_bootstrap_name, - (unsigned long) kr); + (unsigned long)kr); #endif exit(EXIT_FAILURE); } @@ -508,14 +512,14 @@ startup_trigger(int argc, char **argv, char **envp) /* Start the server */ if ((s = getenv("DISPLAY"))) { - ErrorF - ("X11.app: Could not connect to server (DISPLAY=\"%s\", unsetting). Starting X server.\n", - s); + ErrorF( + "X11.app: Could not connect to server (DISPLAY=\"%s\", unsetting). Starting X server.\n", + s); unsetenv("DISPLAY"); } else { - ErrorF - ("X11.app: Could not connect to server (DISPLAY is not set). Starting X server.\n"); + ErrorF( + "X11.app: Could not connect to server (DISPLAY is not set). Starting X server.\n"); } return execute(pref_startx_script); } @@ -530,7 +534,8 @@ ensure_path(const char *dir) temp = getenv("PATH"); if (temp == NULL || temp[0] == 0) { snprintf(buf, sizeof(buf), - "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:%s", dir); + "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:%s", + dir); setenv("PATH", buf, TRUE); } else if (strnstr(temp, X11BINDIR, sizeof(temp)) == NULL) { @@ -574,10 +579,8 @@ setup_env(void) * quartz-wm and the Xquartz stub's MachIPC) */ CFBundleRef bundle = CFBundleGetMainBundle(); - if (bundle) { CFStringRef pd = CFBundleGetIdentifier(bundle); - if (pd) { pds = CFStringGetCStringPtr(pd, 0); } @@ -609,22 +612,22 @@ setup_env(void) if (disp) { /* s = basename(disp) */ const char *d, *s; - for (s = NULL, d = disp; *d; d++) { if (*d == '/') s = d + 1; } if (s && *s) { - if (strcmp(bundle_id_prefix, "org.x") == 0 && strcmp(s, ":0") == 0) { - ErrorF - ("X11.app: Detected old style launchd DISPLAY, please update xinit.\n"); + if (strcmp(bundle_id_prefix, + "org.x") == 0 && strcmp(s, ":0") == 0) { + ErrorF( + "X11.app: Detected old style launchd DISPLAY, please update xinit.\n"); } else { - temp = (char *) malloc(sizeof(char) * len); + temp = (char *)malloc(sizeof(char) * len); if (!temp) { - ErrorF - ("X11.app: Memory allocation error creating space for socket name test.\n"); + ErrorF( + "X11.app: Memory allocation error creating space for socket name test.\n"); exit(1); } strlcpy(temp, bundle_id_prefix, len); @@ -632,9 +635,9 @@ setup_env(void) if (strcmp(temp, s) != 0) { /* If we don't have a match, unset it. */ - ErrorF - ("X11.app: DISPLAY (\"%s\") does not match our id (\"%s\"), unsetting.\n", - disp, bundle_id_prefix); + ErrorF( + "X11.app: DISPLAY (\"%s\") does not match our id (\"%s\"), unsetting.\n", + disp, bundle_id_prefix); unsetenv("DISPLAY"); } free(temp); @@ -642,8 +645,8 @@ setup_env(void) } else { /* The DISPLAY environment variable is not formatted like a launchd socket, so reset. */ - ErrorF - ("X11.app: DISPLAY does not look like a launchd set variable, unsetting.\n"); + ErrorF( + "X11.app: DISPLAY does not look like a launchd set variable, unsetting.\n"); unsetenv("DISPLAY"); } } @@ -679,7 +682,7 @@ main(int argc, char **argv, char **envp) ErrorF("X11.app: main(): argc=%d\n", argc); for (i = 0; i < argc; i++) { - ErrorF("\targv[%u] = %s\n", (unsigned) i, argv[i]); + ErrorF("\targv[%u] = %s\n", (unsigned)i, argv[i]); if (!strcmp(argv[i], "--listenonly")) { listenOnly = TRUE; } @@ -704,26 +707,26 @@ main(int argc, char **argv, char **envp) pref_login_shell = command_from_prefs("login_shell", DEFAULT_SHELL); assert(pref_login_shell); - pref_startx_script = - command_from_prefs("startx_script", DEFAULT_STARTX); + pref_startx_script = command_from_prefs("startx_script", + DEFAULT_STARTX); assert(pref_startx_script); /* Do the fork-twice trick to avoid having to reap zombies */ child1 = fork(); switch (child1) { - case -1: /* error */ + case -1: /* error */ FatalError("fork() failed: %s\n", strerror(errno)); - case 0: /* child1 */ + case 0: /* child1 */ child2 = fork(); switch (child2) { int max_files; - case -1: /* error */ + case -1: /* error */ FatalError("fork() failed: %s\n", strerror(errno)); - case 0: /* child2 */ + case 0: /* child2 */ /* close all open files except for standard streams */ max_files = sysconf(_SC_OPEN_MAX); for (i = 3; i < max_files; i++) @@ -735,12 +738,12 @@ main(int argc, char **argv, char **envp) return startup_trigger(argc, argv, envp); - default: /* parent (child1) */ + default: /* parent (child1) */ _exit(0); } break; - default: /* parent */ + default: /* parent */ waitpid(child1, &status, 0); } @@ -773,10 +776,10 @@ execute(const char *command) ErrorF("X11.app: Launching %s:\n", command); for (p = newargv; *p; p++) { - ErrorF("\targv[%ld] = %s\n", (long int) (p - newargv), *p); + ErrorF("\targv[%ld] = %s\n", (long int)(p - newargv), *p); } - execvp(newargv[0], (char *const *) newargv); + execvp(newargv[0], (char *const *)newargv); perror("X11.app: Couldn't exec."); return 1; } @@ -797,13 +800,13 @@ command_from_prefs(const char *key, const char *default_value) if (!cfKey) return NULL; - PlistRef = - CFPreferencesCopyAppValue(cfKey, kCFPreferencesCurrentApplication); + PlistRef = CFPreferencesCopyAppValue(cfKey, + kCFPreferencesCurrentApplication); - if ((PlistRef == NULL) || (CFGetTypeID(PlistRef) != CFStringGetTypeID())) { - CFStringRef cfDefaultValue = - CFStringCreateWithCString(NULL, default_value, - kCFStringEncodingASCII); + if ((PlistRef == NULL) || + (CFGetTypeID(PlistRef) != CFStringGetTypeID())) { + CFStringRef cfDefaultValue = CFStringCreateWithCString( + NULL, default_value, kCFStringEncodingASCII); int len = strlen(default_value) + 1; if (!cfDefaultValue) @@ -814,22 +817,21 @@ command_from_prefs(const char *key, const char *default_value) CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication); CFRelease(cfDefaultValue); - command = (char *) malloc(len * sizeof(char)); + command = (char *)malloc(len * sizeof(char)); if (!command) goto command_from_prefs_out; strcpy(command, default_value); } else { - int len = CFStringGetLength((CFStringRef) PlistRef) + 1; - - command = (char *) malloc(len * sizeof(char)); + int len = CFStringGetLength((CFStringRef)PlistRef) + 1; + command = (char *)malloc(len * sizeof(char)); if (!command) goto command_from_prefs_out; - CFStringGetCString((CFStringRef) PlistRef, command, len, + CFStringGetCString((CFStringRef)PlistRef, command, len, kCFStringEncodingASCII); } - command_from_prefs_out: +command_from_prefs_out: if (PlistRef) CFRelease(PlistRef); if (cfKey) diff --git a/xorg-server/hw/xquartz/mach-startup/launchd_fd.c b/xorg-server/hw/xquartz/mach-startup/launchd_fd.c index fd1d276e3..15866cc42 100644 --- a/xorg-server/hw/xquartz/mach-startup/launchd_fd.c +++ b/xorg-server/hw/xquartz/mach-startup/launchd_fd.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2008 Apple Inc. +/* Copyright (c) 2008-2012 Apple Inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files @@ -45,30 +45,35 @@ launchd_display_fd(void) launch_data_t listening_fd_array, listening_fd; /* Get launchd fd */ - if ((checkin_request = launch_data_new_string(LAUNCH_KEY_CHECKIN)) == NULL) { - asl_log(aslc, NULL, ASL_LEVEL_ERR, - "launch_data_new_string(\"" LAUNCH_KEY_CHECKIN - "\") Unable to create string.\n"); + if ((checkin_request = launch_data_new_string(LAUNCH_KEY_CHECKIN)) == + NULL) { + asl_log( + aslc, NULL, ASL_LEVEL_ERR, + "launch_data_new_string(\"" LAUNCH_KEY_CHECKIN + "\") Unable to create string.\n"); return ERROR_FD; } if ((checkin_response = launch_msg(checkin_request)) == NULL) { asl_log(aslc, NULL, ASL_LEVEL_WARNING, "launch_msg(\"" LAUNCH_KEY_CHECKIN "\") IPC failure: %s\n", - strerror(errno)); + strerror( + errno)); return ERROR_FD; } if (LAUNCH_DATA_ERRNO == launch_data_get_type(checkin_response)) { // ignore EACCES, which is common if we weren't started by launchd if (launch_data_get_errno(checkin_response) != EACCES) - asl_log(aslc, NULL, ASL_LEVEL_ERR, "launchd check-in failed: %s\n", - strerror(launch_data_get_errno(checkin_response))); + asl_log(aslc, NULL, ASL_LEVEL_ERR, + "launchd check-in failed: %s\n", + strerror(launch_data_get_errno( + checkin_response))); return ERROR_FD; } - sockets_dict = - launch_data_dict_lookup(checkin_response, LAUNCH_JOBKEY_SOCKETS); + sockets_dict = launch_data_dict_lookup(checkin_response, + LAUNCH_JOBKEY_SOCKETS); if (NULL == sockets_dict) { asl_log(aslc, NULL, ASL_LEVEL_ERR, "launchd check-in: no sockets found to answer requests on!\n"); @@ -81,14 +86,15 @@ launchd_display_fd(void) return ERROR_FD; } - listening_fd_array = - launch_data_dict_lookup(sockets_dict, BUNDLE_ID_PREFIX ":0"); + listening_fd_array = launch_data_dict_lookup(sockets_dict, + BUNDLE_ID_PREFIX ":0"); if (NULL == listening_fd_array) { listening_fd_array = launch_data_dict_lookup(sockets_dict, ":0"); if (NULL == listening_fd_array) { - asl_log(aslc, NULL, ASL_LEVEL_ERR, - "launchd check-in: No known sockets found to answer requests on! \"%s:0\" and \":0\" failed.\n", - BUNDLE_ID_PREFIX); + asl_log( + aslc, NULL, ASL_LEVEL_ERR, + "launchd check-in: No known sockets found to answer requests on! \"%s:0\" and \":0\" failed.\n", + BUNDLE_ID_PREFIX); return ERROR_FD; } } @@ -96,7 +102,8 @@ launchd_display_fd(void) if (launch_data_array_get_count(listening_fd_array) != 1) { asl_log(aslc, NULL, ASL_LEVEL_ERR, "launchd check-in: Expected 1 socket from launchd, got %u)\n", - (unsigned) launch_data_array_get_count(listening_fd_array)); + (unsigned)launch_data_array_get_count( + listening_fd_array)); return ERROR_FD; } diff --git a/xorg-server/hw/xquartz/mach-startup/launchd_fd.h b/xorg-server/hw/xquartz/mach-startup/launchd_fd.h index 12caf7193..6af03a81d 100644 --- a/xorg-server/hw/xquartz/mach-startup/launchd_fd.h +++ b/xorg-server/hw/xquartz/mach-startup/launchd_fd.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2008 Apple Inc. +/* Copyright (c) 2008-2012 Apple Inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files @@ -31,6 +31,7 @@ #define ERROR_FD -1 -int launchd_display_fd(void); +int +launchd_display_fd(void); #endif /* _XQUARTZ_LAUNCHD_FD_H_ */ diff --git a/xorg-server/hw/xquartz/mach-startup/stub.c b/xorg-server/hw/xquartz/mach-startup/stub.c index f457aaba0..b5a3168ca 100644 --- a/xorg-server/hw/xquartz/mach-startup/stub.c +++ b/xorg-server/hw/xquartz/mach-startup/stub.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2008 Apple Inc. +/* Copyright (c) 2008-2012 Apple Inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files @@ -40,7 +40,7 @@ #include <sys/socket.h> #include <sys/un.h> -#define kX11AppBundleId BUNDLE_ID_PREFIX".X11" +#define kX11AppBundleId BUNDLE_ID_PREFIX ".X11" #define kX11AppBundlePath "/Contents/MacOS/X11" #include <mach/mach.h> @@ -65,36 +65,43 @@ set_x11_path(void) CFURLRef appURL = NULL; OSStatus osstatus = - LSFindApplicationForInfo(kLSUnknownCreator, CFSTR(kX11AppBundleId), nil, - nil, &appURL); + LSFindApplicationForInfo(kLSUnknownCreator, CFSTR( + kX11AppBundleId), nil, nil, &appURL); switch (osstatus) { case noErr: if (appURL == NULL) { - asl_log(aslc, NULL, ASL_LEVEL_ERR, - "Xquartz: Invalid response from LSFindApplicationForInfo(%s)", - kX11AppBundleId); + asl_log( + aslc, NULL, ASL_LEVEL_ERR, + "Xquartz: Invalid response from LSFindApplicationForInfo(%s)", + kX11AppBundleId); exit(1); } - if (!CFURLGetFileSystemRepresentation - (appURL, true, (unsigned char *) x11_path, sizeof(x11_path))) { + if (!CFURLGetFileSystemRepresentation(appURL, true, + (unsigned char *)x11_path, + sizeof(x11_path))) { asl_log(aslc, NULL, ASL_LEVEL_ERR, - "Xquartz: Error resolving URL for %s", kX11AppBundleId); + "Xquartz: Error resolving URL for %s", + kX11AppBundleId); exit(3); } strlcat(x11_path, kX11AppBundlePath, sizeof(x11_path)); asl_log(aslc, NULL, ASL_LEVEL_INFO, "Xquartz: X11.app = %s", x11_path); break; + case kLSApplicationNotFoundErr: asl_log(aslc, NULL, ASL_LEVEL_ERR, - "Xquartz: Unable to find application for %s", kX11AppBundleId); + "Xquartz: Unable to find application for %s", + kX11AppBundleId); exit(10); + default: asl_log(aslc, NULL, ASL_LEVEL_ERR, "Xquartz: Unable to find application for %s, error code = %d", - kX11AppBundleId, (int) osstatus); + kX11AppBundleId, + (int)osstatus); exit(11); } #else @@ -117,23 +124,25 @@ connect_to_socket(const char *filename) servaddr_un.sun_family = AF_UNIX; strlcpy(servaddr_un.sun_path, filename, sizeof(servaddr_un.sun_path)); - servaddr = (struct sockaddr *) &servaddr_un; - servaddr_len = - sizeof(struct sockaddr_un) - sizeof(servaddr_un.sun_path) + - strlen(filename); + servaddr = (struct sockaddr *)&servaddr_un; + servaddr_len = sizeof(struct sockaddr_un) - + sizeof(servaddr_un.sun_path) + strlen(filename); ret_fd = socket(PF_UNIX, SOCK_STREAM, 0); if (ret_fd == -1) { asl_log(aslc, NULL, ASL_LEVEL_ERR, "Xquartz: Failed to create socket: %s - %s", filename, - strerror(errno)); + strerror( + errno)); return -1; } if (connect(ret_fd, servaddr, servaddr_len) < 0) { asl_log(aslc, NULL, ASL_LEVEL_ERR, - "Xquartz: Failed to connect to socket: %s - %d - %s", filename, - errno, strerror(errno)); + "Xquartz: Failed to connect to socket: %s - %d - %s", + filename, errno, + strerror( + errno)); close(ret_fd); return -1; } @@ -173,12 +182,13 @@ send_fd_handoff(int connected_fd, int launchd_fd) msg.msg_controllen = cmsg->cmsg_len; - *((int *) CMSG_DATA(cmsg)) = launchd_fd; + *((int *)CMSG_DATA(cmsg)) = launchd_fd; if (sendmsg(connected_fd, &msg, 0) < 0) { - asl_log(aslc, NULL, ASL_LEVEL_ERR, - "Xquartz: Error sending $DISPLAY file descriptor over fd %d: %d -- %s", - connected_fd, errno, strerror(errno)); + asl_log( + aslc, NULL, ASL_LEVEL_ERR, + "Xquartz: Error sending $DISPLAY file descriptor over fd %d: %d -- %s", + connected_fd, errno, strerror(errno)); return; } @@ -187,7 +197,7 @@ send_fd_handoff(int connected_fd, int launchd_fd) close(connected_fd); } -__attribute__ ((__noreturn__)) +__attribute__((__noreturn__)) static void signal_handler(int sig) { @@ -256,18 +266,19 @@ main(int argc, char **argv, char **envp) child = fork(); if (child == -1) { asl_log(aslc, NULL, ASL_LEVEL_ERR, "Xquartz: Could not fork: %s", - strerror(errno)); + strerror( + errno)); return EXIT_FAILURE; } if (child == 0) { char *_argv[3]; - _argv[0] = x11_path; _argv[1] = "--listenonly"; _argv[2] = NULL; asl_log(aslc, NULL, ASL_LEVEL_NOTICE, - "Xquartz: Starting X server: %s --listenonly", x11_path); + "Xquartz: Starting X server: %s --listenonly", + x11_path); return execvp(x11_path, _argv); } @@ -282,10 +293,12 @@ main(int argc, char **argv, char **envp) if (kr != KERN_SUCCESS) { #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 asl_log(aslc, NULL, ASL_LEVEL_ERR, - "Xquartz: bootstrap_look_up(): %s", bootstrap_strerror(kr)); + "Xquartz: bootstrap_look_up(): %s", bootstrap_strerror( + kr)); #else asl_log(aslc, NULL, ASL_LEVEL_ERR, - "Xquartz: bootstrap_look_up(): %ul", (unsigned long) kr); + "Xquartz: bootstrap_look_up(): %ul", + (unsigned long)kr); #endif return EXIT_FAILURE; } @@ -300,11 +313,13 @@ main(int argc, char **argv, char **envp) int handoff_fd = -1; for (try = 0, try_max = 5; try < try_max; try++) { - if (request_fd_handoff_socket(mp, handoff_socket_filename) != + if (request_fd_handoff_socket(mp, + handoff_socket_filename) != KERN_SUCCESS) { - asl_log(aslc, NULL, ASL_LEVEL_INFO, - "Xquartz: Failed to request a socket from the server to send the $DISPLAY fd over (try %d of %d)", - (int) try + 1, (int) try_max); + asl_log( + aslc, NULL, ASL_LEVEL_INFO, + "Xquartz: Failed to request a socket from the server to send the $DISPLAY fd over (try %d of %d)", + (int)try + 1, (int)try_max); continue; } @@ -312,14 +327,16 @@ main(int argc, char **argv, char **envp) if (handoff_fd == -1) { asl_log(aslc, NULL, ASL_LEVEL_ERR, "Xquartz: Failed to connect to socket (try %d of %d)", - (int) try + 1, (int) try_max); + (int)try + 1, + (int)try_max); continue; } - asl_log(aslc, NULL, ASL_LEVEL_INFO, - "Xquartz: Handoff connection established (try %d of %d) on fd %d, \"%s\". Sending message.", - (int) try + 1, (int) try_max, handoff_fd, - handoff_socket_filename); + asl_log( + aslc, NULL, ASL_LEVEL_INFO, + "Xquartz: Handoff connection established (try %d of %d) on fd %d, \"%s\". Sending message.", + (int)try + 1, (int)try_max, handoff_fd, + handoff_socket_filename); send_fd_handoff(handoff_fd, launchd_fd); close(handoff_fd); break; @@ -327,13 +344,13 @@ main(int argc, char **argv, char **envp) } /* Count envp */ - for (envpc = 0; envp[envpc]; envpc++); + for (envpc = 0; envp[envpc]; envpc++) ; /* We have fixed-size string lengths due to limitations in IPC, * so we need to copy our argv and envp. */ - newargv = (string_array_t) calloc((1 + argc), sizeof(string_t)); - newenvp = (string_array_t) calloc((1 + envpc), sizeof(string_t)); + newargv = (string_array_t)calloc((1 + argc), sizeof(string_t)); + newenvp = (string_array_t)calloc((1 + envpc), sizeof(string_t)); if (!newargv || !newenvp) { asl_log(aslc, NULL, ASL_LEVEL_ERR, @@ -355,7 +372,8 @@ main(int argc, char **argv, char **envp) if (kr != KERN_SUCCESS) { asl_log(aslc, NULL, ASL_LEVEL_ERR, "Xquartz: start_x11_server: %s", - mach_error_string(kr)); + mach_error_string( + kr)); return EXIT_FAILURE; } return EXIT_SUCCESS; diff --git a/xorg-server/hw/xquartz/pbproxy/app-main.m b/xorg-server/hw/xquartz/pbproxy/app-main.m index c061418d8..37b578223 100644 --- a/xorg-server/hw/xquartz/pbproxy/app-main.m +++ b/xorg-server/hw/xquartz/pbproxy/app-main.m @@ -1,37 +1,38 @@ /* app-main.m - Copyright (c) 2002, 2008 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. */ #include "pbproxy.h" #import "x-selection.h" #include <pthread.h> -#include <unistd.h> /*for getpid */ +#include <unistd.h> /*for getpid*/ #include <Cocoa/Cocoa.h> static const char *app_prefs_domain = BUNDLE_ID_PREFIX ".xpbproxy"; @@ -50,13 +51,14 @@ signal_handler(int sig) case SIGHUP: xpbproxy_prefs_reload = YES; break; + default: _exit(EXIT_SUCCESS); } } void -ErrorF(const char *f, ...) +ErrorF(const char * f, ...) { va_list args; @@ -68,7 +70,8 @@ ErrorF(const char *f, ...) /* TODO: Have this actually log to ASL */ void xq_asl_log(int level, const char *subsystem, const char *file, - const char *function, int line, const char *fmt, ...) + const char *function, int line, const char *fmt, + ...) { #ifdef DEBUG va_list args; @@ -99,11 +102,12 @@ main(int argc, const char *argv[]) app_prefs_domain = argv[++i]; } else if (strcmp(argv[i], "--help") == 0) { - ErrorF("usage: xpbproxy OPTIONS\n" - "Pasteboard proxying for X11.\n\n" - "--prefs-domain <domain> Change the domain used for reading preferences\n" - " (default: %s)\n", - app_prefs_domain); + ErrorF( + "usage: xpbproxy OPTIONS\n" + "Pasteboard proxying for X11.\n\n" + "--prefs-domain <domain> Change the domain used for reading preferences\n" + " (default: %s)\n", + app_prefs_domain); return 0; } else { @@ -113,9 +117,8 @@ main(int argc, const char *argv[]) } } - app_prefs_domain_cfstr = - CFStringCreateWithCString(NULL, app_prefs_domain, - kCFStringEncodingUTF8); + app_prefs_domain_cfstr = CFStringCreateWithCString(NULL, app_prefs_domain, + kCFStringEncodingUTF8); signal(SIGINT, signal_handler); signal(SIGTERM, signal_handler); diff --git a/xorg-server/hw/xquartz/pbproxy/main.m b/xorg-server/hw/xquartz/pbproxy/main.m index b52aec8a4..abedb0839 100644 --- a/xorg-server/hw/xquartz/pbproxy/main.m +++ b/xorg-server/hw/xquartz/pbproxy/main.m @@ -1,30 +1,31 @@ /* main.m - Copyright (c) 2002, 2008 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. */ #include "pbproxy.h" @@ -64,7 +65,7 @@ wait_for_server_init(void) } static int -x_io_error_handler(Display * dpy) +x_io_error_handler(Display *dpy) { /* We lost our connection to the server. */ @@ -85,7 +86,7 @@ x_io_error_handler(Display * dpy) } static int -x_error_handler(Display * dpy, XErrorEvent * errevent) +x_error_handler(Display *dpy, XErrorEvent *errevent) { return 0; } @@ -93,7 +94,7 @@ x_error_handler(Display * dpy, XErrorEvent * errevent) int xpbproxy_run(void) { - NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init]; + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; size_t i; wait_for_server_init(); @@ -103,7 +104,6 @@ xpbproxy_run(void) if (!xpbproxy_dpy && display) { char _display[32]; - snprintf(_display, sizeof(_display), ":%s", display); setenv("DISPLAY", _display, TRUE); @@ -136,7 +136,7 @@ xpbproxy_run(void) XAppleWMSelectInput(xpbproxy_dpy, AppleWMActivationNotifyMask | AppleWMPasteboardNotifyMask); - _selection_object =[[x_selection alloc] init]; + _selection_object = [[x_selection alloc] init]; if (!xpbproxy_input_register()) { [pool release]; diff --git a/xorg-server/hw/xquartz/pbproxy/pbproxy.h b/xorg-server/hw/xquartz/pbproxy/pbproxy.h index bdb15aeca..c5a07f2d0 100644 --- a/xorg-server/hw/xquartz/pbproxy/pbproxy.h +++ b/xorg-server/hw/xquartz/pbproxy/pbproxy.h @@ -1,31 +1,32 @@ /* pbproxy.h - Copyright (c) 2002, 2008 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. -*/ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifndef PBPROXY_H #define PBPROXY_H 1 @@ -65,11 +66,16 @@ extern BOOL xpbproxy_is_standalone; #endif /* from main.m */ -extern void xpbproxy_set_is_active(BOOL state); -extern BOOL xpbproxy_get_is_active(void); -extern id xpbproxy_selection_object(void); -extern Time xpbproxy_current_timestamp(void); -extern int xpbproxy_run(void); +extern void +xpbproxy_set_is_active(BOOL state); +extern BOOL +xpbproxy_get_is_active(void); +extern id +xpbproxy_selection_object(void); +extern Time +xpbproxy_current_timestamp(void); +extern int +xpbproxy_run(void); extern Display *xpbproxy_dpy; extern int xpbproxy_apple_wm_event_base, xpbproxy_apple_wm_error_base; @@ -77,21 +83,28 @@ extern int xpbproxy_xfixes_event_base, xpbproxy_xfixes_error_base; extern BOOL xpbproxy_have_xfixes; /* from x-input.m */ -extern BOOL xpbproxy_input_register(void); +extern BOOL +xpbproxy_input_register(void); /* os/log.c or app-main.m */ extern void -ErrorF(const char *f, ...) -_X_ATTRIBUTE_PRINTF(1, 2); +ErrorF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1, 2); /* from darwin.h */ _X_ATTRIBUTE_PRINTF(6, 7) extern void xq_asl_log(int level, const char *subsystem, const char *file, - const char *function, int line, const char *fmt, ...); - -#define ASL_LOG(level, subsystem, msg, args...) xq_asl_log(level, subsystem, __FILE__, __FUNCTION__, __LINE__, msg, ##args) -#define DebugF(msg, args...) ASL_LOG(ASL_LEVEL_DEBUG, "xpbproxy", msg, ##args) -#define TRACE() DebugF("TRACE") - -#endif /* PBPROXY_H */ + const char *function, int line, const char *fmt, + ...); + +#define ASL_LOG(level, subsystem, msg, args ...) xq_asl_log(level, subsystem, \ + __FILE__, \ + __FUNCTION__, \ + __LINE__, msg, \ + ## args) +#define DebugF(msg, args ...) ASL_LOG(ASL_LEVEL_DEBUG, \ + "xpbproxy", msg, \ + ## args) +#define TRACE() DebugF("TRACE") + +#endif /* PBPROXY_H */ diff --git a/xorg-server/hw/xquartz/pbproxy/x-input.m b/xorg-server/hw/xquartz/pbproxy/x-input.m index 134bf59d8..71b46a8b3 100644 --- a/xorg-server/hw/xquartz/pbproxy/x-input.m +++ b/xorg-server/hw/xquartz/pbproxy/x-input.m @@ -1,30 +1,31 @@ /* x-input.m -- event handling - Copyright (c) 2002, 2008 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. */ #include "pbproxy.h" @@ -49,16 +50,17 @@ BOOL xpbproxy_prefs_reload = NO; static Time last_activation_time; static void -x_event_apple_wm_notify(XAppleWMNotifyEvent * e) +x_event_apple_wm_notify(XAppleWMNotifyEvent *e) { int type = e->type - xpbproxy_apple_wm_event_base; int kind = e->kind; /* We want to reload prefs even if we're not active */ - if (type == AppleWMActivationNotify && kind == AppleWMReloadPreferences) - [xpbproxy_selection_object()reload_preferences]; + if (type == AppleWMActivationNotify && + kind == AppleWMReloadPreferences) + [xpbproxy_selection_object ()reload_preferences]; - if (![xpbproxy_selection_object()is_active]) + if (![xpbproxy_selection_object ()is_active]) return; switch (type) { @@ -66,11 +68,11 @@ x_event_apple_wm_notify(XAppleWMNotifyEvent * e) switch (kind) { case AppleWMIsActive: last_activation_time = e->time; - [xpbproxy_selection_object()x_active:e->time]; + [xpbproxy_selection_object () x_active:e->time]; break; case AppleWMIsInactive: - [xpbproxy_selection_object()x_inactive:e->time]; + [xpbproxy_selection_object () x_inactive:e->time]; break; } break; @@ -78,7 +80,7 @@ x_event_apple_wm_notify(XAppleWMNotifyEvent * e) case AppleWMPasteboardNotify: switch (kind) { case AppleWMCopyToPasteboard: - [xpbproxy_selection_object()x_copy:e->time]; + [xpbproxy_selection_object () x_copy:e->time]; } break; } @@ -87,7 +89,7 @@ x_event_apple_wm_notify(XAppleWMNotifyEvent * e) static void xpbproxy_process_xevents(void) { - NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init]; + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; if (pool == nil) { ErrorF("unable to allocate/init auto release pool!\n"); @@ -101,31 +103,32 @@ xpbproxy_process_xevents(void) switch (e.type) { case SelectionClear: - if ([xpbproxy_selection_object()is_active]) - [xpbproxy_selection_object()clear_event:&e.xselectionclear]; + if ([xpbproxy_selection_object ()is_active]) + [xpbproxy_selection_object () clear_event:&e.xselectionclear]; break; case SelectionRequest: - [xpbproxy_selection_object()request_event:&e.xselectionrequest]; + [xpbproxy_selection_object () request_event:&e.xselectionrequest]; break; case SelectionNotify: - [xpbproxy_selection_object()notify_event:&e.xselection]; + [xpbproxy_selection_object () notify_event:&e.xselection]; break; case PropertyNotify: - [xpbproxy_selection_object()property_event:&e.xproperty]; + [xpbproxy_selection_object () property_event:&e.xproperty]; break; default: if (e.type >= xpbproxy_apple_wm_event_base && - e.type < xpbproxy_apple_wm_event_base + AppleWMNumberEvents) { - x_event_apple_wm_notify((XAppleWMNotifyEvent *) & e); + e.type < xpbproxy_apple_wm_event_base + + AppleWMNumberEvents) { + x_event_apple_wm_notify((XAppleWMNotifyEvent *)&e); } - else if (e.type == - xpbproxy_xfixes_event_base + XFixesSelectionNotify) { - [xpbproxy_selection_object()xfixes_selection_notify:(XFixesSelectionNotifyEvent *) & - e]; + else if (e.type == xpbproxy_xfixes_event_base + + XFixesSelectionNotify) { + [xpbproxy_selection_object () xfixes_selection_notify:( + XFixesSelectionNotifyEvent *)&e]; } break; } @@ -138,8 +141,8 @@ xpbproxy_process_xevents(void) static BOOL add_input_socket(int sock, CFOptionFlags callback_types, - CFSocketCallBack callback, const CFSocketContext * ctx, - CFRunLoopSourceRef * cf_source) + CFSocketCallBack callback, const CFSocketContext *ctx, + CFRunLoopSourceRef *cf_source) { CFSocketRef cf_sock; @@ -150,7 +153,8 @@ add_input_socket(int sock, CFOptionFlags callback_types, return FALSE; } - *cf_source = CFSocketCreateRunLoopSource(kCFAllocatorDefault, cf_sock, 0); + *cf_source = CFSocketCreateRunLoopSource(kCFAllocatorDefault, + cf_sock, 0); CFRelease(cf_sock); if (*cf_source == NULL) @@ -168,7 +172,7 @@ x_input_callback(CFSocketRef sock, CFSocketCallBackType type, #ifdef STANDALONE_XPBPROXY if (xpbproxy_prefs_reload) { - [xpbproxy_selection_object()reload_preferences]; + [xpbproxy_selection_object ()reload_preferences]; xpbproxy_prefs_reload = NO; } #endif @@ -179,7 +183,7 @@ x_input_callback(CFSocketRef sock, CFSocketCallBackType type, BOOL xpbproxy_input_register(void) { - return add_input_socket(ConnectionNumber(xpbproxy_dpy), - kCFSocketReadCallBack, x_input_callback, NULL, - &xpbproxy_dpy_source); + return add_input_socket(ConnectionNumber( + xpbproxy_dpy), kCFSocketReadCallBack, + x_input_callback, NULL, &xpbproxy_dpy_source); } diff --git a/xorg-server/hw/xquartz/pbproxy/x-selection.h b/xorg-server/hw/xquartz/pbproxy/x-selection.h index f5c6c9bd5..38967dc45 100644 --- a/xorg-server/hw/xquartz/pbproxy/x-selection.h +++ b/xorg-server/hw/xquartz/pbproxy/x-selection.h @@ -1,32 +1,32 @@ /* x-selection.h -- proxies between NSPasteboard and X11 selections - - Copyright (c) 2002, 2008 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. -*/ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifndef X_SELECTION_H #define X_SELECTION_H 1 @@ -48,13 +48,15 @@ struct propdata { struct atom_list { Atom primary, clipboard, text, utf8_string, string, targets, multiple, - cstring, image_png, image_jpeg, incr, atom, clipboard_manager, - compound_text, atom_pair; + cstring, image_png, image_jpeg, incr, atom, clipboard_manager, + compound_text, atom_pair; }; - @interface x_selection:NSObject { +@interface x_selection : NSObject +{ @private - /* The unmapped window we use for fetching selections. */ + + /* The unmapped window we use for fetching selections. */ Window _selection_window; Atom request_atom; @@ -65,15 +67,14 @@ struct atom_list { Atom selection; } pending; - /* + /* * This is the number of times the user has requested a copy. - * Once the copy is completed, we --pending_copy, and if the + * Once the copy is completed, we --pending_copy, and if the * pending_copy is > 0 we do it again. */ int pending_copy; - - /* - * This is used for the same purpose as pending_copy, but for the + /* + * This is used for the same purpose as pending_copy, but for the * CLIPBOARD. It also prevents a race with INCR transfers. */ int pending_clipboard; @@ -81,30 +82,30 @@ struct atom_list { struct atom_list atoms[1]; } - -(void) x_active:(Time) timestamp; - -(void) x_inactive:(Time) timestamp; - - -(void) x_copy:(Time) timestamp; - - -(void) clear_event:(XSelectionClearEvent *) e; - -(void) request_event:(XSelectionRequestEvent *) e; - -(void) notify_event:(XSelectionEvent *) e; - -(void) property_event:(XPropertyEvent *) e; - -(void) xfixes_selection_notify:(XFixesSelectionNotifyEvent *) e; - -(void) handle_selection:(Atom) -selection type:(Atom) -type propdata:(struct propdata *) pdata; - --(void) claim_clipboard; - -(BOOL) set_clipboard_manager_status:(BOOL) value; --(void) own_clipboard; - -(void) copy_completed:(Atom) selection; - --(void) reload_preferences; --(BOOL) is_active; - -(void) send_none:(XSelectionRequestEvent *) e; +- (void)x_active:(Time)timestamp; +- (void)x_inactive:(Time)timestamp; + +- (void)x_copy:(Time)timestamp; + +- (void)clear_event:(XSelectionClearEvent *)e; +- (void)request_event:(XSelectionRequestEvent *)e; +- (void)notify_event:(XSelectionEvent *)e; +- (void)property_event:(XPropertyEvent *)e; +- (void)xfixes_selection_notify:(XFixesSelectionNotifyEvent *)e; +- (void)handle_selection:(Atom) selection type:(Atom) type propdata:(struct + propdata + *)pdata; +- (void)claim_clipboard; +- (BOOL)set_clipboard_manager_status:(BOOL)value; +- (void)own_clipboard; +- (void)copy_completed:(Atom)selection; + +- (void)reload_preferences; +- (BOOL)is_active; +- (void)send_none:(XSelectionRequestEvent *)e; @end + /* main.m */ -extern x_selection *_selection_object; +extern x_selection * _selection_object; -#endif /* X_SELECTION_H */ +#endif /* X_SELECTION_H */ diff --git a/xorg-server/hw/xquartz/pbproxy/x-selection.m b/xorg-server/hw/xquartz/pbproxy/x-selection.m index 317aed073..13d5e13ad 100644 --- a/xorg-server/hw/xquartz/pbproxy/x-selection.m +++ b/xorg-server/hw/xquartz/pbproxy/x-selection.m @@ -1,32 +1,32 @@ /* x-selection.m -- proxies between NSPasteboard and X11 selections - - Copyright (c) 2002, 2008 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. -*/ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #import "x-selection.h" @@ -46,9 +46,9 @@ * case we take the PRIMARY selection, and set it as the NSPasteboard data. * * When an X11 client copies something to the CLIPBOARD, pbproxy greedily grabs - * the data, sets it as the NSPasteboard data, and finally sets itself as + * the data, sets it as the NSPasteboard data, and finally sets itself as * owner of the CLIPBOARD. - * + * * When an X11 window is activated we check to see if the NSPasteboard has * changed. If the NSPasteboard has changed, then we set pbproxy as owner * of the PRIMARY and CLIPBOARD and respond to requests for text and images. @@ -66,18 +66,20 @@ static struct { BOOL active; - BOOL primary_on_grab; /* This is provided as an option for people who - * want it and has issues that won't ever be - * addressed to make it *always* work. - */ + BOOL primary_on_grab; /* This is provided as an option for people who + * want it and has issues that won't ever be + * addressed to make it *always* work. + */ BOOL clipboard_to_pasteboard; BOOL pasteboard_to_primary; BOOL pasteboard_to_clipboard; -} pbproxy_prefs = { -YES, NO, YES, YES, YES}; +} pbproxy_prefs = { YES, NO, YES, YES, YES }; @implementation x_selection - static struct propdata null_propdata = { NULL, 0, 0 }; + +static struct propdata null_propdata = { + NULL, 0, 0 +}; #ifdef DEBUG static void @@ -107,7 +109,7 @@ prefs_get_bool(CFStringRef key, BOOL defaultValue) value = CFPreferencesGetAppBooleanValue(key, app_prefs_domain_cfstr, &ok); - return ok ? (BOOL) value : defaultValue; + return ok ? (BOOL)value : defaultValue; } static void @@ -124,8 +126,8 @@ free_propdata(struct propdata *pdata) } /* - * Return True if an error occurs. Return False if pdata has data - * and we finished. + * Return True if an error occurs. Return False if pdata has data + * and we finished. * The property is only deleted when bytesleft is 0 if delete is True. */ static Bool @@ -134,7 +136,6 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, { long offset = 0; unsigned long numitems, bytesleft = 0; - #ifdef TEST /* This is used to test the growth handling. */ unsigned long length = 4UL; @@ -201,7 +202,7 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, XFree(chunk); buf = newbuf; buflen = newbuflen; - /* offset is a multiple of 32 bits */ + /* offset is a multiple of 32 bits*/ offset += chunkbytesize / 4; } else { @@ -218,13 +219,14 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, pdata->length = buflen; pdata->format = format; - return /*success */ False; + return /*success*/ False; } /* Implementation methods */ /* This finds the preferred type from a TARGETS list.*/ - -(Atom) find_preferred:(struct propdata *) pdata { +- (Atom) find_preferred:(struct propdata *)pdata +{ Atom a = None; size_t i, step; Bool png = False, jpeg = False, utf8 = False, string = False; @@ -232,13 +234,13 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, TRACE(); if (pdata->format != 32) { - ErrorF - ("Atom list is expected to be formatted as an array of 32bit values.\n"); + ErrorF( + "Atom list is expected to be formatted as an array of 32bit values.\n"); return None; } for (i = 0, step = sizeof(long); i < pdata->length; i += step) { - a = (Atom) *(long *) (pdata->data + i); + a = (Atom) * (long *)(pdata->data + i); if (a == atoms->image_png) { png = True; @@ -254,7 +256,6 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, } else { char *type = XGetAtomName(xpbproxy_dpy, a); - if (type) { DebugF("Unhandled X11 mime type: %s", type); XFree(type); @@ -262,7 +263,7 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, } } - /*We prefer PNG over strings, and UTF8 over a Latin-1 string. */ + /*We prefer PNG over strings, and UTF8 over a Latin-1 string.*/ if (png) return atoms->image_png; @@ -275,12 +276,13 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, if (string) return atoms->string; - /* This is evidently something we don't know how to handle. */ + /* This is evidently something we don't know how to handle.*/ return None; } /* Return True if this is an INCR-style transfer. */ - -(Bool) is_incr_type:(XSelectionEvent *) e { +- (Bool) is_incr_type:(XSelectionEvent *)e +{ Atom seltype; int format; unsigned long numitems = 0UL, bytesleft = 0UL; @@ -289,8 +291,8 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, TRACE(); if (Success != XGetWindowProperty(xpbproxy_dpy, e->requestor, e->property, - /*offset */ 0L, /*length */ 4UL, - /*Delete */ False, + /*offset*/ 0L, /*length*/ 4UL, + /*Delete*/ False, AnyPropertyType, &seltype, &format, &numitems, &bytesleft, &chunk)) { return False; @@ -302,11 +304,12 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, return (seltype == atoms->incr) ? True : False; } -/* - * This should be called after a selection has been copied, - * or when the selection is unfinished before a transfer completes. +/* + * This should be called after a selection has been copied, + * or when the selection is unfinished before a transfer completes. */ --(void) release_pending { +- (void) release_pending +{ TRACE(); free_propdata(&pending.propdata); @@ -316,8 +319,8 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, /* Return True if an error occurs during an append.*/ /* Return False if the append succeeds. */ - -(Bool) append_to_pending:(struct propdata *) -pdata requestor:(Window) requestor +- (Bool) append_to_pending:(struct propdata *)pdata requestor:(Window) + requestor { unsigned char *newdata; size_t newlength; @@ -346,26 +349,28 @@ pdata requestor:(Window) requestor } /* Called when X11 becomes active (i.e. has key focus) */ - -(void) x_active:(Time) timestamp { +- (void) x_active:(Time)timestamp +{ static NSInteger changeCount; NSInteger countNow; NSPasteboard *pb; TRACE(); - pb =[NSPasteboard generalPasteboard]; + pb = [NSPasteboard generalPasteboard]; if (nil == pb) return; - countNow =[pb changeCount]; + countNow = [pb changeCount]; if (countNow != changeCount) { DebugF("changed pasteboard!\n"); changeCount = countNow; if (pbproxy_prefs.pasteboard_to_primary) { - XSetSelectionOwner(xpbproxy_dpy, atoms->primary, _selection_window, + XSetSelectionOwner(xpbproxy_dpy, atoms->primary, + _selection_window, CurrentTime); } @@ -375,8 +380,8 @@ pdata requestor:(Window) requestor } #if 0 - /*gstaplin: we should perhaps investigate something like this branch above... */ - if ([_pasteboard availableTypeFromArray:_known_types] != nil) { + /*gstaplin: we should perhaps investigate something like this branch above...*/ + if ([_pasteboard availableTypeFromArray: _known_types] != nil) { /* Pasteboard has data we should proxy; I think it makes sense to put it on both CLIPBOARD and PRIMARY */ @@ -389,12 +394,14 @@ pdata requestor:(Window) requestor } /* Called when X11 loses key focus */ - -(void) x_inactive:(Time) timestamp { +- (void) x_inactive:(Time)timestamp +{ TRACE(); } /* This requests the TARGETS list from the PRIMARY selection owner. */ --(void) x_copy_request_targets { +- (void) x_copy_request_targets +{ TRACE(); request_atom = atoms->targets; @@ -404,7 +411,8 @@ pdata requestor:(Window) requestor /* Called when the Edit/Copy item on the main X11 menubar is selected * and no appkit window claims it. */ - -(void) x_copy:(Time) timestamp { +- (void) x_copy:(Time)timestamp +{ Window w; TRACE(); @@ -429,7 +437,8 @@ pdata requestor:(Window) requestor * This prevents tools like xclipboard from causing havoc. * Returns TRUE on success */ - -(BOOL) set_clipboard_manager_status:(BOOL) value { +- (BOOL) set_clipboard_manager_status:(BOOL)value +{ TRACE(); Window owner = XGetSelectionOwner(xpbproxy_dpy, atoms->clipboard_manager); @@ -439,14 +448,15 @@ pdata requestor:(Window) requestor return TRUE; if (owner != None) { - ErrorF - ("A clipboard manager using window 0x%lx already owns the clipboard selection. " - "pbproxy will not sync clipboard to pasteboard.\n", owner); + ErrorF( + "A clipboard manager using window 0x%lx already owns the clipboard selection. " + "pbproxy will not sync clipboard to pasteboard.\n", owner); return FALSE; } XSetSelectionOwner(xpbproxy_dpy, atoms->clipboard_manager, - _selection_window, CurrentTime); + _selection_window, + CurrentTime); return (_selection_window == XGetSelectionOwner(xpbproxy_dpy, atoms->clipboard_manager)); } @@ -464,17 +474,18 @@ pdata requestor:(Window) requestor } /* - * This occurs when we previously owned a selection, + * This occurs when we previously owned a selection, * and then lost it from another client. */ - -(void) clear_event:(XSelectionClearEvent *) e { +- (void) clear_event:(XSelectionClearEvent *)e +{ TRACE(); DebugF("e->selection %s\n", XGetAtomName(xpbproxy_dpy, e->selection)); if (e->selection == atoms->clipboard) { - /* + /* * We lost ownership of the CLIPBOARD. */ ++pending_clipboard; @@ -496,10 +507,11 @@ pdata requestor:(Window) requestor } } -/* +/* * We greedily acquire the clipboard after it changes, and on startup. */ --(void) claim_clipboard { +- (void) claim_clipboard +{ Window owner; TRACE(); @@ -514,11 +526,11 @@ pdata requestor:(Window) requestor * Set pbproxy's _selection_window as the owner, and continue. */ DebugF("No clipboard owner.\n"); - [self copy_completed:atoms->clipboard]; + [self copy_completed:atoms->clipboard]; return; } else if (owner == _selection_window) { - [self copy_completed:atoms->clipboard]; + [self copy_completed:atoms->clipboard]; return; } @@ -532,7 +544,8 @@ pdata requestor:(Window) requestor } /* Greedily acquire the clipboard. */ --(void) own_clipboard { +- (void) own_clipboard +{ TRACE(); @@ -544,8 +557,7 @@ pdata requestor:(Window) requestor atoms->clipboard)); } - -(void) init_reply:(XEvent *) -reply request:(XSelectionRequestEvent *) e +- (void) init_reply:(XEvent *)reply request:(XSelectionRequestEvent *)e { reply->xselection.type = SelectionNotify; reply->xselection.selection = e->selection; @@ -555,7 +567,8 @@ reply request:(XSelectionRequestEvent *) e reply->xselection.property = None; } - -(void) send_reply:(XEvent *) reply { +- (void) send_reply:(XEvent *)reply +{ /* * We are supposed to use an empty event mask, and not propagate * the event, according to the ICCCM. @@ -566,35 +579,35 @@ reply request:(XSelectionRequestEvent *) e XFlush(xpbproxy_dpy); } -/* +/* * This responds to a TARGETS request. * The result is a list of a ATOMs that correspond to the types available - * for a selection. + * for a selection. * For instance an application might provide a UTF8_STRING and a STRING * (in Latin-1 encoding). The requestor can then make the choice based on * the list. */ - -(void) send_targets:(XSelectionRequestEvent *) -e pasteboard:(NSPasteboard *) pb +- (void) send_targets:(XSelectionRequestEvent *)e pasteboard:(NSPasteboard *) + pb { XEvent reply; NSArray *pbtypes; - [self init_reply: &reply request:e]; + [self init_reply:&reply request:e]; - pbtypes =[pb types]; + pbtypes = [pb types]; if (pbtypes) { - long list[7]; /* Don't forget to increase this if we handle more types! */ + long list[7]; /* Don't forget to increase this if we handle more types! */ long count = 0; /* - * I'm not sure if this is needed, but some toolkits/clients list - * TARGETS in response to targets. + * I'm not sure if this is needed, but some toolkits/clients list + * TARGETS in response to targets. */ list[count] = atoms->targets; ++count; - if ([pbtypes containsObject:NSStringPboardType]) { + if ([pbtypes containsObject:NSStringPboardType]) { /* We have a string type that we can convert to UTF8, or Latin-1... */ DebugF("NSStringPboardType\n"); list[count] = atoms->utf8_string; @@ -610,11 +623,11 @@ e pasteboard:(NSPasteboard *) pb */ #ifdef __clang__ #pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" // NSPICTPboardType +#pragma clang diagnostic ignored "-Wdeprecated-declarations" // NSPICTPboardType #endif - if ([pbtypes containsObject:NSPICTPboardType] - ||[pbtypes containsObject:NSTIFFPboardType]) { + if ([pbtypes containsObject:NSPICTPboardType] + || [pbtypes containsObject:NSTIFFPboardType]) { /* We can convert a TIFF to a PNG or JPEG. */ DebugF("NSTIFFPboardType\n"); list[count] = atoms->image_png; @@ -630,19 +643,19 @@ e pasteboard:(NSPasteboard *) pb if (count) { /* We have a list of ATOMs to send. */ XChangeProperty(xpbproxy_dpy, e->requestor, e->property, - atoms->atom, 32, PropModeReplace, - (unsigned char *) list, count); + atoms->atom, 32, + PropModeReplace, (unsigned char *)list, + count); reply.xselection.property = e->property; } } - [self send_reply:&reply]; + [self send_reply:&reply]; } - -(void) send_string:(XSelectionRequestEvent *) -e utf8:(BOOL) -utf8 pasteboard:(NSPasteboard *) pb +- (void) send_string:(XSelectionRequestEvent *)e utf8:(BOOL)utf8 pasteboard:( + NSPasteboard *)pb { XEvent reply; NSArray *pbtypes; @@ -652,12 +665,12 @@ utf8 pasteboard:(NSPasteboard *) pb TRACE(); - [self init_reply: &reply request:e]; + [self init_reply:&reply request:e]; - pbtypes =[pb types]; + pbtypes = [pb types]; - if (![pbtypes containsObject:NSStringPboardType]) { - [self send_reply:&reply]; + if (![pbtypes containsObject:NSStringPboardType]) { + [self send_reply:&reply]; return; } @@ -669,17 +682,17 @@ utf8 pasteboard:(NSPasteboard *) pb [pbtypes retainCount]); #endif - data =[pb stringForType:NSStringPboardType]; + data = [pb stringForType:NSStringPboardType]; if (nil == data) { - [self send_reply:&reply]; + [self send_reply:&reply]; return; } if (utf8) { - bytes =[data UTF8String]; + bytes = [data UTF8String]; /* - * We don't want the UTF-8 string length here. + * We don't want the UTF-8 string length here. * We want the length in bytes. */ length = strlen(bytes); @@ -695,39 +708,38 @@ utf8 pasteboard:(NSPasteboard *) pb } else { DebugF("Latin-1\n"); - bytes =[data cStringUsingEncoding:NSISOLatin1StringEncoding]; + bytes = [data cStringUsingEncoding:NSISOLatin1StringEncoding]; /*WARNING: bytes is not NUL-terminated. */ - length =[data lengthOfBytesUsingEncoding:NSISOLatin1StringEncoding]; + length = [data lengthOfBytesUsingEncoding:NSISOLatin1StringEncoding]; } DebugF("e->target %s\n", XGetAtomName(xpbproxy_dpy, e->target)); XChangeProperty(xpbproxy_dpy, e->requestor, e->property, e->target, - 8, PropModeReplace, (unsigned char *) bytes, length); + 8, PropModeReplace, (unsigned char *)bytes, length); reply.xselection.property = e->property; - [self send_reply:&reply]; + [self send_reply:&reply]; } - -(void) send_compound_text:(XSelectionRequestEvent *) -e pasteboard:(NSPasteboard *) pb +- (void) send_compound_text:(XSelectionRequestEvent *)e pasteboard:( + NSPasteboard *)pb { XEvent reply; NSArray *pbtypes; TRACE(); - [self init_reply: &reply request:e]; - - pbtypes =[pb types]; + [self init_reply:&reply request:e]; - if ([pbtypes containsObject:NSStringPboardType]) { - NSString *data =[pb stringForType:NSStringPboardType]; + pbtypes = [pb types]; + if ([pbtypes containsObject: NSStringPboardType]) { + NSString *data = [pb stringForType:NSStringPboardType]; if (nil != data) { /* - * Cast to (void *) to avoid a const warning. + * Cast to (void *) to avoid a const warning. * AFAIK Xutf8TextListToTextProperty does not modify the input memory. */ void *utf8 = (void *)[data UTF8String]; @@ -741,9 +753,9 @@ e pasteboard:(NSPasteboard *) pb &textprop)) { if (8 != textprop.format) - DebugF - ("textprop.format is unexpectedly not 8 - it's %d instead\n", - textprop.format); + DebugF( + "textprop.format is unexpectedly not 8 - it's %d instead\n", + textprop.format); XChangeProperty(xpbproxy_dpy, e->requestor, e->property, atoms->compound_text, textprop.format, @@ -759,42 +771,41 @@ e pasteboard:(NSPasteboard *) pb } } - [self send_reply:&reply]; + [self send_reply:&reply]; } /* Finding a test application that uses MULTIPLE has proven to be difficult. */ - -(void) send_multiple:(XSelectionRequestEvent *) e { +- (void) send_multiple:(XSelectionRequestEvent *)e +{ XEvent reply; TRACE(); - [self init_reply: &reply request:e]; + [self init_reply:&reply request:e]; - if (None != e->property) { + if (None != e->property) {} - } - - [self send_reply:&reply]; + [self send_reply:&reply]; } /* Return nil if an error occured. */ -/* DO NOT retain the encdata for longer than the length of an event response. +/* DO NOT retain the encdata for longer than the length of an event response. * The autorelease pool will reuse/free it. */ - -(NSData *) encode_image_data:(NSData *) -data type:(NSBitmapImageFileType) enctype +- (NSData *) encode_image_data:(NSData *)data type:(NSBitmapImageFileType) + enctype { NSBitmapImageRep *bmimage = nil; NSData *encdata = nil; NSDictionary *dict = nil; - bmimage =[[NSBitmapImageRep alloc] initWithData:data]; + bmimage = [[NSBitmapImageRep alloc] initWithData:data]; if (nil == bmimage) return nil; - dict =[[NSDictionary alloc] init]; - encdata =[bmimage representationUsingType: enctype properties:dict]; + dict = [[NSDictionary alloc] init]; + encdata = [bmimage representationUsingType:enctype properties:dict]; if (nil == encdata) { [dict autorelease]; @@ -810,7 +821,9 @@ data type:(NSBitmapImageFileType) enctype /* Return YES when an error has occured when trying to send the PICT. */ /* The caller should send a default reponse with a property of None when an error occurs. */ - -(BOOL) send_image_pict_reply: (XSelectionRequestEvent *) e pasteboard: (NSPasteboard *) pb type:(NSBitmapImageFileType) imagetype +- (BOOL) send_image_pict_reply:(XSelectionRequestEvent *)e + pasteboard:(NSPasteboard *)pb + type:(NSBitmapImageFileType)imagetype { XEvent reply; NSImage *img = nil; @@ -818,13 +831,13 @@ data type:(NSBitmapImageFileType) enctype NSUInteger length; const void *bytes = NULL; - img =[[NSImage alloc] initWithPasteboard:pb]; + img = [[NSImage alloc] initWithPasteboard:pb]; if (nil == img) { return YES; } - data =[img TIFFRepresentation]; + data = [img TIFFRepresentation]; if (nil == data) { [img autorelease]; @@ -832,31 +845,33 @@ data type:(NSBitmapImageFileType) enctype return YES; } - encdata =[self encode_image_data: data type:imagetype]; + encdata = [self encode_image_data:data type:imagetype]; if (nil == encdata) { [img autorelease]; return YES; } - [self init_reply: &reply request:e]; + [self init_reply:&reply request:e]; - length =[encdata length]; - bytes =[encdata bytes]; + length = [encdata length]; + bytes = [encdata bytes]; XChangeProperty(xpbproxy_dpy, e->requestor, e->property, e->target, 8, PropModeReplace, bytes, length); reply.xselection.property = e->property; - [self send_reply:&reply]; + [self send_reply:&reply]; [img autorelease]; - return NO; /*no error */ + return NO; /*no error*/ } /* Return YES if an error occured. */ /* The caller should send a reply with a property of None when an error occurs. */ - -(BOOL) send_image_tiff_reply: (XSelectionRequestEvent *) e pasteboard: (NSPasteboard *) pb type:(NSBitmapImageFileType) imagetype +- (BOOL) send_image_tiff_reply:(XSelectionRequestEvent *)e + pasteboard:(NSPasteboard *)pb + type:(NSBitmapImageFileType)imagetype { XEvent reply; NSData *data = nil; @@ -864,32 +879,31 @@ data type:(NSBitmapImageFileType) enctype NSUInteger length; const void *bytes = NULL; - data =[pb dataForType:NSTIFFPboardType]; + data = [pb dataForType:NSTIFFPboardType]; if (nil == data) return YES; - encdata =[self encode_image_data: data type:imagetype]; + encdata = [self encode_image_data:data type:imagetype]; if (nil == encdata) return YES; - [self init_reply: &reply request:e]; + [self init_reply:&reply request:e]; - length =[encdata length]; - bytes =[encdata bytes]; + length = [encdata length]; + bytes = [encdata bytes]; XChangeProperty(xpbproxy_dpy, e->requestor, e->property, e->target, 8, PropModeReplace, bytes, length); reply.xselection.property = e->property; - [self send_reply:&reply]; + [self send_reply:&reply]; - return NO; /*no error */ + return NO; /*no error*/ } - -(void) send_image:(XSelectionRequestEvent *) -e pasteboard:(NSPasteboard *) pb +- (void) send_image:(XSelectionRequestEvent *)e pasteboard:(NSPasteboard *)pb { NSArray *pbtypes = nil; NSBitmapImageFileType imagetype = NSPNGFileType; @@ -901,52 +915,56 @@ e pasteboard:(NSPasteboard *) pb else if (e->target == atoms->image_jpeg) imagetype = NSJPEGFileType; else { - ErrorF - ("internal failure in xpbproxy! imagetype being sent isn't PNG or JPEG.\n"); + ErrorF( + "internal failure in xpbproxy! imagetype being sent isn't PNG or JPEG.\n"); } - pbtypes =[pb types]; + pbtypes = [pb types]; if (pbtypes) { - if ([pbtypes containsObject:NSTIFFPboardType]) { - if (NO ==[self send_image_tiff_reply: e pasteboard: pb type:imagetype]) + if ([pbtypes containsObject:NSTIFFPboardType]) { + if (NO == + [self send_image_tiff_reply:e pasteboard:pb type:imagetype]) return; } #ifdef __clang__ #pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" // NSPICTPboardType +#pragma clang diagnostic ignored "-Wdeprecated-declarations" // NSPICTPboardType #endif - else if ([pbtypes containsObject:NSPICTPboardType]) + else if ([pbtypes containsObject:NSPICTPboardType]) #ifdef __clang__ #pragma clang diagnostic pop #endif { - if (NO ==[self send_image_pict_reply: e pasteboard: pb type:imagetype]) + if (NO == + [self send_image_pict_reply:e pasteboard:pb type:imagetype]) return; /* Fall through intentionally to the send_none: */ } } - [self send_none:e]; + [self send_none:e]; } - -(void) send_none:(XSelectionRequestEvent *) e { +- (void)send_none:(XSelectionRequestEvent *)e +{ XEvent reply; TRACE(); - [self init_reply: &reply request:e]; - [self send_reply:&reply]; + [self init_reply:&reply request:e]; + [self send_reply:&reply]; } /* Another client requested the data or targets of data available from the clipboard. */ - -(void) request_event:(XSelectionRequestEvent *) e { +- (void)request_event:(XSelectionRequestEvent *)e +{ NSPasteboard *pb; TRACE(); - /* TODO We should also keep track of the time of the selection, and + /* TODO We should also keep track of the time of the selection, and * according to the ICCCM "refuse the request" if the event timestamp * is before we owned it. * What should we base the time on? How can we get the current time just @@ -956,12 +974,12 @@ e pasteboard:(NSPasteboard *) pb * Perhaps we should just punt and ignore races. */ - /*TODO we need a COMPOUND_TEXT test app */ - /*TODO we need a MULTIPLE test app */ + /*TODO we need a COMPOUND_TEXT test app*/ + /*TODO we need a MULTIPLE test app*/ - pb =[NSPasteboard generalPasteboard]; + pb = [NSPasteboard generalPasteboard]; if (nil == pb) { - [self send_none:e]; + [self send_none:e]; return; } @@ -970,37 +988,39 @@ e pasteboard:(NSPasteboard *) pb if (e->target == atoms->targets) { /* The paste requestor wants to know what TARGETS we support. */ - [self send_targets: e pasteboard:pb]; + [self send_targets:e pasteboard:pb]; } else if (e->target == atoms->multiple) { /* - * This isn't finished, and may never be, unless I can find + * This isn't finished, and may never be, unless I can find * a good test app. */ - [self send_multiple:e]; + [self send_multiple:e]; } else if (e->target == atoms->utf8_string) { - [self send_string: e utf8: YES pasteboard:pb]; + [self send_string:e utf8:YES pasteboard:pb]; } else if (e->target == atoms->string) { - [self send_string: e utf8: NO pasteboard:pb]; + [self send_string:e utf8:NO pasteboard:pb]; } else if (e->target == atoms->compound_text) { - [self send_compound_text: e pasteboard:pb]; + [self send_compound_text:e pasteboard:pb]; } else if (e->target == atoms->multiple) { - [self send_multiple:e]; + [self send_multiple:e]; } - else if (e->target == atoms->image_png || e->target == atoms->image_jpeg) { - [self send_image: e pasteboard:pb]; + else if (e->target == atoms->image_png || e->target == + atoms->image_jpeg) { + [self send_image:e pasteboard:pb]; } else { - [self send_none:e]; + [self send_none:e]; } } /* This handles the events resulting from an XConvertSelection request. */ - -(void) notify_event:(XSelectionEvent *) e { +- (void) notify_event:(XSelectionEvent *)e +{ Atom type; struct propdata pdata; @@ -1010,7 +1030,7 @@ e pasteboard:(NSPasteboard *) pb if (None == e->property) { DebugF("e->property is None.\n"); - [self copy_completed:e->selection]; + [self copy_completed:e->selection]; /* Nothing is selected. */ return; } @@ -1020,20 +1040,20 @@ e pasteboard:(NSPasteboard *) pb ErrorF("e->property %s\n", XGetAtomName(xpbproxy_dpy, e->property)); #endif - if ([self is_incr_type:e]) { + if ([self is_incr_type:e]) { /* - * This is an INCR-style transfer, which means that we + * This is an INCR-style transfer, which means that we * will get the data after a series of PropertyNotify events. */ DebugF("is INCR\n"); - if (get_property - (e->requestor, e->property, &pdata, /*Delete */ True, &type)) { - /* + if (get_property(e->requestor, e->property, &pdata, /*Delete*/ True, + &type)) { + /* * An error occured, so we should invoke the copy_completed:, but * not handle_selection:type:propdata: */ - [self copy_completed:e->selection]; + [self copy_completed:e->selection]; return; } @@ -1045,14 +1065,14 @@ e pasteboard:(NSPasteboard *) pb DebugF("set pending.requestor to 0x%lx\n", pending.requestor); } else { - if (get_property - (e->requestor, e->property, &pdata, /*Delete */ True, &type)) { - [self copy_completed:e->selection]; + if (get_property(e->requestor, e->property, &pdata, /*Delete*/ True, + &type)) { + [self copy_completed:e->selection]; return; } - /* We have the complete selection data. */ - [self handle_selection: e->selection type: type propdata:&pdata]; + /* We have the complete selection data.*/ + [self handle_selection:e->selection type:type propdata:&pdata]; DebugF("handled selection with the first notify_event\n"); } @@ -1060,7 +1080,8 @@ e pasteboard:(NSPasteboard *) pb /* This is used for INCR transfers. See the ICCCM for the details. */ /* This is used to retrieve PRIMARY and CLIPBOARD selections. */ - -(void) property_event:(XPropertyEvent *) e { +- (void) property_event:(XPropertyEvent *)e +{ struct propdata pdata; Atom type; @@ -1080,8 +1101,9 @@ e pasteboard:(NSPasteboard *) pb if (None != pending.requestor && PropertyNewValue == e->state) { DebugF("pending.requestor 0x%lx\n", pending.requestor); - if (get_property(e->window, e->atom, &pdata, /*Delete */ True, &type)) { - [self copy_completed:pending.selection]; + if (get_property(e->window, e->atom, &pdata, /*Delete*/ True, + &type)) { + [self copy_completed:pending.selection]; [self release_pending]; return; } @@ -1091,28 +1113,29 @@ e pasteboard:(NSPasteboard *) pb * We completed the transfer. * handle_selection will call copy_completed: for us. */ - [self handle_selection: pending.selection type: type propdata:&pending. - propdata]; + [self handle_selection:pending.selection type:type propdata:& + pending.propdata]; free_propdata(&pdata); pending.propdata = null_propdata; pending.requestor = None; pending.selection = None; } else { - [self append_to_pending: &pdata requestor:e->window]; + [self append_to_pending:&pdata requestor:e->window]; free_propdata(&pdata); } } } - -(void) xfixes_selection_notify:(XFixesSelectionNotifyEvent *) e { +- (void) xfixes_selection_notify:(XFixesSelectionNotifyEvent *)e +{ if (!pbproxy_prefs.active) return; switch (e->subtype) { case XFixesSetSelectionOwnerNotify: if (e->selection == atoms->primary && pbproxy_prefs.primary_on_grab) - [self x_copy:e->timestamp]; + [self x_copy:e->timestamp]; break; case XFixesSelectionWindowDestroyNotify: @@ -1124,8 +1147,7 @@ e pasteboard:(NSPasteboard *) pb } } - -(void) handle_targets:(Atom) -selection propdata:(struct propdata *) pdata +- (void) handle_targets: (Atom)selection propdata:(struct propdata *)pdata { /* Find a type we can handle and prefer from the list of ATOMs. */ Atom preferred; @@ -1133,17 +1155,17 @@ selection propdata:(struct propdata *) pdata TRACE(); - preferred =[self find_preferred:pdata]; + preferred = [self find_preferred:pdata]; if (None == preferred) { - /* - * This isn't required by the ICCCM, but some apps apparently + /* + * This isn't required by the ICCCM, but some apps apparently * don't respond to TARGETS properly. */ preferred = atoms->string; } - (void) name; /* Avoid a warning with non-debug compiles. */ + (void)name; /* Avoid a warning with non-debug compiles. */ #ifdef DEBUG name = XGetAtomName(xpbproxy_dpy, preferred); @@ -1158,8 +1180,7 @@ selection propdata:(struct propdata *) pdata /* This handles the image type of selection (typically in CLIPBOARD). */ /* We convert to a TIFF, so that other applications can paste more easily. */ - -(void) handle_image:(struct propdata *) -pdata pasteboard:(NSPasteboard *) pb +- (void) handle_image: (struct propdata *)pdata pasteboard:(NSPasteboard *)pb { NSArray *pbtypes; NSUInteger length; @@ -1169,7 +1190,7 @@ pdata pasteboard:(NSPasteboard *) pb TRACE(); length = pdata->length; - data =[[NSData alloc] initWithBytes: pdata->data length:length]; + data = [[NSData alloc] initWithBytes:pdata->data length:length]; if (nil == data) { DebugF("unable to create NSData object!\n"); @@ -1184,7 +1205,7 @@ pdata pasteboard:(NSPasteboard *) pb [data retainCount]); #endif - bmimage =[[NSBitmapImageRep alloc] initWithData:data]; + bmimage = [[NSBitmapImageRep alloc] initWithData:data]; if (nil == bmimage) { [data autorelease]; @@ -1200,11 +1221,13 @@ pdata pasteboard:(NSPasteboard *) pb [data retainCount]); #endif - @try { - tiff =[bmimage TIFFRepresentation]; + @try + { + tiff = [bmimage TIFFRepresentation]; } - @catch(NSException * e) { + @catch (NSException *e) + { DebugF("NSTIFFException!\n"); [data autorelease]; [bmimage autorelease]; @@ -1219,7 +1242,7 @@ pdata pasteboard:(NSPasteboard *) pb [bmimage retainCount]); #endif - pbtypes =[NSArray arrayWithObjects:NSTIFFPboardType, nil]; + pbtypes = [NSArray arrayWithObjects:NSTIFFPboardType, nil]; if (nil == pbtypes) { [data autorelease]; @@ -1227,46 +1250,49 @@ pdata pasteboard:(NSPasteboard *) pb return; } - [pb declareTypes: pbtypes owner:nil]; - if (YES !=[pb setData: tiff forType:NSTIFFPboardType]) { + [pb declareTypes:pbtypes owner:nil]; + if (YES != [pb setData:tiff forType:NSTIFFPboardType]) { DebugF("writing pasteboard data failed!\n"); } [data autorelease]; #ifdef __LP64__ - DebugF("bmimage retainCount before release %lu\n",[bmimage retainCount]); + DebugF("bmimage retainCount before release %lu\n", [bmimage retainCount]); #else - DebugF("bmimage retainCount before release %u\n",[bmimage retainCount]); + DebugF("bmimage retainCount before release %u\n", [bmimage retainCount]); #endif [bmimage autorelease]; } /* This handles the UTF8_STRING type of selection. */ - -(void) handle_utf8_string:(struct propdata *) -pdata pasteboard:(NSPasteboard *) pb +- (void) handle_utf8_string:(struct propdata *)pdata pasteboard:(NSPasteboard + *)pb { NSString *string; NSArray *pbtypes; TRACE(); - string =[[NSString alloc] initWithBytes: pdata->data length: pdata->length encoding:NSUTF8StringEncoding]; + string = + [[NSString alloc] initWithBytes:pdata->data length:pdata->length + encoding: + NSUTF8StringEncoding]; if (nil == string) return; - pbtypes =[NSArray arrayWithObjects:NSStringPboardType, nil]; + pbtypes = [NSArray arrayWithObjects:NSStringPboardType, nil]; if (nil == pbtypes) { [string autorelease]; return; } - [pb declareTypes: pbtypes owner:nil]; + [pb declareTypes:pbtypes owner:nil]; - if (YES !=[pb setString: string forType:NSStringPboardType]) { + if (YES != [pb setString:string forType:NSStringPboardType]) { ErrorF("pasteboard setString:forType: failed!\n"); } [string autorelease]; @@ -1274,28 +1300,31 @@ pdata pasteboard:(NSPasteboard *) pb } /* This handles the STRING type, which should be in Latin-1. */ - -(void) handle_string:(struct propdata *) -pdata pasteboard:(NSPasteboard *) pb +- (void) handle_string: (struct propdata *)pdata pasteboard:(NSPasteboard *) + pb { NSString *string; NSArray *pbtypes; TRACE(); - string =[[NSString alloc] initWithBytes: pdata->data length: pdata->length encoding:NSISOLatin1StringEncoding]; + string = + [[NSString alloc] initWithBytes:pdata->data length:pdata->length + encoding: + NSISOLatin1StringEncoding]; if (nil == string) return; - pbtypes =[NSArray arrayWithObjects:NSStringPboardType, nil]; + pbtypes = [NSArray arrayWithObjects:NSStringPboardType, nil]; if (nil == pbtypes) { [string autorelease]; return; } - [pb declareTypes: pbtypes owner:nil]; - if (YES !=[pb setString: string forType:NSStringPboardType]) { + [pb declareTypes:pbtypes owner:nil]; + if (YES != [pb setString:string forType:NSStringPboardType]) { ErrorF("pasteboard setString:forType failed in handle_string!\n"); } [string autorelease]; @@ -1303,55 +1332,56 @@ pdata pasteboard:(NSPasteboard *) pb /* This is called when the selection is completely retrieved from another client. */ /* Warning: this frees the propdata. */ - -(void) handle_selection:(Atom) -selection type:(Atom) -type propdata:(struct propdata *) pdata +- (void) handle_selection:(Atom)selection type:(Atom)type propdata:(struct + propdata + *)pdata { NSPasteboard *pb; TRACE(); - pb =[NSPasteboard generalPasteboard]; + pb = [NSPasteboard generalPasteboard]; if (nil == pb) { - [self copy_completed:selection]; + [self copy_completed:selection]; free_propdata(pdata); return; } /* * Some apps it seems set the type to TARGETS instead of ATOM, such as Eterm. - * These aren't ICCCM compliant apps, but we need these to work... + * These aren't ICCCM compliant apps, but we need these to work... */ if (request_atom == atoms->targets && (type == atoms->atom || type == atoms->targets)) { - [self handle_targets: selection propdata:pdata]; + [self handle_targets:selection propdata:pdata]; free_propdata(pdata); return; } else if (type == atoms->image_png) { - [self handle_image: pdata pasteboard:pb]; + [self handle_image:pdata pasteboard:pb]; } else if (type == atoms->image_jpeg) { - [self handle_image: pdata pasteboard:pb]; + [self handle_image:pdata pasteboard:pb]; } else if (type == atoms->utf8_string) { - [self handle_utf8_string: pdata pasteboard:pb]; + [self handle_utf8_string:pdata pasteboard:pb]; } else if (type == atoms->string) { - [self handle_string: pdata pasteboard:pb]; + [self handle_string:pdata pasteboard:pb]; } free_propdata(pdata); - [self copy_completed:selection]; + [self copy_completed:selection]; } - -(void) copy_completed:(Atom) selection { +- (void) copy_completed:(Atom)selection +{ TRACE(); char *name; - (void) name; /* Avoid warning with non-debug compiles. */ + (void)name; /* Avoid warning with non-debug compiles. */ #ifdef DEBUG name = XGetAtomName(xpbproxy_dpy, selection); if (name) { @@ -1382,39 +1412,45 @@ type propdata:(struct propdata *) pdata } } - /* + /* * We had 1 or more primary in progress, and the clipboard arrived - * while we were busy. + * while we were busy. */ if (pending_clipboard > 0) { [self claim_clipboard]; } } --(void) reload_preferences { +- (void) reload_preferences +{ /* * It's uncertain how we could handle the synchronization failing, so cast to void. * The prefs_get_bool should fall back to defaults if the org.x.X11 plist doesn't exist or is invalid. */ - (void) CFPreferencesAppSynchronize(app_prefs_domain_cfstr); + (void)CFPreferencesAppSynchronize(app_prefs_domain_cfstr); #ifdef STANDALONE_XPBPROXY if (xpbproxy_is_standalone) pbproxy_prefs.active = YES; else #endif - pbproxy_prefs.active = - prefs_get_bool(CFSTR("sync_pasteboard"), pbproxy_prefs.active); + pbproxy_prefs.active = prefs_get_bool(CFSTR( + "sync_pasteboard"), + pbproxy_prefs.active); pbproxy_prefs.primary_on_grab = - prefs_get_bool(CFSTR("sync_primary_on_select"), + prefs_get_bool(CFSTR( + "sync_primary_on_select"), pbproxy_prefs.primary_on_grab); pbproxy_prefs.clipboard_to_pasteboard = - prefs_get_bool(CFSTR("sync_clipboard_to_pasteboard"), + prefs_get_bool(CFSTR( + "sync_clipboard_to_pasteboard"), pbproxy_prefs.clipboard_to_pasteboard); pbproxy_prefs.pasteboard_to_primary = - prefs_get_bool(CFSTR("sync_pasteboard_to_primary"), + prefs_get_bool(CFSTR( + "sync_pasteboard_to_primary"), pbproxy_prefs.pasteboard_to_primary); pbproxy_prefs.pasteboard_to_clipboard = - prefs_get_bool(CFSTR("sync_pasteboard_to_clipboard"), + prefs_get_bool(CFSTR( + "sync_pasteboard_to_clipboard"), pbproxy_prefs.pasteboard_to_clipboard); /* This is used for debugging. */ @@ -1422,38 +1458,40 @@ type propdata:(struct propdata *) pdata if (pbproxy_prefs.active && pbproxy_prefs.primary_on_grab && !xpbproxy_have_xfixes) { - ErrorF - ("Disabling sync_primary_on_select functionality due to missing XFixes extension.\n"); + ErrorF( + "Disabling sync_primary_on_select functionality due to missing XFixes extension.\n"); pbproxy_prefs.primary_on_grab = NO; } /* Claim or release the CLIPBOARD_MANAGER atom */ - if (![self set_clipboard_manager_status:(pbproxy_prefs.active && - pbproxy_prefs. - clipboard_to_pasteboard)]) + if (![self set_clipboard_manager_status:(pbproxy_prefs.active && + pbproxy_prefs. + clipboard_to_pasteboard)]) pbproxy_prefs.clipboard_to_pasteboard = NO; if (pbproxy_prefs.active && pbproxy_prefs.clipboard_to_pasteboard) [self claim_clipboard]; } --(BOOL) is_active { +- (BOOL) is_active +{ return pbproxy_prefs.active; } /* NSPasteboard-required methods */ - -(void) paste:(id) sender { +- (void) paste:(id)sender +{ TRACE(); } - -(void) pasteboard:(NSPasteboard *) -pb provideDataForType:(NSString *) type +- (void) pasteboard:(NSPasteboard *)pb provideDataForType:(NSString *)type { TRACE(); } - -(void) pasteboardChangedOwner:(NSPasteboard *) pb { +- (void) pasteboardChangedOwner:(NSPasteboard *)pb +{ TRACE(); /* Right now we don't care with this. */ @@ -1461,10 +1499,11 @@ pb provideDataForType:(NSString *) type /* Allocation */ --init { +- init +{ unsigned long pixel; - self =[super init]; + self = [super init]; if (self == nil) return nil; @@ -1480,15 +1519,15 @@ pb provideDataForType:(NSString *) type atoms->image_jpeg = XInternAtom(xpbproxy_dpy, "image/jpeg", False); atoms->incr = XInternAtom(xpbproxy_dpy, "INCR", False); atoms->atom = XInternAtom(xpbproxy_dpy, "ATOM", False); - atoms->clipboard_manager = - XInternAtom(xpbproxy_dpy, "CLIPBOARD_MANAGER", False); + atoms->clipboard_manager = XInternAtom(xpbproxy_dpy, "CLIPBOARD_MANAGER", + False); atoms->compound_text = XInternAtom(xpbproxy_dpy, "COMPOUND_TEXT", False); atoms->atom_pair = XInternAtom(xpbproxy_dpy, "ATOM_PAIR", False); pixel = BlackPixel(xpbproxy_dpy, DefaultScreen(xpbproxy_dpy)); _selection_window = - XCreateSimpleWindow(xpbproxy_dpy, DefaultRootWindow(xpbproxy_dpy), 0, 0, - 1, 1, 0, pixel, pixel); + XCreateSimpleWindow(xpbproxy_dpy, DefaultRootWindow(xpbproxy_dpy), + 0, 0, 1, 1, 0, pixel, pixel); /* This is used to get PropertyNotify events when doing INCR transfers. */ XSelectInput(xpbproxy_dpy, _selection_window, PropertyChangeMask); @@ -1512,7 +1551,8 @@ pb provideDataForType:(NSString *) type return self; } --(void) dealloc { +- (void) dealloc +{ if (None != _selection_window) { XDestroyWindow(xpbproxy_dpy, _selection_window); _selection_window = None; diff --git a/xorg-server/hw/xquartz/pseudoramiX.c b/xorg-server/hw/xquartz/pseudoramiX.c index f5375039b..8bb7f2d01 100644 --- a/xorg-server/hw/xquartz/pseudoramiX.c +++ b/xorg-server/hw/xquartz/pseudoramiX.c @@ -9,29 +9,29 @@ * following copyright notice: */ /***************************************************************** -Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, -BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Digital Equipment Corporation -shall not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from Digital -Equipment Corporation. -******************************************************************/ + Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software. + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, + BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Digital Equipment Corporation + shall not be used in advertising or otherwise to promote the sale, use or other + dealings in this Software without prior written authorization from Digital + Equipment Corporation. + ******************************************************************/ #ifdef HAVE_DIX_CONFIG_H #include <dix-config.h> @@ -47,25 +47,41 @@ Equipment Corporation. Bool noPseudoramiXExtension = FALSE; -extern int ProcPanoramiXQueryVersion(ClientPtr client); +extern int +ProcPanoramiXQueryVersion(ClientPtr client); -static void PseudoramiXResetProc(ExtensionEntry * extEntry); +static void +PseudoramiXResetProc(ExtensionEntry *extEntry); -static int ProcPseudoramiXQueryVersion(ClientPtr client); -static int ProcPseudoramiXGetState(ClientPtr client); -static int ProcPseudoramiXGetScreenCount(ClientPtr client); -static int ProcPseudoramiXGetScreenSize(ClientPtr client); -static int ProcPseudoramiXIsActive(ClientPtr client); -static int ProcPseudoramiXQueryScreens(ClientPtr client); -static int ProcPseudoramiXDispatch(ClientPtr client); +static int +ProcPseudoramiXQueryVersion(ClientPtr client); +static int +ProcPseudoramiXGetState(ClientPtr client); +static int +ProcPseudoramiXGetScreenCount(ClientPtr client); +static int +ProcPseudoramiXGetScreenSize(ClientPtr client); +static int +ProcPseudoramiXIsActive(ClientPtr client); +static int +ProcPseudoramiXQueryScreens(ClientPtr client); +static int +ProcPseudoramiXDispatch(ClientPtr client); -static int SProcPseudoramiXQueryVersion(ClientPtr client); -static int SProcPseudoramiXGetState(ClientPtr client); -static int SProcPseudoramiXGetScreenCount(ClientPtr client); -static int SProcPseudoramiXGetScreenSize(ClientPtr client); -static int SProcPseudoramiXIsActive(ClientPtr client); -static int SProcPseudoramiXQueryScreens(ClientPtr client); -static int SProcPseudoramiXDispatch(ClientPtr client); +static int +SProcPseudoramiXQueryVersion(ClientPtr client); +static int +SProcPseudoramiXGetState(ClientPtr client); +static int +SProcPseudoramiXGetScreenCount(ClientPtr client); +static int +SProcPseudoramiXGetScreenSize(ClientPtr client); +static int +SProcPseudoramiXIsActive(ClientPtr client); +static int +SProcPseudoramiXQueryScreens(ClientPtr client); +static int +SProcPseudoramiXDispatch(ClientPtr client); typedef struct { int x; @@ -88,8 +104,7 @@ PseudoramiXAddScreen(int x, int y, int w, int h) { PseudoramiXScreenRec *s; - if (noPseudoramiXExtension) - return; + if (noPseudoramiXExtension) return; if (pseudoramiXNumScreens == pseudoramiXScreensAllocated) { pseudoramiXScreensAllocated += pseudoramiXScreensAllocated + 1; @@ -113,10 +128,9 @@ void PseudoramiXExtensionInit(int argc, char *argv[]) { Bool success = FALSE; - ExtensionEntry *extEntry; + ExtensionEntry *extEntry; - if (noPseudoramiXExtension) - return; + if (noPseudoramiXExtension) return; TRACE(); @@ -134,7 +148,8 @@ PseudoramiXExtensionInit(int argc, char *argv[]) extEntry = AddExtension(PANORAMIX_PROTOCOL_NAME, 0, 0, ProcPseudoramiXDispatch, SProcPseudoramiXDispatch, - PseudoramiXResetProc, StandardMinorOpcode); + PseudoramiXResetProc, + StandardMinorOpcode); if (!extEntry) { ErrorF("PseudoramiXExtensionInit(): AddExtension failed\n"); } @@ -160,7 +175,7 @@ PseudoramiXResetScreens(void) } static void -PseudoramiXResetProc(ExtensionEntry * extEntry) +PseudoramiXResetProc(ExtensionEntry *extEntry) { TRACE(); @@ -201,7 +216,7 @@ ProcPseudoramiXGetState(ClientPtr client) swapl(&rep.length); swaps(&rep.state); } - WriteToClient(client, sizeof(xPanoramiXGetStateReply), (char *) &rep); + WriteToClient(client, sizeof(xPanoramiXGetStateReply), (char *)&rep); return Success; } @@ -230,7 +245,7 @@ ProcPseudoramiXGetScreenCount(ClientPtr client) swapl(&rep.length); swaps(&rep.ScreenCount); } - WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply), (char *) &rep); + WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply), (char *)&rep); return Success; } @@ -264,7 +279,7 @@ ProcPseudoramiXGetScreenSize(ClientPtr client) swaps(&rep.width); swaps(&rep.height); } - WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply), (char *) &rep); + WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply), (char *)&rep); return Success; } @@ -288,7 +303,7 @@ ProcPseudoramiXIsActive(ClientPtr client) swapl(&rep.length); swapl(&rep.state); } - WriteToClient(client, sizeof(xXineramaIsActiveReply), (char *) &rep); + WriteToClient(client, sizeof(xXineramaIsActiveReply), (char *)&rep); return Success; } @@ -300,7 +315,8 @@ ProcPseudoramiXQueryScreens(ClientPtr client) xXineramaQueryScreensReply rep; DEBUG_LOG("noPseudoramiXExtension=%d, pseudoramiXNumScreens=%d\n", - noPseudoramiXExtension, pseudoramiXNumScreens); + noPseudoramiXExtension, + pseudoramiXNumScreens); REQUEST_SIZE_MATCH(xXineramaQueryScreensReq); @@ -313,7 +329,7 @@ ProcPseudoramiXQueryScreens(ClientPtr client) swapl(&rep.length); swapl(&rep.number); } - WriteToClient(client, sizeof(xXineramaQueryScreensReply), (char *) &rep); + WriteToClient(client, sizeof(xXineramaQueryScreensReply), (char *)&rep); if (!noPseudoramiXExtension) { xXineramaScreenInfo scratch; @@ -331,7 +347,7 @@ ProcPseudoramiXQueryScreens(ClientPtr client) swaps(&scratch.width); swaps(&scratch.height); } - WriteToClient(client, sz_XineramaScreenInfo, (char *) &scratch); + WriteToClient(client, sz_XineramaScreenInfo, (char *)&scratch); } } @@ -347,14 +363,19 @@ ProcPseudoramiXDispatch(ClientPtr client) switch (stuff->data) { case X_PanoramiXQueryVersion: return ProcPseudoramiXQueryVersion(client); + case X_PanoramiXGetState: return ProcPseudoramiXGetState(client); + case X_PanoramiXGetScreenCount: return ProcPseudoramiXGetScreenCount(client); + case X_PanoramiXGetScreenSize: return ProcPseudoramiXGetScreenSize(client); + case X_XineramaIsActive: return ProcPseudoramiXIsActive(client); + case X_XineramaQueryScreens: return ProcPseudoramiXQueryScreens(client); } @@ -443,14 +464,19 @@ SProcPseudoramiXDispatch(ClientPtr client) switch (stuff->data) { case X_PanoramiXQueryVersion: return SProcPseudoramiXQueryVersion(client); + case X_PanoramiXGetState: return SProcPseudoramiXGetState(client); + case X_PanoramiXGetScreenCount: return SProcPseudoramiXGetScreenCount(client); + case X_PanoramiXGetScreenSize: return SProcPseudoramiXGetScreenSize(client); + case X_XineramaIsActive: return SProcPseudoramiXIsActive(client); + case X_XineramaQueryScreens: return SProcPseudoramiXQueryScreens(client); } diff --git a/xorg-server/hw/xquartz/pseudoramiX.h b/xorg-server/hw/xquartz/pseudoramiX.h index df5010d1d..f41b5cbe4 100644 --- a/xorg-server/hw/xquartz/pseudoramiX.h +++ b/xorg-server/hw/xquartz/pseudoramiX.h @@ -4,6 +4,8 @@ extern int noPseudoramiXExtension; -void PseudoramiXAddScreen(int x, int y, int w, int h); +void +PseudoramiXAddScreen(int x, int y, int w, int h); void PseudoramiXExtensionInit(int argc, char *argv[]); -void PseudoramiXResetScreens(void); +void +PseudoramiXResetScreens(void); diff --git a/xorg-server/hw/xquartz/quartz.c b/xorg-server/hw/xquartz/quartz.c index e4578cc3e..ebaa56785 100644 --- a/xorg-server/hw/xquartz/quartz.c +++ b/xorg-server/hw/xquartz/quartz.c @@ -2,6 +2,7 @@ * * Quartz-specific support for the Darwin X Server * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. * Copyright (c) 2001-2004 Greg Parker and Torrey T. Lyons. * All Rights Reserved. * @@ -71,7 +72,7 @@ DevPrivateKeyRec quartzScreenKeyRec; int aquaMenuBarHeight = 0; QuartzModeProcsPtr quartzProcs = NULL; -const char *quartzOpenGLBundle = NULL; +const char *quartzOpenGLBundle = NULL; Bool XQuartzFullscreenDisableHotkeys = TRUE; Bool XQuartzOptionSendsAlt = FALSE; @@ -85,19 +86,20 @@ Bool XQuartzFullscreenMenu = FALSE; int32_t XQuartzShieldingWindowLevel = 0; /* -=========================================================================== + =========================================================================== - Screen functions + Screen functions -=========================================================================== -*/ + =========================================================================== + */ /* * QuartzAddScreen * Do mode dependent initialization of each screen for Quartz. */ Bool -QuartzAddScreen(int index, ScreenPtr pScreen) +QuartzAddScreen(int index, + ScreenPtr pScreen) { // allocate space for private per screen Quartz specific storage QuartzScreenPtr displayInfo = calloc(sizeof(QuartzScreenRec), 1); @@ -114,7 +116,8 @@ QuartzAddScreen(int index, ScreenPtr pScreen) * Finalize mode specific setup of each screen. */ Bool -QuartzSetupScreen(int index, ScreenPtr pScreen) +QuartzSetupScreen(int index, + ScreenPtr pScreen) { // do Quartz mode specific setup if (!quartzProcs->SetupScreen(index, pScreen)) @@ -139,7 +142,8 @@ QuartzSetupScreen(int index, ScreenPtr pScreen) * Quartz display initialization. */ void -QuartzInitOutput(int argc, char **argv) +QuartzInitOutput(int argc, + char **argv) { /* For XQuartz, we want to just use the default signal handler to work better with CrashTracer */ signal(SIGSEGV, SIG_DFL); @@ -162,7 +166,8 @@ QuartzInitOutput(int argc, char **argv) #endif if (!RegisterBlockAndWakeupHandlers(QuartzBlockHandler, - QuartzWakeupHandler, NULL)) { + QuartzWakeupHandler, + NULL)) { FatalError("Could not register block and wakeup handlers."); } @@ -178,7 +183,8 @@ QuartzInitOutput(int argc, char **argv) * Inform the main thread the X server is ready to handle events. */ void -QuartzInitInput(int argc, char **argv) +QuartzInitInput(int argc, + char **argv) { X11ApplicationSetCanQuit(0); X11ApplicationServerReady(); @@ -212,8 +218,8 @@ QuartzUpdateScreens(void) pScreen->x = x; pScreen->y = y; - pScreen->mmWidth = pScreen->mmWidth * ((double) width / pScreen->width); - pScreen->mmHeight = pScreen->mmHeight * ((double) height / pScreen->height); + pScreen->mmWidth = pScreen->mmWidth * ((double)width / pScreen->width); + pScreen->mmHeight = pScreen->mmHeight * ((double)height / pScreen->height); pScreen->width = width; pScreen->height = height; @@ -241,10 +247,11 @@ QuartzUpdateScreens(void) inputInfo.pointer->spriteInfo->sprite->physLimits = bounds; inputInfo.pointer->spriteInfo->sprite->hotLimits = bounds; - DEBUG_LOG - ("Root Window: %dx%d @ (%d, %d) darwinMainScreen (%d, %d) xy (%d, %d) dixScreenOrigins (%d, %d)\n", - width, height, x - sx, y - sy, darwinMainScreenX, darwinMainScreenY, x, - y, pScreen->x, pScreen->y); + DEBUG_LOG( + "Root Window: %dx%d @ (%d, %d) darwinMainScreen (%d, %d) xy (%d, %d) dixScreenOrigins (%d, %d)\n", + width, height, x - sx, y - sy, darwinMainScreenX, darwinMainScreenY, + x, y, + pScreen->x, pScreen->y); /* Send an event for the root reconfigure */ e.u.u.type = ConfigureNotify; @@ -278,7 +285,7 @@ QuartzScreenSaver(int state) { static CFRunLoopTimerRef pokeActivityTimer = NULL; static CFRunLoopTimerContext pokeActivityContext = - { 0, NULL, NULL, NULL, NULL }; + { 0, NULL, NULL, NULL, NULL }; static OSSpinLock pokeActivitySpinLock = OS_SPINLOCK_INIT; OSSpinLockLock(&pokeActivitySpinLock); @@ -295,18 +302,20 @@ QuartzScreenSaver(int state) if (pokeActivityTimer != NULL) goto QuartzScreenSaverEnd; - pokeActivityTimer = - CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent(), 30, 0, 0, - pokeActivityCallback, &pokeActivityContext); + pokeActivityTimer = CFRunLoopTimerCreate(NULL, + CFAbsoluteTimeGetCurrent(), + 30, 0, 0, + pokeActivityCallback, + &pokeActivityContext); if (pokeActivityTimer == NULL) { ErrorF("Unable to create pokeActivityTimer.\n"); goto QuartzScreenSaverEnd; } - CFRunLoopAddTimer(CFRunLoopGetMain(), pokeActivityTimer, - kCFRunLoopCommonModes); + CFRunLoopAddTimer( + CFRunLoopGetMain(), pokeActivityTimer, kCFRunLoopCommonModes); } - QuartzScreenSaverEnd: +QuartzScreenSaverEnd: OSSpinLockUnlock(&pokeActivitySpinLock); } @@ -340,7 +349,6 @@ QuartzShowFullscreen(int state) RootlessShowAllWindows(); for (i = 0; i < screenInfo.numScreens; i++) { ScreenPtr pScreen = screenInfo.screens[i]; - RootlessRepositionWindows(pScreen); // JH: I don't think this is necessary, but keeping it here as a reminder //RootlessUpdateScreenPixmap(pScreen); @@ -348,7 +356,7 @@ QuartzShowFullscreen(int state) } /* Somehow the menubar manages to interfere with our event stream - * in fullscreen mode, even though it's not visible. + * in fullscreen mode, even though it's not visible. */ X11ApplicationShowHideMenubar(!XQuartzFullscreenVisible); @@ -458,7 +466,7 @@ QuartzSetRootClip(BOOL enable) } } -/* +/* * QuartzSpaceChanged * Unmap offscreen windows, map onscreen windows */ @@ -466,7 +474,8 @@ void QuartzSpaceChanged(uint32_t space_id) { /* Do something special here, so we don't depend on quartz-wm for spaces to work... */ - DEBUG_LOG("Space Changed (%u) ... do something interesting...\n", space_id); + DEBUG_LOG("Space Changed (%u) ... do something interesting...\n", + space_id); } /* @@ -476,14 +485,13 @@ QuartzSpaceChanged(uint32_t space_id) */ void QuartzCopyDisplayIDs(ScreenPtr pScreen, - int displayCount, CGDirectDisplayID * displayIDs) + int displayCount, CGDirectDisplayID *displayIDs) { QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); free(pQuartzScreen->displayIDs); if (displayCount) { size_t size = displayCount * sizeof(CGDirectDisplayID); - pQuartzScreen->displayIDs = malloc(size); memcpy(pQuartzScreen->displayIDs, displayIDs, size); } @@ -493,11 +501,12 @@ QuartzCopyDisplayIDs(ScreenPtr pScreen, pQuartzScreen->displayCount = displayCount; } -void NSBeep(void); void -DDXRingBell(int volume, // volume is % of max - int pitch, // pitch is Hz - int duration) // duration is milliseconds +NSBeep(void); +void +DDXRingBell(int volume, // volume is % of max + int pitch, // pitch is Hz + int duration) // duration is milliseconds { if (volume) NSBeep(); diff --git a/xorg-server/hw/xquartz/quartz.h b/xorg-server/hw/xquartz/quartz.h index 0a9c47a6b..47c44162f 100644 --- a/xorg-server/hw/xquartz/quartz.h +++ b/xorg-server/hw/xquartz/quartz.h @@ -4,6 +4,7 @@ * External interface of the Quartz display modes seen by the generic, mode * independent parts of the Darwin X server. * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. * Copyright (c) 2001-2003 Greg Parker and Torrey T. Lyons. * All Rights Reserved. * @@ -39,7 +40,7 @@ /*------------------------------------------ Quartz display mode function types - ------------------------------------------*/ + ------------------------------------------*/ /* * Display mode initialization @@ -80,12 +81,12 @@ typedef void * (*FrameForWindowProc)(WindowPtr pWin, Bool create); typedef WindowPtr (*TopLevelParentProc)(WindowPtr pWindow); typedef Bool (*CreateSurfaceProc) (ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable, - unsigned int client_id, unsigned int *surface_id, - unsigned int key[2], void (*notify) (void *arg, void *data), - void *notify_data); + unsigned int client_id, unsigned int *surface_id, + unsigned int key[2], void (*notify)(void *arg, void *data), + void *notify_data); typedef Bool (*DestroySurfaceProc) (ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable, - void (*notify) (void *arg, void *data), void *notify_data); + void (*notify)(void *arg, void *data), void *notify_data); /* * Quartz display mode function list @@ -126,22 +127,37 @@ extern Bool XQuartzOptionSendsAlt; /* Alt or Mode_switch? */ extern int32_t XQuartzShieldingWindowLevel; /* CGShieldingWindowLevel() or 0 */ -Bool QuartzAddScreen(int index, ScreenPtr pScreen); -Bool QuartzSetupScreen(int index, ScreenPtr pScreen); -void QuartzInitOutput(int argc,char **argv); -void QuartzInitInput(int argc, char **argv); -void QuartzInitServer(int argc, char **argv, char **envp); -void QuartzGiveUp(void); -void QuartzProcessEvent(xEvent *xe); -void QuartzUpdateScreens(void); - -void QuartzShow(void); -void QuartzHide(void); -void QuartzSetRootClip(BOOL enable); -void QuartzSpaceChanged(uint32_t space_id); - -void QuartzSetRootless(Bool state); -void QuartzShowFullscreen(Bool state); - -int server_main(int argc, char **argv, char **envp); +Bool +QuartzAddScreen(int index, ScreenPtr pScreen); +Bool +QuartzSetupScreen(int index, ScreenPtr pScreen); +void +QuartzInitOutput(int argc, char **argv); +void +QuartzInitInput(int argc, char **argv); +void +QuartzInitServer(int argc, char **argv, char **envp); +void +QuartzGiveUp(void); +void +QuartzProcessEvent(xEvent *xe); +void +QuartzUpdateScreens(void); + +void +QuartzShow(void); +void +QuartzHide(void); +void +QuartzSetRootClip(BOOL enable); +void +QuartzSpaceChanged(uint32_t space_id); + +void +QuartzSetRootless(Bool state); +void +QuartzShowFullscreen(Bool state); + +int +server_main(int argc, char **argv, char **envp); #endif diff --git a/xorg-server/hw/xquartz/quartzCocoa.m b/xorg-server/hw/xquartz/quartzCocoa.m index c0401b5e1..db2b3cfd6 100644 --- a/xorg-server/hw/xquartz/quartzCocoa.m +++ b/xorg-server/hw/xquartz/quartzCocoa.m @@ -48,19 +48,23 @@ * Clean out any autoreleased objects. */ void -QuartzBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadmask) +QuartzBlockHandler(pointer blockData, + OSTimePtr pTimeout, + pointer pReadmask) { static NSAutoreleasePool *aPool = nil; [aPool release]; - aPool =[[NSAutoreleasePool alloc] init]; + aPool = [[NSAutoreleasePool alloc] init]; } /* * QuartzWakeupHandler */ void -QuartzWakeupHandler(pointer blockData, int result, pointer pReadmask) +QuartzWakeupHandler(pointer blockData, + int result, + pointer pReadmask) { // nothing here } diff --git a/xorg-server/hw/xquartz/quartzCommon.h b/xorg-server/hw/xquartz/quartzCommon.h index e12e1d25c..813bc7713 100644 --- a/xorg-server/hw/xquartz/quartzCommon.h +++ b/xorg-server/hw/xquartz/quartzCommon.h @@ -40,15 +40,15 @@ // Other shared data extern DevPrivateKeyRec quartzScreenKeyRec; - #define quartzScreenKey (&quartzScreenKeyRec) extern int aquaMenuBarHeight; // Name of GLX bundle for native OpenGL -extern const char *quartzOpenGLBundle; +extern const char *quartzOpenGLBundle; -void QuartzBlockHandler(pointer blockData, OSTimePtr pTimeout, - pointer pReadmask); -void QuartzWakeupHandler(pointer blockData, int result, pointer pReadmask); +void +QuartzBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadmask); +void +QuartzWakeupHandler(pointer blockData, int result, pointer pReadmask); -#endif /* _QUARTZCOMMON_H */ +#endif /* _QUARTZCOMMON_H */ diff --git a/xorg-server/hw/xquartz/quartzKeyboard.c b/xorg-server/hw/xquartz/quartzKeyboard.c index e7aadbcf5..84e34d916 100644 --- a/xorg-server/hw/xquartz/quartzKeyboard.c +++ b/xorg-server/hw/xquartz/quartzKeyboard.c @@ -1,7 +1,7 @@ /* quartzKeyboard.c: Keyboard support for Xquartz - Copyright (c) 2003-2008 Apple Inc. + Copyright (c) 2003-2012 Apple Inc. Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved. Copyright 2004 Kaleb S. KEITHLEY. All Rights Reserved. @@ -29,7 +29,7 @@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ + */ #include "sanitizedCarbon.h" @@ -37,8 +37,8 @@ #include <dix-config.h> #endif -#define HACK_MISSING 1 -#define HACK_KEYPAD 1 +#define HACK_MISSING 1 +#define HACK_KEYPAD 1 #define HACK_BLACKLIST 1 #include <unistd.h> @@ -65,7 +65,7 @@ #include "keysym2ucs.h" extern void - CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master); +CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master); enum { MOD_COMMAND = 256, @@ -84,31 +84,33 @@ const static struct { unsigned short keycode; KeySym keysym; } known_keys[] = { - { - 55, XK_Meta_L}, { - 56, XK_Shift_L}, { - 57, XK_Caps_Lock}, { - 58, XK_Alt_L}, { - 59, XK_Control_L}, { - 60, XK_Shift_R}, { - 61, XK_Alt_R}, { - 62, XK_Control_R}, { - 63, XK_Meta_R}, { - 122, XK_F1}, { - 120, XK_F2}, { - 99, XK_F3}, { - 118, XK_F4}, { - 96, XK_F5}, { - 97, XK_F6}, { - 98, XK_F7}, { - 100, XK_F8}, { - 101, XK_F9}, { - 109, XK_F10}, { - 103, XK_F11}, { - 111, XK_F12}, { - 105, XK_F13}, { - 107, XK_F14}, { -113, XK_F15},}; + { 55, XK_Meta_L }, + { 56, XK_Shift_L }, + { 57, XK_Caps_Lock }, + { 58, XK_Alt_L }, + { 59, XK_Control_L }, + + { 60, XK_Shift_R }, + { 61, XK_Alt_R }, + { 62, XK_Control_R }, + { 63, XK_Meta_R }, + + { 122, XK_F1 }, + { 120, XK_F2 }, + { 99, XK_F3 }, + { 118, XK_F4 }, + { 96, XK_F5 }, + { 97, XK_F6 }, + { 98, XK_F7 }, + { 100, XK_F8 }, + { 101, XK_F9 }, + { 109, XK_F10 }, + { 103, XK_F11 }, + { 111, XK_F12 }, + { 105, XK_F13 }, + { 107, XK_F14 }, + { 113, XK_F15 }, +}; #endif #if HACK_KEYPAD @@ -119,24 +121,24 @@ const static struct { unsigned short keycode; KeySym normal, keypad; } known_numeric_keys[] = { - { - 65, XK_period, XK_KP_Decimal}, { - 67, XK_asterisk, XK_KP_Multiply}, { - 69, XK_plus, XK_KP_Add}, { - 75, XK_slash, XK_KP_Divide}, { - 76, 0x01000003, XK_KP_Enter}, { - 78, XK_minus, XK_KP_Subtract}, { - 81, XK_equal, XK_KP_Equal}, { - 82, XK_0, XK_KP_0}, { - 83, XK_1, XK_KP_1}, { - 84, XK_2, XK_KP_2}, { - 85, XK_3, XK_KP_3}, { - 86, XK_4, XK_KP_4}, { - 87, XK_5, XK_KP_5}, { - 88, XK_6, XK_KP_6}, { - 89, XK_7, XK_KP_7}, { - 91, XK_8, XK_KP_8}, { -92, XK_9, XK_KP_9},}; + { 65, XK_period, XK_KP_Decimal }, + { 67, XK_asterisk, XK_KP_Multiply }, + { 69, XK_plus, XK_KP_Add }, + { 75, XK_slash, XK_KP_Divide }, + { 76, 0x01000003, XK_KP_Enter }, + { 78, XK_minus, XK_KP_Subtract }, + { 81, XK_equal, XK_KP_Equal }, + { 82, XK_0, XK_KP_0 }, + { 83, XK_1, XK_KP_1 }, + { 84, XK_2, XK_KP_2 }, + { 85, XK_3, XK_KP_3 }, + { 86, XK_4, XK_KP_4 }, + { 87, XK_5, XK_KP_5 }, + { 88, XK_6, XK_KP_6 }, + { 89, XK_7, XK_KP_7 }, + { 91, XK_8, XK_KP_8 }, + { 92, XK_9, XK_KP_9 }, +}; #endif #if HACK_BLACKLIST @@ -155,40 +157,30 @@ const static unsigned short keycode_blacklist[] = { 66, 70, 72, 77 }; const static struct { KeySym normal, dead; } dead_keys[] = { - { - XK_grave, XK_dead_grave}, { - XK_apostrophe, XK_dead_acute}, /* US:"=" on a Czech keyboard */ - { - XK_acute, XK_dead_acute}, { - UKEYSYM(0x384), XK_dead_acute}, /* US:";" on a Greek keyboard */ -// {XK_Greek_accentdieresis, XK_dead_diaeresis}, /* US:"opt+;" on a Greek keyboard ... replace with dead_accentdieresis if there is one */ - { - XK_asciicircum, XK_dead_circumflex}, { - UKEYSYM(0x2c6), XK_dead_circumflex}, /* MODIFIER LETTER CIRCUMFLEX ACCENT */ - { - XK_asciitilde, XK_dead_tilde}, { - UKEYSYM(0x2dc), XK_dead_tilde}, /* SMALL TILDE */ - { - XK_macron, XK_dead_macron}, { - XK_breve, XK_dead_breve}, { - XK_abovedot, XK_dead_abovedot}, { - XK_diaeresis, XK_dead_diaeresis}, { - UKEYSYM(0x2da), XK_dead_abovering}, /* DOT ABOVE */ - { - XK_doubleacute, XK_dead_doubleacute}, { - XK_caron, XK_dead_caron}, { - XK_cedilla, XK_dead_cedilla}, { - XK_ogonek, XK_dead_ogonek}, { - UKEYSYM(0x269), XK_dead_iota}, /* LATIN SMALL LETTER IOTA */ - { - UKEYSYM(0x2ec), XK_dead_voiced_sound}, /* MODIFIER LETTER VOICING */ -/* {XK_semivoiced_sound, XK_dead_semivoiced_sound}, */ - { - UKEYSYM(0x323), XK_dead_belowdot}, /* COMBINING DOT BELOW */ - { - UKEYSYM(0x309), XK_dead_hook}, /* COMBINING HOOK ABOVE */ - { - UKEYSYM(0x31b), XK_dead_horn}, /* COMBINING HORN */ + { XK_grave, XK_dead_grave }, + { XK_apostrophe, XK_dead_acute }, /* US:"=" on a Czech keyboard */ + { XK_acute, XK_dead_acute }, + { UKEYSYM(0x384), XK_dead_acute }, /* US:";" on a Greek keyboard */ + // {XK_Greek_accentdieresis, XK_dead_diaeresis}, /* US:"opt+;" on a Greek keyboard ... replace with dead_accentdieresis if there is one */ + { XK_asciicircum, XK_dead_circumflex }, + { UKEYSYM(0x2c6), XK_dead_circumflex }, /* MODIFIER LETTER CIRCUMFLEX ACCENT */ + { XK_asciitilde, XK_dead_tilde }, + { UKEYSYM(0x2dc), XK_dead_tilde }, /* SMALL TILDE */ + { XK_macron, XK_dead_macron }, + { XK_breve, XK_dead_breve }, + { XK_abovedot, XK_dead_abovedot }, + { XK_diaeresis, XK_dead_diaeresis }, + { UKEYSYM(0x2da), XK_dead_abovering }, /* DOT ABOVE */ + { XK_doubleacute, XK_dead_doubleacute }, + { XK_caron, XK_dead_caron }, + { XK_cedilla, XK_dead_cedilla }, + { XK_ogonek, XK_dead_ogonek }, + { UKEYSYM(0x269), XK_dead_iota }, /* LATIN SMALL LETTER IOTA */ + { UKEYSYM(0x2ec), XK_dead_voiced_sound }, /* MODIFIER LETTER VOICING */ + /* {XK_semivoiced_sound, XK_dead_semivoiced_sound}, */ + { UKEYSYM(0x323), XK_dead_belowdot }, /* COMBINING DOT BELOW */ + { UKEYSYM(0x309), XK_dead_hook }, /* COMBINING HOOK ABOVE */ + { UKEYSYM(0x31b), XK_dead_horn }, /* COMBINING HORN */ }; typedef struct darwinKeyboardInfo_struct { @@ -201,7 +193,7 @@ darwinKeyboardInfo keyInfo; pthread_mutex_t keyInfo_mutex = PTHREAD_MUTEX_INITIALIZER; static void -DarwinChangeKeyboardControl(DeviceIntPtr device, KeybdCtrl * ctrl) +DarwinChangeKeyboardControl(DeviceIntPtr device, KeybdCtrl *ctrl) { // FIXME: to be implemented // keyclick, bell volume / pitch, autorepead, LED's @@ -217,7 +209,7 @@ DarwinChangeKeyboardControl(DeviceIntPtr device, KeybdCtrl * ctrl) * the modMap and modifierKeycodes fields. */ static void -DarwinBuildModifierMaps(darwinKeyboardInfo * info) +DarwinBuildModifierMaps(darwinKeyboardInfo *info) { int i; KeySym *k; @@ -266,7 +258,7 @@ DarwinBuildModifierMaps(darwinKeyboardInfo * info) info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i; info->modMap[MIN_KEYCODE + i] = Mod1Mask; if (!XQuartzOptionSendsAlt) - *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. + *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. break; case XK_Alt_R: @@ -276,13 +268,13 @@ DarwinBuildModifierMaps(darwinKeyboardInfo * info) info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i; #endif if (!XQuartzOptionSendsAlt) - *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. + *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. info->modMap[MIN_KEYCODE + i] = Mod1Mask; break; case XK_Mode_switch: - ErrorF - ("DarwinBuildModifierMaps: XK_Mode_switch encountered, unable to determine side.\n"); + ErrorF( + "DarwinBuildModifierMaps: XK_Mode_switch encountered, unable to determine side.\n"); info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i; #ifdef NX_MODIFIERKEY_RALTERNATE info->modifierKeycodes[NX_MODIFIERKEY_RALTERNATE][0] = i; @@ -339,7 +331,7 @@ static void DarwinKeyboardSetRepeat(DeviceIntPtr pDev, int initialKeyRepeatValue, int keyRepeatValue) { - if (initialKeyRepeatValue == 300000) { // off + if (initialKeyRepeatValue == 300000) { // off /* Turn off repeats globally */ XkbSetRepeatKeys(pDev, -1, AutoRepeatModeOff); } @@ -405,7 +397,7 @@ DarwinKeyboardReloadHandler(void) DEBUG_LOG("DarwinKeyboardReloadHandler\n"); /* Get our key repeat settings from GlobalPreferences */ - (void) CFPreferencesAppSynchronize(CFSTR(".GlobalPreferences")); + (void)CFPreferencesAppSynchronize(CFSTR(".GlobalPreferences")); initialKeyRepeatValue = CFPreferencesGetAppIntegerValue(CFSTR("InitialKeyRepeat"), @@ -413,13 +405,16 @@ DarwinKeyboardReloadHandler(void) if (!ok) initialKeyRepeatValue = 35; - keyRepeatValue = - CFPreferencesGetAppIntegerValue(CFSTR("KeyRepeat"), - CFSTR(".GlobalPreferences"), &ok); + keyRepeatValue = CFPreferencesGetAppIntegerValue(CFSTR( + "KeyRepeat"), + CFSTR( + ".GlobalPreferences"), + &ok); if (!ok) keyRepeatValue = 6; - pthread_mutex_lock(&keyInfo_mutex); { + pthread_mutex_lock(&keyInfo_mutex); + { /* Initialize our keySyms */ keySyms.map = keyInfo.keyMap; keySyms.mapWidth = GLYPHS_PER_KEY; @@ -436,43 +431,45 @@ DarwinKeyboardReloadHandler(void) /* Apply the mappings to the core keyboard */ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) { - if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->key) { - XkbApplyMappingChange(pDev, &keySyms, keySyms.minKeyCode, - keySyms.maxKeyCode - keySyms.minKeyCode + - 1, keyInfo.modMap, serverClient); + if ((pDev->coreEvents || + pDev == inputInfo.keyboard) && pDev->key) { + XkbApplyMappingChange( + pDev, &keySyms, keySyms.minKeyCode, + keySyms.maxKeyCode - + keySyms.minKeyCode + 1, + keyInfo.modMap, serverClient); DarwinKeyboardSetRepeat(pDev, initialKeyRepeatValue, keyRepeatValue); } } - } - pthread_mutex_unlock(&keyInfo_mutex); + } pthread_mutex_unlock(&keyInfo_mutex); /* Modify with xmodmap */ if (access(xmodmap, F_OK) == 0) { /* Check for system .Xmodmap */ if (access(sysmodmap, F_OK) == 0) { - if (snprintf(cmd, sizeof(cmd), "%s %s", xmodmap, sysmodmap) < - sizeof(cmd)) { + if (snprintf(cmd, sizeof(cmd), "%s %s", xmodmap, + sysmodmap) < sizeof(cmd)) { X11ApplicationLaunchClient(cmd); } else { - ErrorF - ("X11.app: Unable to create / execute xmodmap command line"); + ErrorF( + "X11.app: Unable to create / execute xmodmap command line"); } } /* Check for user's local .Xmodmap */ if ((homedir != NULL) && - (snprintf(usermodmap, sizeof(usermodmap), "%s/.Xmodmap", homedir) < - sizeof(usermodmap))) { + (snprintf(usermodmap, sizeof(usermodmap), "%s/.Xmodmap", + homedir) < sizeof(usermodmap))) { if (access(usermodmap, F_OK) == 0) { - if (snprintf(cmd, sizeof(cmd), "%s %s", xmodmap, usermodmap) < - sizeof(cmd)) { + if (snprintf(cmd, sizeof(cmd), "%s %s", xmodmap, + usermodmap) < sizeof(cmd)) { X11ApplicationLaunchClient(cmd); } else { - ErrorF - ("X11.app: Unable to create / execute xmodmap command line"); + ErrorF( + "X11.app: Unable to create / execute xmodmap command line"); } } } @@ -502,7 +499,6 @@ int DarwinModifierNXKeyToNXKeycode(int key, int side) { int retval; - pthread_mutex_lock(&keyInfo_mutex); retval = keyInfo.modifierKeycodes[key][side]; pthread_mutex_unlock(&keyInfo_mutex); @@ -526,8 +522,7 @@ DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide) 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; + if (keyInfo.modifierKeycodes[key][side] == keycode) break; } } pthread_mutex_unlock(&keyInfo_mutex); @@ -535,8 +530,7 @@ DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide) if (key == NX_NUMMODIFIERS) { return -1; } - if (outSide) - *outSide = side; + if (outSide) *outSide = side; return key; } @@ -551,42 +545,57 @@ DarwinModifierNXMaskToNXKey(int mask) switch (mask) { case NX_ALPHASHIFTMASK: return NX_MODIFIERKEY_ALPHALOCK; + case NX_SHIFTMASK: return NX_MODIFIERKEY_SHIFT; + #ifdef NX_DEVICELSHIFTKEYMASK case NX_DEVICELSHIFTKEYMASK: return NX_MODIFIERKEY_SHIFT; + case NX_DEVICERSHIFTKEYMASK: return NX_MODIFIERKEY_RSHIFT; + #endif case NX_CONTROLMASK: return NX_MODIFIERKEY_CONTROL; + #ifdef NX_DEVICELCTLKEYMASK case NX_DEVICELCTLKEYMASK: return NX_MODIFIERKEY_CONTROL; + case NX_DEVICERCTLKEYMASK: return NX_MODIFIERKEY_RCONTROL; + #endif case NX_ALTERNATEMASK: return NX_MODIFIERKEY_ALTERNATE; + #ifdef NX_DEVICELALTKEYMASK case NX_DEVICELALTKEYMASK: return NX_MODIFIERKEY_ALTERNATE; + case NX_DEVICERALTKEYMASK: return NX_MODIFIERKEY_RALTERNATE; + #endif case NX_COMMANDMASK: return NX_MODIFIERKEY_COMMAND; + #ifdef NX_DEVICELCMDKEYMASK case NX_DEVICELCMDKEYMASK: return NX_MODIFIERKEY_COMMAND; + case NX_DEVICERCMDKEYMASK: return NX_MODIFIERKEY_RCOMMAND; + #endif case NX_NUMERICPADMASK: return NX_MODIFIERKEY_NUMERICPAD; + case NX_HELPMASK: return NX_MODIFIERKEY_HELP; + case NX_SECONDARYFNMASK: return NX_MODIFIERKEY_SECONDARYFN; } @@ -603,37 +612,52 @@ DarwinModifierNXKeyToNXMask(int key) switch (key) { case NX_MODIFIERKEY_ALPHALOCK: return NX_ALPHASHIFTMASK; + #ifdef NX_DEVICELSHIFTKEYMASK case NX_MODIFIERKEY_SHIFT: return NX_DEVICELSHIFTKEYMASK; + case NX_MODIFIERKEY_RSHIFT: return NX_DEVICERSHIFTKEYMASK; + case NX_MODIFIERKEY_CONTROL: return NX_DEVICELCTLKEYMASK; + case NX_MODIFIERKEY_RCONTROL: return NX_DEVICERCTLKEYMASK; + case NX_MODIFIERKEY_ALTERNATE: return NX_DEVICELALTKEYMASK; + case NX_MODIFIERKEY_RALTERNATE: return NX_DEVICERALTKEYMASK; + case NX_MODIFIERKEY_COMMAND: return NX_DEVICELCMDKEYMASK; + case NX_MODIFIERKEY_RCOMMAND: return NX_DEVICERCMDKEYMASK; + #else case NX_MODIFIERKEY_SHIFT: return NX_SHIFTMASK; + case NX_MODIFIERKEY_CONTROL: return NX_CONTROLMASK; + case NX_MODIFIERKEY_ALTERNATE: return NX_ALTERNATEMASK; + case NX_MODIFIERKEY_COMMAND: return NX_COMMANDMASK; + #endif case NX_MODIFIERKEY_NUMERICPAD: return NX_NUMERICPADMASK; + case NX_MODIFIERKEY_HELP: return NX_HELPMASK; + case NX_MODIFIERKEY_SECONDARYFN: return NX_SECONDARYFNMASK; } @@ -649,80 +673,56 @@ DarwinModifierStringToNXMask(const char *str, int separatelr) { #ifdef NX_DEVICELSHIFTKEYMASK if (separatelr) { - if (!strcasecmp(str, "shift")) - return NX_DEVICELSHIFTKEYMASK | NX_DEVICERSHIFTKEYMASK; - if (!strcasecmp(str, "control")) - return NX_DEVICELCTLKEYMASK | NX_DEVICERCTLKEYMASK; - if (!strcasecmp(str, "option")) - return NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK; - if (!strcasecmp(str, "alt")) - return NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK; - if (!strcasecmp(str, "command")) - return NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK; - if (!strcasecmp(str, "lshift")) - return NX_DEVICELSHIFTKEYMASK; - if (!strcasecmp(str, "rshift")) - return NX_DEVICERSHIFTKEYMASK; - if (!strcasecmp(str, "lcontrol")) - return NX_DEVICELCTLKEYMASK; - if (!strcasecmp(str, "rcontrol")) - return NX_DEVICERCTLKEYMASK; - if (!strcasecmp(str, "loption")) - return NX_DEVICELALTKEYMASK; - if (!strcasecmp(str, "roption")) - return NX_DEVICERALTKEYMASK; - if (!strcasecmp(str, "lalt")) - return NX_DEVICELALTKEYMASK; - if (!strcasecmp(str, "ralt")) - return NX_DEVICERALTKEYMASK; - if (!strcasecmp(str, "lcommand")) - return NX_DEVICELCMDKEYMASK; - if (!strcasecmp(str, "rcommand")) - return NX_DEVICERCMDKEYMASK; + if (!strcasecmp(str, + "shift")) return NX_DEVICELSHIFTKEYMASK | + NX_DEVICERSHIFTKEYMASK; + if (!strcasecmp(str, + "control")) return NX_DEVICELCTLKEYMASK | + NX_DEVICERCTLKEYMASK; + if (!strcasecmp(str, + "option")) return NX_DEVICELALTKEYMASK | + NX_DEVICERALTKEYMASK; + if (!strcasecmp(str, + "alt")) return NX_DEVICELALTKEYMASK | + NX_DEVICERALTKEYMASK; + if (!strcasecmp(str, + "command")) return NX_DEVICELCMDKEYMASK | + NX_DEVICERCMDKEYMASK; + if (!strcasecmp(str, "lshift")) return NX_DEVICELSHIFTKEYMASK; + if (!strcasecmp(str, "rshift")) return NX_DEVICERSHIFTKEYMASK; + if (!strcasecmp(str, "lcontrol")) return NX_DEVICELCTLKEYMASK; + if (!strcasecmp(str, "rcontrol")) return NX_DEVICERCTLKEYMASK; + if (!strcasecmp(str, "loption")) return NX_DEVICELALTKEYMASK; + if (!strcasecmp(str, "roption")) return NX_DEVICERALTKEYMASK; + if (!strcasecmp(str, "lalt")) return NX_DEVICELALTKEYMASK; + if (!strcasecmp(str, "ralt")) return NX_DEVICERALTKEYMASK; + if (!strcasecmp(str, "lcommand")) return NX_DEVICELCMDKEYMASK; + if (!strcasecmp(str, "rcommand")) return NX_DEVICERCMDKEYMASK; } else { #endif - if (!strcasecmp(str, "shift")) - return NX_SHIFTMASK; - if (!strcasecmp(str, "control")) - return NX_CONTROLMASK; - if (!strcasecmp(str, "option")) - return NX_ALTERNATEMASK; - if (!strcasecmp(str, "alt")) - return NX_ALTERNATEMASK; - if (!strcasecmp(str, "command")) - return NX_COMMANDMASK; - if (!strcasecmp(str, "lshift")) - return NX_SHIFTMASK; - if (!strcasecmp(str, "rshift")) - return NX_SHIFTMASK; - if (!strcasecmp(str, "lcontrol")) - return NX_CONTROLMASK; - if (!strcasecmp(str, "rcontrol")) - return NX_CONTROLMASK; - if (!strcasecmp(str, "loption")) - return NX_ALTERNATEMASK; - if (!strcasecmp(str, "roption")) - return NX_ALTERNATEMASK; - if (!strcasecmp(str, "lalt")) - return NX_ALTERNATEMASK; - if (!strcasecmp(str, "ralt")) - return NX_ALTERNATEMASK; - if (!strcasecmp(str, "lcommand")) - return NX_COMMANDMASK; - if (!strcasecmp(str, "rcommand")) - return NX_COMMANDMASK; + if (!strcasecmp(str, "shift")) return NX_SHIFTMASK; + if (!strcasecmp(str, "control")) return NX_CONTROLMASK; + if (!strcasecmp(str, "option")) return NX_ALTERNATEMASK; + if (!strcasecmp(str, "alt")) return NX_ALTERNATEMASK; + if (!strcasecmp(str, "command")) return NX_COMMANDMASK; + if (!strcasecmp(str, "lshift")) return NX_SHIFTMASK; + if (!strcasecmp(str, "rshift")) return NX_SHIFTMASK; + if (!strcasecmp(str, "lcontrol")) return NX_CONTROLMASK; + if (!strcasecmp(str, "rcontrol")) return NX_CONTROLMASK; + if (!strcasecmp(str, "loption")) return NX_ALTERNATEMASK; + if (!strcasecmp(str, "roption")) return NX_ALTERNATEMASK; + if (!strcasecmp(str, "lalt")) return NX_ALTERNATEMASK; + if (!strcasecmp(str, "ralt")) return NX_ALTERNATEMASK; + if (!strcasecmp(str, "lcommand")) return NX_COMMANDMASK; + if (!strcasecmp(str, "rcommand")) return NX_COMMANDMASK; #ifdef NX_DEVICELSHIFTKEYMASK - } +} #endif - if (!strcasecmp(str, "lock")) - return NX_ALPHASHIFTMASK; - if (!strcasecmp(str, "fn")) - return NX_SECONDARYFNMASK; - if (!strcasecmp(str, "help")) - return NX_HELPMASK; - if (!strcasecmp(str, "numlock")) - return NX_NUMERICPADMASK; + if (!strcasecmp(str, "lock")) return NX_ALPHASHIFTMASK; + if (!strcasecmp(str, "fn")) return NX_SECONDARYFNMASK; + if (!strcasecmp(str, "help")) return NX_HELPMASK; + if (!strcasecmp(str, "numlock")) return NX_NUMERICPADMASK; return 0; } @@ -745,28 +745,42 @@ macroman2ucs(unsigned char c) first character. */ static const unsigned short table[128] = { - 0xc4, 0xc5, 0xc7, 0xc9, 0xd1, 0xd6, 0xdc, 0xe1, - 0xe0, 0xe2, 0xe4, 0xe3, 0xe5, 0xe7, 0xe9, 0xe8, - 0xea, 0xeb, 0xed, 0xec, 0xee, 0xef, 0xf1, 0xf3, - 0xf2, 0xf4, 0xf6, 0xf5, 0xfa, 0xf9, 0xfb, 0xfc, - 0x2020, 0xb0, 0xa2, 0xa3, 0xa7, 0x2022, 0xb6, 0xdf, - 0xae, 0xa9, 0x2122, 0xb4, 0xa8, 0x2260, 0xc6, 0xd8, - 0x221e, 0xb1, 0x2264, 0x2265, 0xa5, 0xb5, 0x2202, 0x2211, - 0x220f, 0x3c0, 0x222b, 0xaa, 0xba, 0x3a9, 0xe6, 0xf8, - 0xbf, 0xa1, 0xac, 0x221a, 0x192, 0x2248, 0x2206, 0xab, - 0xbb, 0x2026, 0xa0, 0xc0, 0xc3, 0xd5, 0x152, 0x153, - 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xf7, 0x25ca, - 0xff, 0x178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02, - 0x2021, 0xb7, 0x201a, 0x201e, 0x2030, 0xc2, 0xca, 0xc1, - 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0xd3, 0xd4, - 0xf8ff, 0xd2, 0xda, 0xdb, 0xd9, 0x131, 0x2c6, 0x2dc, - 0xaf, 0x2d8, 0x2d9, 0x2da, 0xb8, 0x2dd, 0x2db, 0x2c7, + 0xc4, 0xc5, 0xc7, 0xc9, 0xd1, 0xd6, 0xdc, + 0xe1, + 0xe0, 0xe2, 0xe4, 0xe3, 0xe5, 0xe7, 0xe9, + 0xe8, + 0xea, 0xeb, 0xed, 0xec, 0xee, 0xef, 0xf1, + 0xf3, + 0xf2, 0xf4, 0xf6, 0xf5, 0xfa, 0xf9, 0xfb, + 0xfc, + 0x2020, 0xb0, 0xa2, 0xa3, 0xa7, 0x2022, 0xb6, + 0xdf, + 0xae, 0xa9, 0x2122, 0xb4, 0xa8, 0x2260, 0xc6, + 0xd8, + 0x221e, 0xb1, 0x2264, 0x2265, 0xa5, 0xb5, 0x2202, + 0x2211, + 0x220f, 0x3c0, 0x222b, 0xaa, 0xba, 0x3a9, 0xe6, + 0xf8, + 0xbf, 0xa1, 0xac, 0x221a, 0x192, 0x2248, 0x2206, + 0xab, + 0xbb, 0x2026, 0xa0, 0xc0, 0xc3, 0xd5, 0x152, + 0x153, + 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xf7, + 0x25ca, + 0xff, 0x178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, + 0xfb02, + 0x2021, 0xb7, 0x201a, 0x201e, 0x2030, 0xc2, 0xca, + 0xc1, + 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0xd3, + 0xd4, + 0xf8ff, 0xd2, 0xda, 0xdb, 0xd9, 0x131, 0x2c6, + 0x2dc, + 0xaf, 0x2d8, 0x2d9, 0x2da, 0xb8, 0x2dd, 0x2db, + 0x2c7, }; - if (c < 128) - return c; - else - return table[c - 128]; + if (c < 128) return c; + else return table[c - 128]; } static KeySym @@ -775,14 +789,13 @@ make_dead_key(KeySym in) int i; for (i = 0; i < sizeof(dead_keys) / sizeof(dead_keys[0]); i++) - if (dead_keys[i].normal == in) - return dead_keys[i].dead; + if (dead_keys[i].normal == in) return dead_keys[i].dead; return in; } static Bool -QuartzReadSystemKeymap(darwinKeyboardInfo * info) +QuartzReadSystemKeymap(darwinKeyboardInfo *info) { #if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050 KeyboardLayoutRef key_layout; @@ -801,9 +814,8 @@ QuartzReadSystemKeymap(darwinKeyboardInfo * info) TISCopyCurrentKeyboardLayoutInputSource(); if (currentKeyLayoutRef) { - currentKeyLayoutDataRef = - (CFDataRef) TISGetInputSourceProperty(currentKeyLayoutRef, - kTISPropertyUnicodeKeyLayoutData); + currentKeyLayoutDataRef = (CFDataRef)TISGetInputSourceProperty( + currentKeyLayoutRef, kTISPropertyUnicodeKeyLayoutData); if (currentKeyLayoutDataRef) chr_data = CFDataGetBytePtr(currentKeyLayoutDataRef); } @@ -811,18 +823,18 @@ QuartzReadSystemKeymap(darwinKeyboardInfo * info) #ifdef __clang__ #pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" // KLGetCurrentKeyboardLayout, KLGetKeyboardLayoutProperty +#pragma clang diagnostic ignored "-Wdeprecated-declarations" // KLGetCurrentKeyboardLayout, KLGetKeyboardLayoutProperty #endif #if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050 if (chr_data == NULL) { #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 - ErrorF - ("X11.app: Error detected in determining keyboard layout. If you are using an Apple-provided keyboard layout, please report this error at http://xquartz.macosforge.org and http://bugreport.apple.com\n"); - ErrorF - ("X11.app: Debug Info: keyboard_type=%u, currentKeyLayoutRef=%p, currentKeyLayoutDataRef=%p, chr_data=%p\n", - (unsigned) keyboard_type, currentKeyLayoutRef, - currentKeyLayoutDataRef, chr_data); + ErrorF( + "X11.app: Error detected in determining keyboard layout. If you are using an Apple-provided keyboard layout, please report this error at http://xquartz.macosforge.org and http://bugreport.apple.com\n"); + ErrorF( + "X11.app: Debug Info: keyboard_type=%u, currentKeyLayoutRef=%p, currentKeyLayoutDataRef=%p, chr_data=%p\n", + (unsigned)keyboard_type, currentKeyLayoutRef, + currentKeyLayoutDataRef, chr_data); #endif KLGetCurrentKeyboardLayout(&key_layout); @@ -830,25 +842,25 @@ QuartzReadSystemKeymap(darwinKeyboardInfo * info) #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 if (chr_data != NULL) { - ErrorF - ("X11.app: Fallback succeeded, but this is still a bug. Please report the above information.\n"); + ErrorF( + "X11.app: Fallback succeeded, but this is still a bug. Please report the above information.\n"); } #endif } if (chr_data == NULL) { - ErrorF - ("X11.app: Debug Info: kKLuchrData failed, trying kKLKCHRData.\n"); - ErrorF - ("If you are using a 3rd party keyboard layout, please see http://xquartz.macosforge.org/trac/ticket/154\n"); + ErrorF( + "X11.app: Debug Info: kKLuchrData failed, trying kKLKCHRData.\n"); + ErrorF( + "If you are using a 3rd party keyboard layout, please see http://xquartz.macosforge.org/trac/ticket/154\n"); KLGetKeyboardLayoutProperty(key_layout, kKLKCHRData, &chr_data); is_uchr = 0; num_keycodes = 128; #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 if (chr_data != NULL) { - ErrorF - ("X11.app: Fallback succeeded, but this is still a bug. Please report the above information.\n"); + ErrorF( + "X11.app: Fallback succeeded, but this is still a bug. Please report the above information.\n"); } #endif } @@ -877,7 +889,8 @@ QuartzReadSystemKeymap(darwinKeyboardInfo * info) must be used instead. */ for (i = 0; i < num_keycodes; i++) { - static const int mods[4] = { 0, MOD_SHIFT, MOD_OPTION, + static const int mods[4] = { + 0, MOD_SHIFT, MOD_OPTION, MOD_OPTION | MOD_SHIFT }; @@ -887,82 +900,74 @@ QuartzReadSystemKeymap(darwinKeyboardInfo * info) #if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050 if (is_uchr) { #endif - UniChar s[8]; - UniCharCount len; - UInt32 dead_key_state = 0, extra_dead = 0; - + UniChar s[8]; + UniCharCount len; + UInt32 dead_key_state = 0, extra_dead = 0; + + err = UCKeyTranslate(chr_data, i, kUCKeyActionDown, + mods[j] >> 8, keyboard_type, 0, + &dead_key_state, 8, &len, s); + if (err != noErr) continue; + + if (len == 0 && dead_key_state != 0) { + /* Found a dead key. Work out which one it is, but + remembering that it's dead. */ err = UCKeyTranslate(chr_data, i, kUCKeyActionDown, - mods[j] >> 8, keyboard_type, 0, - &dead_key_state, 8, &len, s); - if (err != noErr) - continue; - - if (len == 0 && dead_key_state != 0) { - /* Found a dead key. Work out which one it is, but - remembering that it's dead. */ - err = UCKeyTranslate(chr_data, i, kUCKeyActionDown, - mods[j] >> 8, keyboard_type, - kUCKeyTranslateNoDeadKeysMask, - &extra_dead, 8, &len, s); - if (err != noErr) - continue; - } + mods[j] >> 8, keyboard_type, + kUCKeyTranslateNoDeadKeysMask, + &extra_dead, 8, &len, s); + if (err != noErr) continue; + } - /* Not sure why 0x0010 is there. - * 0x0000 - <rdar://problem/7793566> 'Unicode Hex Input' ... - */ - if (len > 0 && s[0] != 0x0010 && s[0] != 0x0000) { - k[j] = ucs2keysym(s[0]); - if (dead_key_state != 0) - k[j] = make_dead_key(k[j]); - } -#if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + /* Not sure why 0x0010 is there. + * 0x0000 - <rdar://problem/7793566> 'Unicode Hex Input' ... + */ + if (len > 0 && s[0] != 0x0010 && s[0] != 0x0000) { + k[j] = ucs2keysym(s[0]); + if (dead_key_state != 0) k[j] = make_dead_key(k[j]); } - else { // kchr - UInt32 c, state = 0, state2 = 0; - UInt16 code; +#if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + } + else { // kchr + UInt32 c, state = 0, state2 = 0; + UInt16 code; - code = i | mods[j]; + code = i | mods[j]; #ifdef __clang__ #pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" // KeyTranslate +#pragma clang diagnostic ignored "-Wdeprecated-declarations" // KeyTranslate #endif - c = KeyTranslate(chr_data, code, &state); + c = KeyTranslate(chr_data, code, &state); - /* Dead keys are only processed on key-down, so ask - to translate those events. When we find a dead key, - translating the matching key up event will give - us the actual dead character. */ + /* Dead keys are only processed on key-down, so ask + to translate those events. When we find a dead key, + translating the matching key up event will give + us the actual dead character. */ - if (state != 0) - c = KeyTranslate(chr_data, code | 128, &state2); + if (state != 0) + c = KeyTranslate(chr_data, code | 128, &state2); #ifdef __clang__ #pragma clang diagnostic pop #endif - /* Characters seem to be in MacRoman encoding. */ + /* Characters seem to be in MacRoman encoding. */ - if (c != 0 && c != 0x0010) { - k[j] = ucs2keysym(macroman2ucs(c & 255)); + if (c != 0 && c != 0x0010) { + k[j] = ucs2keysym(macroman2ucs(c & 255)); - if (state != 0) - k[j] = make_dead_key(k[j]); - } + if (state != 0) k[j] = make_dead_key(k[j]); } + } #endif } - if (k[3] == k[2]) - k[3] = NoSymbol; - if (k[1] == k[0]) - k[1] = NoSymbol; - if (k[0] == k[2] && k[1] == k[3]) - k[2] = k[3] = NoSymbol; - if (k[3] == k[0] && k[2] == k[1] && k[2] == NoSymbol) - k[3] = NoSymbol; + if (k[3] == k[2]) k[3] = NoSymbol; + if (k[1] == k[0]) k[1] = NoSymbol; + if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol; + if (k[3] == k[0] && k[2] == k[1] && k[2] == NoSymbol) k[3] = NoSymbol; } #if HACK_MISSING @@ -1006,7 +1011,6 @@ Bool QuartsResyncKeymap(Bool sendDDXEvent) { Bool retval; - /* Update keyInfo */ pthread_mutex_lock(&keyInfo_mutex); memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap)); diff --git a/xorg-server/hw/xquartz/quartzKeyboard.h b/xorg-server/hw/xquartz/quartzKeyboard.h index de4aed868..60290e658 100644 --- a/xorg-server/hw/xquartz/quartzKeyboard.h +++ b/xorg-server/hw/xquartz/quartzKeyboard.h @@ -1,4 +1,5 @@ /* + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. * Copyright (c) 2003-2004 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -27,30 +28,38 @@ #ifndef QUARTZ_KEYBOARD_H #define QUARTZ_KEYBOARD_H 1 -#define XK_TECHNICAL // needed to get XK_Escape +#define XK_TECHNICAL // needed to get XK_Escape #define XK_PUBLISHING #include "X11/keysym.h" #include "inputstr.h" // Each key can generate 4 glyphs. They are, in order: // unshifted, shifted, modeswitch unshifted, modeswitch shifted -#define GLYPHS_PER_KEY 4 -#define NUM_KEYCODES 248 // NX_NUMKEYCODES might be better -#define MIN_KEYCODE XkbMinLegalKeyCode // unfortunately, this isn't 0... -#define MAX_KEYCODE NUM_KEYCODES + MIN_KEYCODE - 1 +#define GLYPHS_PER_KEY 4 +#define NUM_KEYCODES 248 // NX_NUMKEYCODES might be better +#define MIN_KEYCODE XkbMinLegalKeyCode // unfortunately, this isn't 0... +#define MAX_KEYCODE NUM_KEYCODES + MIN_KEYCODE - 1 /* These functions need to be implemented by Xquartz, XDarwin, etc. */ -Bool QuartsResyncKeymap(Bool sendDDXEvent); +Bool +QuartsResyncKeymap(Bool sendDDXEvent); /* Provided for darwinEvents.c */ -void DarwinKeyboardReloadHandler(void); -int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide); -int DarwinModifierNXKeyToNXKeycode(int key, int side); -int DarwinModifierNXKeyToNXMask(int key); -int DarwinModifierNXMaskToNXKey(int mask); -int DarwinModifierStringToNXMask(const char *string, int separatelr); +void +DarwinKeyboardReloadHandler(void); +int +DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide); +int +DarwinModifierNXKeyToNXKeycode(int key, int side); +int +DarwinModifierNXKeyToNXMask(int key); +int +DarwinModifierNXMaskToNXKey(int mask); +int +DarwinModifierStringToNXMask(const char *string, int separatelr); /* Provided for darwin.c */ -void DarwinKeyboardInit(DeviceIntPtr pDev); +void +DarwinKeyboardInit(DeviceIntPtr pDev); #endif /* QUARTZ_KEYBOARD_H */ diff --git a/xorg-server/hw/xquartz/quartzRandR.c b/xorg-server/hw/xquartz/quartzRandR.c index b7c424f50..cb470fa8e 100644 --- a/xorg-server/hw/xquartz/quartzRandR.c +++ b/xorg-server/hw/xquartz/quartzRandR.c @@ -3,7 +3,7 @@ * * Copyright (c) 2001-2004 Greg Parker and Torrey T. Lyons, * 2010 Jan Hauffa. - * 2010-2011 Apple Inc. + * 2010-2012 Apple Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -53,18 +53,18 @@ */ static Bool ignore_next_fake_mode_update = FALSE; -#define FAKE_REFRESH_ROOTLESS 1 +#define FAKE_REFRESH_ROOTLESS 1 #define FAKE_REFRESH_FULLSCREEN 2 -#define DEFAULT_REFRESH 60 -#define kDisplayModeUsableFlags (kDisplayModeValidFlag | kDisplayModeSafeFlag) +#define DEFAULT_REFRESH 60 +#define kDisplayModeUsableFlags (kDisplayModeValidFlag | kDisplayModeSafeFlag) -#define CALLBACK_SUCCESS 0 -#define CALLBACK_CONTINUE 1 -#define CALLBACK_ERROR -1 +#define CALLBACK_SUCCESS 0 +#define CALLBACK_CONTINUE 1 +#define CALLBACK_ERROR -1 typedef int (*QuartzModeCallback) - (ScreenPtr, QuartzModeInfoPtr, void *); + (ScreenPtr, QuartzModeInfoPtr, void *); #if MAC_OS_X_VERSION_MIN_REQUIRED < 1060 @@ -73,8 +73,7 @@ getDictLong(CFDictionaryRef dictRef, CFStringRef key) { long value; - CFNumberRef numRef = (CFNumberRef) CFDictionaryGetValue(dictRef, key); - + CFNumberRef numRef = (CFNumberRef)CFDictionaryGetValue(dictRef, key); if (!numRef) return 0; @@ -88,8 +87,7 @@ getDictDouble(CFDictionaryRef dictRef, CFStringRef key) { double value; - CFNumberRef numRef = (CFNumberRef) CFDictionaryGetValue(dictRef, key); - + CFNumberRef numRef = (CFNumberRef)CFDictionaryGetValue(dictRef, key); if (!numRef) return 0.0; @@ -99,12 +97,13 @@ getDictDouble(CFDictionaryRef dictRef, CFStringRef key) } static void -QuartzRandRGetModeInfo(CFDictionaryRef modeRef, QuartzModeInfoPtr pMode) +QuartzRandRGetModeInfo(CFDictionaryRef modeRef, + QuartzModeInfoPtr pMode) { - pMode->width = (size_t) getDictLong(modeRef, kCGDisplayWidth); - pMode->height = (size_t) getDictLong(modeRef, kCGDisplayHeight); + pMode->width = (size_t)getDictLong(modeRef, kCGDisplayWidth); + pMode->height = (size_t)getDictLong(modeRef, kCGDisplayHeight); pMode->refresh = - (int) (getDictDouble(modeRef, kCGDisplayRefreshRate) + 0.5); + (int)(getDictDouble(modeRef, kCGDisplayRefreshRate) + 0.5); if (pMode->refresh == 0) pMode->refresh = DEFAULT_REFRESH; pMode->ref = NULL; @@ -116,27 +115,27 @@ QuartzRandRCopyCurrentModeInfo(CGDirectDisplayID screenId, QuartzModeInfoPtr pMode) { CFDictionaryRef curModeRef = CGDisplayCurrentMode(screenId); - if (!curModeRef) return FALSE; QuartzRandRGetModeInfo(curModeRef, pMode); - pMode->ref = (void *) curModeRef; + pMode->ref = (void *)curModeRef; CFRetain(pMode->ref); return TRUE; } static Bool -QuartzRandRSetCGMode(CGDirectDisplayID screenId, QuartzModeInfoPtr pMode) +QuartzRandRSetCGMode(CGDirectDisplayID screenId, + QuartzModeInfoPtr pMode) { - CFDictionaryRef modeRef = (CFDictionaryRef) pMode->ref; - + CFDictionaryRef modeRef = (CFDictionaryRef)pMode->ref; return (CGDisplaySwitchToMode(screenId, modeRef) == kCGErrorSuccess); } static Bool QuartzRandREnumerateModes(ScreenPtr pScreen, - QuartzModeCallback callback, void *data) + QuartzModeCallback callback, + void *data) { Bool retval = FALSE; QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); @@ -160,19 +159,18 @@ QuartzRandREnumerateModes(ScreenPtr pScreen, return FALSE; for (i = 0; i < CFArrayGetCount(modes); i++) { int cb; - - modeRef = (CFDictionaryRef) CFArrayGetValueAtIndex(modes, i); + modeRef = (CFDictionaryRef)CFArrayGetValueAtIndex(modes, i); /* Skip modes that are not usable on the current display or have a different pixel encoding than the current mode. */ - if (((unsigned long) getDictLong(modeRef, kCGDisplayIOFlags) & + if (((unsigned long)getDictLong(modeRef, kCGDisplayIOFlags) & kDisplayModeUsableFlags) != kDisplayModeUsableFlags) continue; if (getDictLong(modeRef, kCGDisplayBitsPerPixel) != curBpp) continue; QuartzRandRGetModeInfo(modeRef, &modeInfo); - modeInfo.ref = (void *) modeRef; + modeInfo.ref = (void *)modeRef; cb = callback(pScreen, &modeInfo, data); if (cb == CALLBACK_CONTINUE) retval = TRUE; @@ -186,10 +184,13 @@ QuartzRandREnumerateModes(ScreenPtr pScreen, switch (callback(pScreen, &pQuartzScreen->rootlessMode, data)) { case CALLBACK_SUCCESS: return TRUE; + case CALLBACK_ERROR: return FALSE; + case CALLBACK_CONTINUE: retval = TRUE; + default: break; } @@ -197,10 +198,13 @@ QuartzRandREnumerateModes(ScreenPtr pScreen, switch (callback(pScreen, &pQuartzScreen->fullscreenMode, data)) { case CALLBACK_SUCCESS: return TRUE; + case CALLBACK_ERROR: return FALSE; + case CALLBACK_CONTINUE: retval = TRUE; + default: break; } @@ -208,14 +212,15 @@ QuartzRandREnumerateModes(ScreenPtr pScreen, return retval; } -#else /* we have the new CG APIs from Snow Leopard */ +#else /* we have the new CG APIs from Snow Leopard */ static void -QuartzRandRGetModeInfo(CGDisplayModeRef modeRef, QuartzModeInfoPtr pMode) +QuartzRandRGetModeInfo(CGDisplayModeRef modeRef, + QuartzModeInfoPtr pMode) { pMode->width = CGDisplayModeGetWidth(modeRef); pMode->height = CGDisplayModeGetHeight(modeRef); - pMode->refresh = (int) (CGDisplayModeGetRefreshRate(modeRef) + 0.5); + pMode->refresh = (int)(CGDisplayModeGetRefreshRate(modeRef) + 0.5); if (pMode->refresh == 0) pMode->refresh = DEFAULT_REFRESH; pMode->ref = NULL; @@ -227,7 +232,6 @@ QuartzRandRCopyCurrentModeInfo(CGDirectDisplayID screenId, QuartzModeInfoPtr pMode) { CGDisplayModeRef curModeRef = CGDisplayCopyDisplayMode(screenId); - if (!curModeRef) return FALSE; @@ -237,20 +241,21 @@ QuartzRandRCopyCurrentModeInfo(CGDirectDisplayID screenId, } static Bool -QuartzRandRSetCGMode(CGDirectDisplayID screenId, QuartzModeInfoPtr pMode) +QuartzRandRSetCGMode(CGDirectDisplayID screenId, + QuartzModeInfoPtr pMode) { - CGDisplayModeRef modeRef = (CGDisplayModeRef) pMode->ref; - + CGDisplayModeRef modeRef = (CGDisplayModeRef)pMode->ref; if (!modeRef) return FALSE; - return (CGDisplaySetDisplayMode(screenId, modeRef, NULL) == - kCGErrorSuccess); + return (CGDisplaySetDisplayMode(screenId, modeRef, + NULL) == kCGErrorSuccess); } static Bool QuartzRandREnumerateModes(ScreenPtr pScreen, - QuartzModeCallback callback, void *data) + QuartzModeCallback callback, + void *data) { Bool retval = FALSE; QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); @@ -278,12 +283,12 @@ QuartzRandREnumerateModes(ScreenPtr pScreen, } for (i = 0; i < CFArrayGetCount(modes); i++) { int cb; - - modeRef = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i); + modeRef = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i); /* Skip modes that are not usable on the current display or have a different pixel encoding than the current mode. */ - if ((CGDisplayModeGetIOFlags(modeRef) & kDisplayModeUsableFlags) != + if ((CGDisplayModeGetIOFlags(modeRef) & + kDisplayModeUsableFlags) != kDisplayModeUsableFlags) continue; pixelEnc = CGDisplayModeCopyPixelEncoding(modeRef); @@ -317,10 +322,13 @@ QuartzRandREnumerateModes(ScreenPtr pScreen, switch (callback(pScreen, &pQuartzScreen->rootlessMode, data)) { case CALLBACK_SUCCESS: return TRUE; + case CALLBACK_ERROR: return FALSE; + case CALLBACK_CONTINUE: retval = TRUE; + default: break; } @@ -328,10 +336,13 @@ QuartzRandREnumerateModes(ScreenPtr pScreen, switch (callback(pScreen, &pQuartzScreen->fullscreenMode, data)) { case CALLBACK_SUCCESS: return TRUE; + case CALLBACK_ERROR: return FALSE; + case CALLBACK_CONTINUE: retval = TRUE; + default: break; } @@ -339,22 +350,24 @@ QuartzRandREnumerateModes(ScreenPtr pScreen, return retval; } -#endif /* Snow Leopard CoreGraphics APIs */ +#endif /* Snow Leopard CoreGraphics APIs */ static Bool -QuartzRandRModesEqual(QuartzModeInfoPtr pMode1, QuartzModeInfoPtr pMode2) +QuartzRandRModesEqual(QuartzModeInfoPtr pMode1, + QuartzModeInfoPtr pMode2) { return (pMode1->width == pMode2->width) && - (pMode1->height == pMode2->height) && - (pMode1->refresh == pMode2->refresh); + (pMode1->height == pMode2->height) && + (pMode1->refresh == pMode2->refresh); } static Bool -QuartzRandRRegisterMode(ScreenPtr pScreen, QuartzModeInfoPtr pMode) +QuartzRandRRegisterMode(ScreenPtr pScreen, + QuartzModeInfoPtr pMode) { QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); - Bool isCurrentMode = - QuartzRandRModesEqual(&pQuartzScreen->currentMode, pMode); + Bool isCurrentMode = QuartzRandRModesEqual(&pQuartzScreen->currentMode, + pMode); /* TODO: DPI */ pMode->pSize = @@ -375,7 +388,8 @@ QuartzRandRRegisterMode(ScreenPtr pScreen, QuartzModeInfoPtr pMode) static int QuartzRandRRegisterModeCallback(ScreenPtr pScreen, - QuartzModeInfoPtr pMode, void *data __unused) + QuartzModeInfoPtr pMode, + void *data __unused) { if (QuartzRandRRegisterMode(pScreen, pMode)) { return CALLBACK_CONTINUE; @@ -386,11 +400,13 @@ QuartzRandRRegisterModeCallback(ScreenPtr pScreen, } static Bool -QuartzRandRSetMode(ScreenPtr pScreen, QuartzModeInfoPtr pMode, BOOL doRegister) +QuartzRandRSetMode(ScreenPtr pScreen, QuartzModeInfoPtr pMode, + BOOL doRegister) { QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); - Bool captureDisplay = (pMode->refresh != FAKE_REFRESH_FULLSCREEN && - pMode->refresh != FAKE_REFRESH_ROOTLESS); + Bool captureDisplay = + (pMode->refresh != FAKE_REFRESH_FULLSCREEN && pMode->refresh != + FAKE_REFRESH_ROOTLESS); CGDirectDisplayID screenId; if (pQuartzScreen->displayIDs == NULL) @@ -442,15 +458,16 @@ QuartzRandRSetMode(ScreenPtr pScreen, QuartzModeInfoPtr pMode, BOOL doRegister) static int QuartzRandRSetModeCallback(ScreenPtr pScreen, - QuartzModeInfoPtr pMode, void *data) + QuartzModeInfoPtr pMode, + void *data) { - QuartzModeInfoPtr pReqMode = (QuartzModeInfoPtr) data; + QuartzModeInfoPtr pReqMode = (QuartzModeInfoPtr)data; if (!QuartzRandRModesEqual(pMode, pReqMode)) - return CALLBACK_CONTINUE; /* continue enumeration */ + return CALLBACK_CONTINUE; /* continue enumeration */ DEBUG_LOG("Found a match for requested RandR resolution (%dx%d@%d).\n", - (int) pMode->width, (int) pMode->height, (int) pMode->refresh); + (int)pMode->width, (int)pMode->height, (int)pMode->refresh); if (QuartzRandRSetMode(pScreen, pMode, FALSE)) return CALLBACK_SUCCESS; @@ -459,9 +476,9 @@ QuartzRandRSetModeCallback(ScreenPtr pScreen, } static Bool -QuartzRandRGetInfo(ScreenPtr pScreen, Rotation * rotations) +QuartzRandRGetInfo(ScreenPtr pScreen, Rotation *rotations) { - *rotations = RR_Rotate_0; /* TODO: support rotation */ + *rotations = RR_Rotate_0; /* TODO: support rotation */ return QuartzRandREnumerateModes(pScreen, QuartzRandRRegisterModeCallback, NULL); @@ -469,7 +486,9 @@ QuartzRandRGetInfo(ScreenPtr pScreen, Rotation * rotations) static Bool QuartzRandRSetConfig(ScreenPtr pScreen, - Rotation randr, int rate, RRScreenSizePtr pSize) + Rotation randr, + int rate, + RRScreenSizePtr pSize) { QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); QuartzModeInfo reqMode; @@ -482,13 +501,14 @@ QuartzRandRSetConfig(ScreenPtr pScreen, if (QuartzRandRModesEqual(&reqMode, &pQuartzScreen->currentMode)) return TRUE; - if (QuartzRandREnumerateModes - (pScreen, QuartzRandRSetModeCallback, &reqMode)) { + if (QuartzRandREnumerateModes(pScreen, QuartzRandRSetModeCallback, + &reqMode)) { return TRUE; } DEBUG_LOG("Unable to find a matching config: %d x %d @ %d\n", - (int) reqMode.width, (int) reqMode.height, (int) reqMode.refresh); + (int)reqMode.width, (int)reqMode.height, + (int)reqMode.refresh); return FALSE; } @@ -499,8 +519,8 @@ _QuartzRandRUpdateFakeModes(ScreenPtr pScreen) QuartzModeInfo activeMode; if (pQuartzScreen->displayCount > 0) { - if (!QuartzRandRCopyCurrentModeInfo - (pQuartzScreen->displayIDs[0], &activeMode)) { + if (!QuartzRandRCopyCurrentModeInfo(pQuartzScreen->displayIDs[0], + &activeMode)) { ErrorF("Unable to determine current display mode.\n"); return FALSE; } @@ -545,13 +565,13 @@ _QuartzRandRUpdateFakeModes(ScreenPtr pScreen) CFRetain(pQuartzScreen->currentMode.ref); DEBUG_LOG("rootlessMode: %d x %d\n", - (int) pQuartzScreen->rootlessMode.width, - (int) pQuartzScreen->rootlessMode.height); + (int)pQuartzScreen->rootlessMode.width, + (int)pQuartzScreen->rootlessMode.height); DEBUG_LOG("fullscreenMode: %d x %d\n", - (int) pQuartzScreen->fullscreenMode.width, - (int) pQuartzScreen->fullscreenMode.height); - DEBUG_LOG("currentMode: %d x %d\n", (int) pQuartzScreen->currentMode.width, - (int) pQuartzScreen->currentMode.height); + (int)pQuartzScreen->fullscreenMode.width, + (int)pQuartzScreen->fullscreenMode.height); + DEBUG_LOG("currentMode: %d x %d\n", (int)pQuartzScreen->currentMode.width, + (int)pQuartzScreen->currentMode.height); return TRUE; } @@ -562,8 +582,8 @@ QuartzRandRUpdateFakeModes(BOOL force_update) ScreenPtr pScreen = screenInfo.screens[0]; if (ignore_next_fake_mode_update) { - DEBUG_LOG - ("Ignoring update request caused by RandR resolution change.\n"); + DEBUG_LOG( + "Ignoring update request caused by RandR resolution change.\n"); ignore_next_fake_mode_update = FALSE; return TRUE; } @@ -582,10 +602,8 @@ QuartzRandRInit(ScreenPtr pScreen) { rrScrPrivPtr pScrPriv; - if (!RRScreenInit(pScreen)) - return FALSE; - if (!_QuartzRandRUpdateFakeModes(pScreen)) - return FALSE; + if (!RRScreenInit(pScreen)) return FALSE; + if (!_QuartzRandRUpdateFakeModes(pScreen)) return FALSE; pScrPriv = rrGetScrPriv(pScreen); pScrPriv->rrGetInfo = QuartzRandRGetInfo; @@ -637,12 +655,12 @@ QuartzRandRToggleFullscreen(void) QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); if (pQuartzScreen->currentMode.ref == NULL) { - ErrorF - ("Ignoring QuartzRandRToggleFullscreen because don't have a current mode set.\n"); + ErrorF( + "Ignoring QuartzRandRToggleFullscreen because don't have a current mode set.\n"); } else if (pQuartzScreen->currentMode.refresh == FAKE_REFRESH_ROOTLESS) { - ErrorF - ("Ignoring QuartzRandRToggleFullscreen because we are in rootless mode.\n"); + ErrorF( + "Ignoring QuartzRandRToggleFullscreen because we are in rootless mode.\n"); } else if (pQuartzScreen->currentMode.refresh == FAKE_REFRESH_FULLSCREEN) { /* Legacy fullscreen mode. Hide/Show */ diff --git a/xorg-server/hw/xquartz/quartzRandR.h b/xorg-server/hw/xquartz/quartzRandR.h index ce7f055d1..006fc4d44 100644 --- a/xorg-server/hw/xquartz/quartzRandR.h +++ b/xorg-server/hw/xquartz/quartzRandR.h @@ -1,80 +1,85 @@ -/*
- * quartzRandR.h
- *
- * Copyright (c) 2010 Jan Hauffa.
- * 2010 Apple Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the sale,
- * use or other dealings in this Software without prior written authorization.
- */
-
-#ifndef _QUARTZRANDR_H_
-#define _QUARTZRANDR_H_
-
-#include "randrstr.h"
-
-typedef struct {
- size_t width, height;
- int refresh;
- RRScreenSizePtr pSize;
- void *ref; /* CGDisplayModeRef or CFDictionaryRef */
-} QuartzModeInfo, *QuartzModeInfoPtr;
-
-// Quartz specific per screen storage structure
-typedef struct {
- // List of CoreGraphics displays that this X11 screen covers.
- // This is more than one CG display for video mirroring and
- // rootless PseudoramiX mode.
- // No CG display will be covered by more than one X11 screen.
- int displayCount;
- CGDirectDisplayID *displayIDs;
- QuartzModeInfo rootlessMode, fullscreenMode, currentMode;
-} QuartzScreenRec, *QuartzScreenPtr;
-
-#define QUARTZ_PRIV(pScreen) \
- ((QuartzScreenPtr)dixLookupPrivate(&pScreen->devPrivates, quartzScreenKey))
-
-void QuartzCopyDisplayIDs(ScreenPtr pScreen,
- int displayCount, CGDirectDisplayID *displayIDs);
-
-Bool QuartzRandRUpdateFakeModes (BOOL force_update);
-Bool QuartzRandRInit (ScreenPtr pScreen);
-
-/* These two functions provide functionality expected by the legacy
- * mode switching. They are equivalent to a client requesting one
- * of the modes corresponding to these "fake" modes.
- * QuartzRandRSetFakeFullscreen takes an argument which is used to determine
- * the visibility of the windows after the change.
- */
-void QuartzRandRSetFakeRootless (void);
-void QuartzRandRSetFakeFullscreen (BOOL state);
-
-
-/* Toggle fullscreen mode. If "fake" fullscreen is the current mode,
- * this will just show/hide the X11 windows. If we are in a RandR fullscreen
- * mode, this will toggles us to the default fake mode and hide windows if
- * it is fullscreen
- */
-void QuartzRandRToggleFullscreen (void);
-
-#endif
+/* + * quartzRandR.h + * + * Copyright (c) 2010 Jan Hauffa. + * 2010-2012 Apple Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders shall not be used in advertising or otherwise to promote the sale, + * use or other dealings in this Software without prior written authorization. + */ + +#ifndef _QUARTZRANDR_H_ +#define _QUARTZRANDR_H_ + +#include "randrstr.h" + +typedef struct { + size_t width, height; + int refresh; + RRScreenSizePtr pSize; + void *ref; /* CGDisplayModeRef or CFDictionaryRef */ +} QuartzModeInfo, *QuartzModeInfoPtr; + +// Quartz specific per screen storage structure +typedef struct { + // List of CoreGraphics displays that this X11 screen covers. + // This is more than one CG display for video mirroring and + // rootless PseudoramiX mode. + // No CG display will be covered by more than one X11 screen. + int displayCount; + CGDirectDisplayID *displayIDs; + QuartzModeInfo rootlessMode, fullscreenMode, currentMode; +} QuartzScreenRec, *QuartzScreenPtr; + +#define QUARTZ_PRIV(pScreen) \ + ((QuartzScreenPtr)dixLookupPrivate(&pScreen->devPrivates, quartzScreenKey)) + +void +QuartzCopyDisplayIDs(ScreenPtr pScreen, int displayCount, + CGDirectDisplayID *displayIDs); + +Bool +QuartzRandRUpdateFakeModes(BOOL force_update); +Bool +QuartzRandRInit(ScreenPtr pScreen); + +/* These two functions provide functionality expected by the legacy + * mode switching. They are equivalent to a client requesting one + * of the modes corresponding to these "fake" modes. + * QuartzRandRSetFakeFullscreen takes an argument which is used to determine + * the visibility of the windows after the change. + */ +void +QuartzRandRSetFakeRootless(void); +void +QuartzRandRSetFakeFullscreen(BOOL state); + +/* Toggle fullscreen mode. If "fake" fullscreen is the current mode, + * this will just show/hide the X11 windows. If we are in a RandR fullscreen + * mode, this will toggles us to the default fake mode and hide windows if + * it is fullscreen + */ +void +QuartzRandRToggleFullscreen(void); + +#endif diff --git a/xorg-server/hw/xquartz/quartzStartup.c b/xorg-server/hw/xquartz/quartzStartup.c index 183bf7618..4dc4dd630 100644 --- a/xorg-server/hw/xquartz/quartzStartup.c +++ b/xorg-server/hw/xquartz/quartzStartup.c @@ -1,7 +1,7 @@ /************************************************************** * * Startup code for the Quartz Darwin X Server - * + * Copyright (c) 2008-2012 Apple Inc. All rights reserved. * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -48,7 +48,8 @@ #include <pthread.h> -int dix_main(int argc, char **argv, char **envp); +int +dix_main(int argc, char **argv, char **envp); struct arg { int argc; @@ -56,11 +57,11 @@ struct arg { char **envp; }; -_X_NORETURN static void +_X_NORETURN +static void server_thread(void *arg) { - struct arg args = *((struct arg *) arg); - + struct arg args = *((struct arg *)arg); free(arg); exit(dix_main(args.argc, args.argv, args.envp)); } @@ -83,8 +84,7 @@ create_thread(void *func, void *arg) void QuartzInitServer(int argc, char **argv, char **envp) { - struct arg *args = (struct arg *) malloc(sizeof(struct arg)); - + struct arg *args = (struct arg *)malloc(sizeof(struct arg)); if (!args) FatalError("Could not allocate memory.\n"); @@ -117,7 +117,8 @@ server_main(int argc, char **argv, char **envp) for (i = 1; i < argc; i++) { // Display version info without starting Mac OS X UI if requested - if (!strcmp(argv[i], "-showconfig") || !strcmp(argv[i], "-version")) { + if (!strcmp(argv[i], + "-showconfig") || !strcmp(argv[i], "-version")) { DarwinPrintBanner(); exit(0); } diff --git a/xorg-server/hw/xquartz/xpr/appledri.c b/xorg-server/hw/xquartz/xpr/appledri.c index 4ef0061b2..1bb837958 100644 --- a/xorg-server/hw/xquartz/xpr/appledri.c +++ b/xorg-server/hw/xquartz/xpr/appledri.c @@ -1,29 +1,29 @@ /************************************************************************** -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -Copyright 2000 VA Linux Systems, Inc. -Copyright (c) 2002, 2009-2011 Apple Inc. -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. + Copyright 2000 VA Linux Systems, Inc. + Copyright (c) 2002, 2009-2012 Apple Inc. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ @@ -32,6 +32,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Kevin E. Martin <martin@valinux.com> * Jens Owen <jens@valinux.com> * Rickard E. (Rik) Faith <faith@valinux.com> + * Jeremy Huddleston <jeremyhu@apple.com> * */ @@ -59,14 +60,16 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. static int DRIErrorBase = 0; -static void AppleDRIResetProc(ExtensionEntry * extEntry); -static int ProcAppleDRICreatePixmap(ClientPtr client); +static void +AppleDRIResetProc(ExtensionEntry* extEntry); +static int +ProcAppleDRICreatePixmap(ClientPtr client); static unsigned char DRIReqCode = 0; static int DRIEventBase = 0; -static void SNotifyEvent(xAppleDRINotifyEvent * from, - xAppleDRINotifyEvent * to); +static void +SNotifyEvent(xAppleDRINotifyEvent *from, xAppleDRINotifyEvent *to); typedef struct _DRIEvent *DRIEventPtr; typedef struct _DRIEvent { @@ -76,8 +79,9 @@ typedef struct _DRIEvent { unsigned int mask; } DRIEventRec; - /*ARGSUSED*/ static void -AppleDRIResetProc(ExtensionEntry * extEntry) +/*ARGSUSED*/ +static void +AppleDRIResetProc(ExtensionEntry* extEntry) { DRIReset(); } @@ -101,7 +105,7 @@ ProcAppleDRIQueryVersion(register ClientPtr client) swaps(&rep.minorVersion); swapl(&rep.patchVersion); } - WriteToClient(client, sizeof(xAppleDRIQueryVersionReply), (char *) &rep); + WriteToClient(client, sizeof(xAppleDRIQueryVersionReply), (char *)&rep); return Success; } @@ -135,7 +139,7 @@ ProcAppleDRIQueryDirectRenderingCapable(register ClientPtr client) WriteToClient(client, sizeof(xAppleDRIQueryDirectRenderingCapableReply), - (char *) &rep); + (char *)&rep); return Success; } @@ -152,26 +156,28 @@ ProcAppleDRIAuthConnection(register ClientPtr client) rep.sequenceNumber = client->sequence; rep.authenticated = 1; - if (!DRIAuthConnection(screenInfo.screens[stuff->screen], stuff->magic)) { - ErrorF("Failed to authenticate %u\n", (unsigned int) stuff->magic); + if (!DRIAuthConnection(screenInfo.screens[stuff->screen], + stuff->magic)) { + ErrorF("Failed to authenticate %u\n", (unsigned int)stuff->magic); rep.authenticated = 0; } if (client->swapped) { swaps(&rep.sequenceNumber); swapl(&rep.length); - swapl(&rep.authenticated); /* Yes, this is a CARD32 ... sigh */ + swapl(&rep.authenticated); /* Yes, this is a CARD32 ... sigh */ } - WriteToClient(client, sizeof(xAppleDRIAuthConnectionReply), (char *) &rep); + WriteToClient(client, sizeof(xAppleDRIAuthConnectionReply), (char *)&rep); return Success; } static void -surface_notify(void *_arg, void *data) +surface_notify(void *_arg, + void *data) { DRISurfaceNotifyArg *arg = _arg; - int client_index = (int) x_cvt_vptr_to_uint(data); + int client_index = (int)x_cvt_vptr_to_uint(data); xAppleDRINotifyEvent se; if (client_index < 0 || client_index >= currentMaxClients) @@ -181,7 +187,7 @@ surface_notify(void *_arg, void *data) se.kind = arg->kind; se.arg = arg->id; se.time = currentTime.milliseconds; - WriteEventsToClient(clients[client_index], 1, (xEvent *) &se); + WriteEventsToClient(clients[client_index], 1, (xEvent *)&se); } static int @@ -207,9 +213,10 @@ ProcAppleDRICreateSurface(ClientPtr client) rep.key_0 = rep.key_1 = rep.uid = 0; if (!DRICreateSurface(screenInfo.screens[stuff->screen], - (Drawable) stuff->drawable, pDrawable, + (Drawable)stuff->drawable, pDrawable, stuff->client_id, &sid, key, - surface_notify, x_cvt_uint_to_vptr(client->index))) { + surface_notify, + x_cvt_uint_to_vptr(client->index))) { return BadValue; } @@ -225,7 +232,7 @@ ProcAppleDRICreateSurface(ClientPtr client) swapl(&rep.uid); } - WriteToClient(client, sizeof(xAppleDRICreateSurfaceReply), (char *) &rep); + WriteToClient(client, sizeof(xAppleDRICreateSurfaceReply), (char *)&rep); return Success; } @@ -233,10 +240,8 @@ static int ProcAppleDRIDestroySurface(register ClientPtr client) { int rc; - REQUEST(xAppleDRIDestroySurfaceReq); DrawablePtr pDrawable; - REQUEST_SIZE_MATCH(xAppleDRIDestroySurfaceReq); rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0, @@ -245,7 +250,8 @@ ProcAppleDRIDestroySurface(register ClientPtr client) return rc; if (!DRIDestroySurface(screenInfo.screens[stuff->screen], - (Drawable) stuff->drawable, pDrawable, NULL, NULL)) { + (Drawable)stuff->drawable, + pDrawable, NULL, NULL)) { return BadValue; } @@ -272,12 +278,14 @@ ProcAppleDRICreatePixmap(ClientPtr client) return rc; if (!DRICreatePixmap(screenInfo.screens[stuff->screen], - (Drawable) stuff->drawable, - pDrawable, path, PATH_MAX)) { + (Drawable)stuff->drawable, + pDrawable, + path, PATH_MAX)) { return BadValue; } - if (!DRIGetPixmapData(pDrawable, &width, &height, &pitch, &bpp, &ptr)) { + if (!DRIGetPixmapData(pDrawable, &width, &height, + &pitch, &bpp, &ptr)) { return BadValue; } @@ -317,7 +325,6 @@ ProcAppleDRIDestroyPixmap(ClientPtr client) { DrawablePtr pDrawable; int rc; - REQUEST(xAppleDRIDestroyPixmapReq); REQUEST_SIZE_MATCH(xAppleDRIDestroyPixmapReq); @@ -342,6 +349,7 @@ ProcAppleDRIDispatch(register ClientPtr client) switch (stuff->data) { case X_AppleDRIQueryVersion: return ProcAppleDRIQueryVersion(client); + case X_AppleDRIQueryDirectRenderingCapable: return ProcAppleDRIQueryDirectRenderingCapable(client); } @@ -352,12 +360,16 @@ ProcAppleDRIDispatch(register ClientPtr client) switch (stuff->data) { case X_AppleDRIAuthConnection: return ProcAppleDRIAuthConnection(client); + case X_AppleDRICreateSurface: return ProcAppleDRICreateSurface(client); + case X_AppleDRIDestroySurface: return ProcAppleDRIDestroySurface(client); + case X_AppleDRICreatePixmap: return ProcAppleDRICreatePixmap(client); + case X_AppleDRIDestroyPixmap: return ProcAppleDRIDestroyPixmap(client); @@ -367,7 +379,8 @@ ProcAppleDRIDispatch(register ClientPtr client) } static void -SNotifyEvent(xAppleDRINotifyEvent * from, xAppleDRINotifyEvent * to) +SNotifyEvent(xAppleDRINotifyEvent *from, + xAppleDRINotifyEvent *to) { to->type = from->type; to->kind = from->kind; @@ -451,6 +464,7 @@ SProcAppleDRIDispatch(register ClientPtr client) switch (stuff->data) { case X_AppleDRIQueryVersion: return SProcAppleDRIQueryVersion(client); + case X_AppleDRIQueryDirectRenderingCapable: return SProcAppleDRIQueryDirectRenderingCapable(client); } @@ -461,12 +475,16 @@ SProcAppleDRIDispatch(register ClientPtr client) switch (stuff->data) { case X_AppleDRIAuthConnection: return SProcAppleDRIAuthConnection(client); + case X_AppleDRICreateSurface: return SProcAppleDRICreateSurface(client); + case X_AppleDRIDestroySurface: return SProcAppleDRIDestroySurface(client); + case X_AppleDRICreatePixmap: return SProcAppleDRICreatePixmap(client); + case X_AppleDRIDestroyPixmap: return SProcAppleDRIDestroyPixmap(client); @@ -478,7 +496,7 @@ SProcAppleDRIDispatch(register ClientPtr client) void AppleDRIExtensionInit(void) { - ExtensionEntry *extEntry; + ExtensionEntry* extEntry; if (DRIExtensionInit() && (extEntry = AddExtension(APPLEDRINAME, @@ -486,13 +504,13 @@ AppleDRIExtensionInit(void) AppleDRINumberErrors, ProcAppleDRIDispatch, SProcAppleDRIDispatch, - AppleDRIResetProc, StandardMinorOpcode))) { + AppleDRIResetProc, + StandardMinorOpcode))) { size_t i; - - DRIReqCode = (unsigned char) extEntry->base; + DRIReqCode = (unsigned char)extEntry->base; DRIErrorBase = extEntry->errorBase; DRIEventBase = extEntry->eventBase; for (i = 0; i < AppleDRINumberEvents; i++) - EventSwapVector[DRIEventBase + i] = (EventSwapPtr) SNotifyEvent; + EventSwapVector[DRIEventBase + i] = (EventSwapPtr)SNotifyEvent; } } diff --git a/xorg-server/hw/xquartz/xpr/appledri.h b/xorg-server/hw/xquartz/xpr/appledri.h index 36964c6cd..a96c96fc8 100644 --- a/xorg-server/hw/xquartz/xpr/appledri.h +++ b/xorg-server/hw/xquartz/xpr/appledri.h @@ -1,30 +1,30 @@ /* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.7 2000/12/07 20:26:02 dawes Exp $ */ /************************************************************************** -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -Copyright 2000 VA Linux Systems, Inc. -Copyright (c) 2002, 2008, 2009 Apple Computer, Inc. -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. + Copyright 2000 VA Linux Systems, Inc. + Copyright (c) 2002-2012 Apple Computer, Inc. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ @@ -33,6 +33,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Kevin E. Martin <martin@valinux.com> * Jens Owen <jens@valinux.com> * Rickard E. (Rik) Faith <faith@valinux.com> + * Jeremy Huddleston <jeremyhu@apple.com> * */ @@ -41,81 +42,94 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <X11/Xfuncproto.h> -#define X_AppleDRIQueryVersion 0 -#define X_AppleDRIQueryDirectRenderingCapable 1 -#define X_AppleDRICreateSurface 2 -#define X_AppleDRIDestroySurface 3 -#define X_AppleDRIAuthConnection 4 -#define X_AppleDRICreateSharedBuffer 5 -#define X_AppleDRISwapBuffers 6 -#define X_AppleDRICreatePixmap 7 -#define X_AppleDRIDestroyPixmap 8 +#define X_AppleDRIQueryVersion 0 +#define X_AppleDRIQueryDirectRenderingCapable 1 +#define X_AppleDRICreateSurface 2 +#define X_AppleDRIDestroySurface 3 +#define X_AppleDRIAuthConnection 4 +#define X_AppleDRICreateSharedBuffer 5 +#define X_AppleDRISwapBuffers 6 +#define X_AppleDRICreatePixmap 7 +#define X_AppleDRIDestroyPixmap 8 /* Requests up to and including 18 were used in a previous version */ /* Events */ -#define AppleDRIObsoleteEvent1 0 -#define AppleDRIObsoleteEvent2 1 -#define AppleDRIObsoleteEvent3 2 -#define AppleDRISurfaceNotify 3 -#define AppleDRINumberEvents 4 +#define AppleDRIObsoleteEvent1 0 +#define AppleDRIObsoleteEvent2 1 +#define AppleDRIObsoleteEvent3 2 +#define AppleDRISurfaceNotify 3 +#define AppleDRINumberEvents 4 /* Errors */ -#define AppleDRIClientNotLocal 0 -#define AppleDRIOperationNotSupported 1 -#define AppleDRINumberErrors (AppleDRIOperationNotSupported + 1) +#define AppleDRIClientNotLocal 0 +#define AppleDRIOperationNotSupported 1 +#define AppleDRINumberErrors (AppleDRIOperationNotSupported + 1) /* Kinds of SurfaceNotify events: */ -#define AppleDRISurfaceNotifyChanged 0 -#define AppleDRISurfaceNotifyDestroyed 1 +#define AppleDRISurfaceNotifyChanged 0 +#define AppleDRISurfaceNotifyDestroyed 1 #ifndef _APPLEDRI_SERVER_ typedef struct { - int type; /* of event */ + int type; /* of event */ unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came frome a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; /* window of event */ - Time time; /* server timestamp when event happened */ - int kind; /* subtype of event */ + Bool send_event; /* true if this came frome a SendEvent request */ + Display *display; /* Display the event was read from */ + Window window; /* window of event */ + Time time; /* server timestamp when event happened */ + int kind; /* subtype of event */ int arg; } XAppleDRINotifyEvent; _XFUNCPROTOBEGIN -Bool XAppleDRIQueryExtension (Display *dpy, int *event_base, int *error_base); +Bool +XAppleDRIQueryExtension(Display *dpy, int *event_base, int *error_base); -Bool XAppleDRIQueryVersion (Display *dpy, int *majorVersion, - int *minorVersion, int *patchVersion); +Bool +XAppleDRIQueryVersion(Display *dpy, int *majorVersion, int *minorVersion, + int *patchVersion); -Bool XAppleDRIQueryDirectRenderingCapable (Display *dpy, int screen, - Bool *isCapable); +Bool +XAppleDRIQueryDirectRenderingCapable(Display *dpy, int screen, + Bool *isCapable); -void *XAppleDRISetSurfaceNotifyHandler (void (*fun) (Display *dpy, - unsigned uid, int kind)); +void * +XAppleDRISetSurfaceNotifyHandler(void (*fun)(Display *dpy, unsigned uid, + int kind)); -Bool XAppleDRIAuthConnection (Display *dpy, int screen, unsigned int magic); +Bool +XAppleDRIAuthConnection(Display *dpy, int screen, unsigned int magic); -Bool XAppleDRICreateSurface (Display *dpy, int screen, Drawable drawable, - unsigned int client_id, unsigned int key[2], - unsigned int* uid); +Bool XAppleDRICreateSurface(Display * dpy, int screen, Drawable drawable, + unsigned int client_id, unsigned int key[2], + unsigned int* uid); -Bool XAppleDRIDestroySurface (Display *dpy, int screen, Drawable drawable); +Bool +XAppleDRIDestroySurface(Display *dpy, int screen, Drawable drawable); -Bool XAppleDRISynchronizeSurfaces (Display *dpy); +Bool +XAppleDRISynchronizeSurfaces(Display *dpy); -Bool XAppleDRICreateSharedBuffer(Display *dpy, int screen, Drawable drawable, - Bool doubleSwap, char *path, size_t pathlen, - int *width, int *height); +Bool +XAppleDRICreateSharedBuffer(Display *dpy, int screen, Drawable drawable, + Bool doubleSwap, char *path, size_t pathlen, + int *width, + int *height); -Bool XAppleDRISwapBuffers(Display *dpy, int screen, Drawable drawable); +Bool +XAppleDRISwapBuffers(Display *dpy, int screen, Drawable drawable); -Bool XAppleDRICreatePixmap(Display *dpy, int screen, Drawable drawable, - int *width, int *height, int *pitch, int *bpp, - size_t *size, char *bufname, size_t bufnamesize); +Bool +XAppleDRICreatePixmap(Display *dpy, int screen, Drawable drawable, int *width, + int *height, int *pitch, int *bpp, size_t *size, + char *bufname, + size_t bufnamesize); -Bool XAppleDRIDestroyPixmap(Display *dpy, Pixmap pixmap); +Bool +XAppleDRIDestroyPixmap(Display *dpy, Pixmap pixmap); _XFUNCPROTOEND diff --git a/xorg-server/hw/xquartz/xpr/appledristr.h b/xorg-server/hw/xquartz/xpr/appledristr.h index 131a699d9..71346c428 100644 --- a/xorg-server/hw/xquartz/xpr/appledristr.h +++ b/xorg-server/hw/xquartz/xpr/appledristr.h @@ -1,29 +1,29 @@ /************************************************************************** -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -Copyright 2000 VA Linux Systems, Inc. -Copyright (c) 2002, 2008, 2009 Apple Computer, Inc. -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. + Copyright 2000 VA Linux Systems, Inc. + Copyright (c) 2002-2012 Apple Computer, Inc. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ @@ -32,6 +32,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Kevin E. Martin <martin@valinux.com> * Jens Owen <jens@valinux.com> * Rickard E. (Rik) Fiath <faith@valinux.com> + * Jeremy Huddleston <jeremyhu@apple.com> * */ @@ -40,47 +41,44 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "appledri.h" -#define APPLEDRINAME "Apple-DRI" +#define APPLEDRINAME "Apple-DRI" -#define APPLE_DRI_MAJOR_VERSION 1 /* current version numbers */ -#define APPLE_DRI_MINOR_VERSION 0 -#define APPLE_DRI_PATCH_VERSION 0 +#define APPLE_DRI_MAJOR_VERSION 1 /* current version numbers */ +#define APPLE_DRI_MINOR_VERSION 0 +#define APPLE_DRI_PATCH_VERSION 0 typedef struct _AppleDRIQueryVersion { - CARD8 reqType; /* always DRIReqCode */ - CARD8 driReqType; /* always X_DRIQueryVersion */ + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* always X_DRIQueryVersion */ CARD16 length B16; } xAppleDRIQueryVersionReq; - -#define sz_xAppleDRIQueryVersionReq 4 +#define sz_xAppleDRIQueryVersionReq 4 typedef struct { - BYTE type; /* X_Reply */ + BYTE type; /* X_Reply */ BOOL pad1; CARD16 sequenceNumber B16; CARD32 length B32; - CARD16 majorVersion B16; /* major version of DRI protocol */ - CARD16 minorVersion B16; /* minor version of DRI protocol */ - CARD32 patchVersion B32; /* patch version of DRI protocol */ + CARD16 majorVersion B16; /* major version of DRI protocol */ + CARD16 minorVersion B16; /* minor version of DRI protocol */ + CARD32 patchVersion B32; /* patch version of DRI protocol */ CARD32 pad3 B32; CARD32 pad4 B32; CARD32 pad5 B32; CARD32 pad6 B32; } xAppleDRIQueryVersionReply; - -#define sz_xAppleDRIQueryVersionReply 32 +#define sz_xAppleDRIQueryVersionReply 32 typedef struct _AppleDRIQueryDirectRenderingCapable { - CARD8 reqType; /* always DRIReqCode */ - CARD8 driReqType; /* X_DRIQueryDirectRenderingCapable */ + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* X_DRIQueryDirectRenderingCapable */ CARD16 length B16; CARD32 screen B32; } xAppleDRIQueryDirectRenderingCapableReq; - -#define sz_xAppleDRIQueryDirectRenderingCapableReq 8 +#define sz_xAppleDRIQueryDirectRenderingCapableReq 8 typedef struct { - BYTE type; /* X_Reply */ + BYTE type; /* X_Reply */ BOOL pad1; CARD16 sequenceNumber B16; CARD32 length B32; @@ -94,18 +92,16 @@ typedef struct { CARD32 pad8 B32; CARD32 pad9 B32; } xAppleDRIQueryDirectRenderingCapableReply; - -#define sz_xAppleDRIQueryDirectRenderingCapableReply 32 +#define sz_xAppleDRIQueryDirectRenderingCapableReply 32 typedef struct _AppleDRIAuthConnection { - CARD8 reqType; /* always DRIReqCode */ - CARD8 driReqType; /* always X_DRICloseConnection */ + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* always X_DRICloseConnection */ CARD16 length B16; CARD32 screen B32; CARD32 magic B32; } xAppleDRIAuthConnectionReq; - -#define sz_xAppleDRIAuthConnectionReq 12 +#define sz_xAppleDRIAuthConnectionReq 12 typedef struct { BYTE type; @@ -119,22 +115,20 @@ typedef struct { CARD32 pad5 B32; CARD32 pad6 B32; } xAppleDRIAuthConnectionReply; - -#define zx_xAppleDRIAuthConnectionReply 32 +#define zx_xAppleDRIAuthConnectionReply 32 typedef struct _AppleDRICreateSurface { - CARD8 reqType; /* always DRIReqCode */ - CARD8 driReqType; /* always X_DRICreateSurface */ + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* always X_DRICreateSurface */ CARD16 length B16; CARD32 screen B32; CARD32 drawable B32; CARD32 client_id B32; } xAppleDRICreateSurfaceReq; - -#define sz_xAppleDRICreateSurfaceReq 16 +#define sz_xAppleDRICreateSurfaceReq 16 typedef struct { - BYTE type; /* X_Reply */ + BYTE type; /* X_Reply */ BOOL pad1; CARD16 sequenceNumber B16; CARD32 length B32; @@ -145,24 +139,22 @@ typedef struct { CARD32 pad5 B32; CARD32 pad6 B32; } xAppleDRICreateSurfaceReply; - -#define sz_xAppleDRICreateSurfaceReply 32 +#define sz_xAppleDRICreateSurfaceReply 32 typedef struct _AppleDRIDestroySurface { - CARD8 reqType; /* always DRIReqCode */ - CARD8 driReqType; /* always X_DRIDestroySurface */ + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* always X_DRIDestroySurface */ CARD16 length B16; CARD32 screen B32; CARD32 drawable B32; } xAppleDRIDestroySurfaceReq; - -#define sz_xAppleDRIDestroySurfaceReq 12 +#define sz_xAppleDRIDestroySurfaceReq 12 typedef struct _AppleDRINotify { - BYTE type; /* always eventBase + event type */ + BYTE type; /* always eventBase + event type */ BYTE kind; CARD16 sequenceNumber B16; - CARD32 time B32; /* time of change */ + CARD32 time B32; /* time of change */ CARD32 pad1 B32; CARD32 arg B32; CARD32 pad3 B32; @@ -170,8 +162,7 @@ typedef struct _AppleDRINotify { CARD32 pad5 B32; CARD32 pad6 B32; } xAppleDRINotifyEvent; - -#define sz_xAppleDRINotifyEvent 32 +#define sz_xAppleDRINotifyEvent 32 typedef struct { CARD8 reqType; @@ -190,7 +181,7 @@ typedef struct { BYTE data1; CARD16 sequenceNumber B16; CARD32 length B32; - CARD32 stringLength B32; /* 0 on error */ + CARD32 stringLength B32; /* 0 on error */ CARD32 width B32; CARD32 height B32; CARD32 pad1 B32; @@ -211,35 +202,35 @@ typedef struct { #define sz_xAppleDRISwapBuffersReq 12 typedef struct { - CARD8 reqType; /*1 */ - CARD8 driReqType; /*2 */ - CARD16 length B16; /*4 */ - CARD32 screen B32; /*8 */ - CARD32 drawable B32; /*12 */ + CARD8 reqType; /*1 */ + CARD8 driReqType; /*2 */ + CARD16 length B16; /*4 */ + CARD32 screen B32; /*8 */ + CARD32 drawable B32; /*12 */ } xAppleDRICreatePixmapReq; #define sz_xAppleDRICreatePixmapReq 12 typedef struct { - BYTE type; /*1 */ - BOOL pad1; /*2 */ - CARD16 sequenceNumber B16; /*4 */ - CARD32 length B32; /*8 */ - CARD32 width B32; /*12 */ - CARD32 height B32; /*16 */ - CARD32 pitch B32; /*20 */ - CARD32 bpp B32; /*24 */ - CARD32 size B32; /*28 */ - CARD32 stringLength B32; /*32 */ + BYTE type; /*1 */ + BOOL pad1; /*2 */ + CARD16 sequenceNumber B16; /*4 */ + CARD32 length B32; /*8 */ + CARD32 width B32; /*12 */ + CARD32 height B32; /*16 */ + CARD32 pitch B32; /*20 */ + CARD32 bpp B32; /*24 */ + CARD32 size B32; /*28 */ + CARD32 stringLength B32; /*32 */ } xAppleDRICreatePixmapReply; #define sz_xAppleDRICreatePixmapReply 32 typedef struct { - CARD8 reqType; /*1 */ - CARD8 driReqType; /*2 */ - CARD16 length B16; /*4 */ - CARD32 drawable B32; /*8 */ + CARD8 reqType; /*1 */ + CARD8 driReqType; /*2 */ + CARD16 length B16; /*4 */ + CARD32 drawable B32; /*8 */ } xAppleDRIDestroyPixmapReq; #define sz_xAppleDRIDestroyPixmapReq 8 @@ -248,12 +239,12 @@ typedef struct { void AppleDRISendEvent( #if NeedFunctionPrototypes - int /* type */ , - unsigned int /* mask */ , - int /* which */ , - int /* arg */ + int /* type */, + unsigned int /* mask */, + int /* which */, + int /* arg */ #endif ); -#endif /* _APPLEDRI_SERVER_ */ -#endif /* _APPLEDRISTR_H_ */ +#endif /* _APPLEDRI_SERVER_ */ +#endif /* _APPLEDRISTR_H_ */ diff --git a/xorg-server/hw/xquartz/xpr/dri.c b/xorg-server/hw/xquartz/xpr/dri.c index 0ce1d0771..002ec94a7 100644 --- a/xorg-server/hw/xquartz/xpr/dri.c +++ b/xorg-server/hw/xquartz/xpr/dri.c @@ -1,29 +1,29 @@ /************************************************************************** -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -Copyright 2000 VA Linux Systems, Inc. -Copyright (c) 2002, 2009 Apple Computer, Inc. -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. + Copyright 2000 VA Linux Systems, Inc. + Copyright (c) 2002-2012 Apple Computer, Inc. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ @@ -31,7 +31,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * Authors: * Jens Owen <jens@valinux.com> * Rickard E. (Rik) Faith <faith@valinux.com> - * + * Jeremy Huddleston <jeremyhu@apple.com> */ #ifdef HAVE_DIX_CONFIG_H @@ -75,23 +75,20 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <AvailabilityMacros.h> static DevPrivateKeyRec DRIScreenPrivKeyRec; - -#define DRIScreenPrivKey (&DRIScreenPrivKeyRec) +#define DRIScreenPrivKey (&DRIScreenPrivKeyRec) static DevPrivateKeyRec DRIWindowPrivKeyRec; - -#define DRIWindowPrivKey (&DRIWindowPrivKeyRec) +#define DRIWindowPrivKey (&DRIWindowPrivKeyRec) static DevPrivateKeyRec DRIPixmapPrivKeyRec; - -#define DRIPixmapPrivKey (&DRIPixmapPrivKeyRec) +#define DRIPixmapPrivKey (&DRIPixmapPrivKeyRec) static DevPrivateKeyRec DRIPixmapBufferPrivKeyRec; - #define DRIPixmapBufferPrivKey (&DRIPixmapBufferPrivKeyRec) static RESTYPE DRIDrawablePrivResType; static x_hash_table *surface_hash; /* maps surface ids -> drawablePrivs */ -static Bool DRIFreePixmapImp(DrawablePtr pDrawable); +static Bool +DRIFreePixmapImp(DrawablePtr pDrawable); typedef struct { DrawablePtr pDrawable; @@ -100,8 +97,8 @@ typedef struct { int width; int height; char shmPath[PATH_MAX]; - int fd; /* From shm_open (for now) */ - size_t length; /* length of buffer */ + int fd; /* From shm_open (for now) */ + size_t length; /* length of buffer */ void *buffer; } DRIPixmapBuffer, *DRIPixmapBufferPtr; @@ -120,7 +117,7 @@ DRIScreenInit(ScreenPtr pScreen) if (!dixRegisterPrivateKey(&DRIPixmapBufferPrivKeyRec, PRIVATE_PIXMAP, 0)) return FALSE; - pDRIPriv = (DRIScreenPrivPtr) calloc(1, sizeof(DRIScreenPrivRec)); + pDRIPriv = (DRIScreenPrivPtr)calloc(1, sizeof(DRIScreenPrivRec)); if (!pDRIPriv) { dixSetPrivate(&pScreen->devPrivates, DRIScreenPrivKey, NULL); return FALSE; @@ -197,7 +194,7 @@ DRIReset(void) } Bool -DRIQueryDirectRenderingCapable(ScreenPtr pScreen, Bool *isCapable) +DRIQueryDirectRenderingCapable(ScreenPtr pScreen, Bool* isCapable) { DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); @@ -217,8 +214,7 @@ DRIAuthConnection(ScreenPtr pScreen, unsigned int magic) DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); - if (drmAuthMagic(pDRIPriv->drmFD, magic)) - return FALSE; + if (drmAuthMagic(pDRIPriv->drmFD, magic)) return FALSE; #endif return TRUE; } @@ -240,7 +236,7 @@ DRIUpdateSurface(DRIDrawablePrivPtr pDRIDrawablePriv, DrawablePtr pDraw) #endif if (pDraw->type == DRAWABLE_WINDOW) { - WindowPtr pWin = (WindowPtr) pDraw; + WindowPtr pWin = (WindowPtr)pDraw; WindowPtr pTopWin = TopLevelParent(pWin); wc.x = pWin->drawable.x - (pTopWin->drawable.x - pTopWin->borderWidth); @@ -271,7 +267,8 @@ DRIUpdateSurface(DRIDrawablePrivPtr pDRIDrawablePriv, DrawablePtr pDraw) /* Return NULL if an error occurs. */ static DRIDrawablePrivPtr -CreateSurfaceForWindow(ScreenPtr pScreen, WindowPtr pWin, xp_window_id * widPtr) +CreateSurfaceForWindow(ScreenPtr pScreen, WindowPtr pWin, + xp_window_id *widPtr) { DRIDrawablePrivPtr pDRIDrawablePriv; xp_window_id wid = 0; @@ -289,7 +286,7 @@ CreateSurfaceForWindow(ScreenPtr pScreen, WindowPtr pWin, xp_window_id * widPtr) return NULL; } - pDRIDrawablePriv->pDraw = (DrawablePtr) pWin; + pDRIDrawablePriv->pDraw = (DrawablePtr)pWin; pDRIDrawablePriv->pScreen = pScreen; pDRIDrawablePriv->refCount = 0; pDRIDrawablePriv->drawableIndex = -1; @@ -323,7 +320,8 @@ CreateSurfaceForWindow(ScreenPtr pScreen, WindowPtr pWin, xp_window_id * widPtr) } /* save private off of preallocated index */ - dixSetPrivate(&pWin->devPrivates, DRIWindowPrivKey, pDRIDrawablePriv); + dixSetPrivate(&pWin->devPrivates, DRIWindowPrivKey, + pDRIDrawablePriv); } *widPtr = wid; @@ -347,7 +345,7 @@ CreateSurfaceForPixmap(ScreenPtr pScreen, PixmapPtr pPix) return NULL; } - pDRIDrawablePriv->pDraw = (DrawablePtr) pPix; + pDRIDrawablePriv->pDraw = (DrawablePtr)pPix; pDRIDrawablePriv->pScreen = pScreen; pDRIDrawablePriv->refCount = 0; pDRIDrawablePriv->drawableIndex = -1; @@ -362,13 +360,14 @@ CreateSurfaceForPixmap(ScreenPtr pScreen, PixmapPtr pPix) return NULL; } - /* + /* * The DRIUpdateSurface will be called to resize the surface * after this function, if the export is successful. */ /* save private off of preallocated index */ - dixSetPrivate(&pPix->devPrivates, DRIPixmapPrivKey, pDRIDrawablePriv); + dixSetPrivate(&pPix->devPrivates, DRIPixmapPrivKey, + pDRIDrawablePriv); } return pDRIDrawablePriv; @@ -377,8 +376,8 @@ CreateSurfaceForPixmap(ScreenPtr pScreen, PixmapPtr pPix) Bool DRICreateSurface(ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable, xp_client_id client_id, - xp_surface_id * surface_id, unsigned int ret_key[2], - void (*notify) (void *arg, void *data), void *notify_data) + xp_surface_id *surface_id, unsigned int ret_key[2], + void (*notify)(void *arg, void *data), void *notify_data) { DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen); xp_window_id wid = 0; @@ -386,18 +385,18 @@ DRICreateSurface(ScreenPtr pScreen, Drawable id, if (pDrawable->type == DRAWABLE_WINDOW) { pDRIDrawablePriv = CreateSurfaceForWindow(pScreen, - (WindowPtr) pDrawable, &wid); + (WindowPtr)pDrawable, &wid); if (NULL == pDRIDrawablePriv) - return FALSE; /*error */ + return FALSE; /*error*/ } #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 else if (pDrawable->type == DRAWABLE_PIXMAP) { pDRIDrawablePriv = CreateSurfaceForPixmap(pScreen, - (PixmapPtr) pDrawable); + (PixmapPtr)pDrawable); if (NULL == pDRIDrawablePriv) - return FALSE; /*error */ + return FALSE; /*error*/ } #endif else { @@ -413,25 +412,26 @@ DRICreateSurface(ScreenPtr pScreen, Drawable id, /* try to give the client access to the surface */ if (client_id != 0) { /* - * Xplugin accepts a 0 wid if the surface id is offscreen, such + * Xplugin accepts a 0 wid if the surface id is offscreen, such * as for a pixmap. */ - err = xp_export_surface(wid, pDRIDrawablePriv->sid, client_id, key); + err = xp_export_surface(wid, pDRIDrawablePriv->sid, + client_id, key); if (err != Success) { xp_destroy_surface(pDRIDrawablePriv->sid); free(pDRIDrawablePriv); - /* + /* * Now set the dix privates to NULL that were previously set. * This prevents reusing an invalid pointer. */ if (pDrawable->type == DRAWABLE_WINDOW) { - WindowPtr pWin = (WindowPtr) pDrawable; + WindowPtr pWin = (WindowPtr)pDrawable; dixSetPrivate(&pWin->devPrivates, DRIWindowPrivKey, NULL); } else if (pDrawable->type == DRAWABLE_PIXMAP) { - PixmapPtr pPix = (PixmapPtr) pDrawable; + PixmapPtr pPix = (PixmapPtr)pDrawable; dixSetPrivate(&pPix->devPrivates, DRIPixmapPrivKey, NULL); } @@ -449,11 +449,11 @@ DRICreateSurface(ScreenPtr pScreen, Drawable id, if (surface_hash == NULL) surface_hash = x_hash_table_new(NULL, NULL, NULL, NULL); x_hash_table_insert(surface_hash, - x_cvt_uint_to_vptr(pDRIDrawablePriv->sid), - pDRIDrawablePriv); + x_cvt_uint_to_vptr( + pDRIDrawablePriv->sid), pDRIDrawablePriv); /* track this in case this window is destroyed */ - AddResource(id, DRIDrawablePrivResType, (pointer) pDrawable); + AddResource(id, DRIDrawablePrivResType, (pointer)pDrawable); /* Initialize shape */ DRIUpdateSurface(pDRIDrawablePriv, pDrawable); @@ -478,15 +478,15 @@ DRICreateSurface(ScreenPtr pScreen, Drawable id, Bool DRIDestroySurface(ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable, - void (*notify) (void *, void *), void *notify_data) + void (*notify)(void *, void *), void *notify_data) { DRIDrawablePrivPtr pDRIDrawablePriv; if (pDrawable->type == DRAWABLE_WINDOW) { - pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW((WindowPtr) pDrawable); + pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW((WindowPtr)pDrawable); } else if (pDrawable->type == DRAWABLE_PIXMAP) { - pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_PIXMAP((PixmapPtr) pDrawable); + pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_PIXMAP((PixmapPtr)pDrawable); } else { return FALSE; @@ -498,13 +498,14 @@ DRIDestroySurface(ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable, */ if (notify != NULL) { - pDRIDrawablePriv->notifiers = - x_hook_remove(pDRIDrawablePriv->notifiers, notify, notify_data); + pDRIDrawablePriv->notifiers = x_hook_remove( + pDRIDrawablePriv->notifiers, + notify, notify_data); } --pDRIDrawablePriv->refCount; - /* + /* * Check if the drawable privates still have a reference to the * surface. */ @@ -512,7 +513,7 @@ DRIDestroySurface(ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable, if (pDRIDrawablePriv->refCount <= 0) { /* * This calls back to DRIDrawablePrivDelete which - * frees the private area and dispatches events, if needed. + * frees the private area and dispatches events, if needed. */ FreeResourceByType(id, DRIDrawablePrivResType, FALSE); } @@ -521,30 +522,30 @@ DRIDestroySurface(ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable, return TRUE; } -/* +/* * The assumption is that this is called when the refCount of a surface - * drops to <= 0, or the window/pixmap is destroyed. + * drops to <= 0, or the window/pixmap is destroyed. */ Bool DRIDrawablePrivDelete(pointer pResource, XID id) { - DrawablePtr pDrawable = (DrawablePtr) pResource; + DrawablePtr pDrawable = (DrawablePtr)pResource; DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pDrawable->pScreen); DRIDrawablePrivPtr pDRIDrawablePriv = NULL; WindowPtr pWin = NULL; PixmapPtr pPix = NULL; if (pDrawable->type == DRAWABLE_WINDOW) { - pWin = (WindowPtr) pDrawable; + pWin = (WindowPtr)pDrawable; pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin); } else if (pDrawable->type == DRAWABLE_PIXMAP) { - pPix = (PixmapPtr) pDrawable; + pPix = (PixmapPtr)pDrawable; pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_PIXMAP(pPix); } if (pDRIDrawablePriv == NULL) { - /* + /* * We reuse __func__ and the resource type for the GLXPixmap code. * Attempt to free a pixmap buffer associated with the resource * if possible. @@ -558,7 +559,8 @@ DRIDrawablePrivDelete(pointer pResource, XID id) } if (pDRIDrawablePriv->sid != 0) { - DRISurfaceNotify(pDRIDrawablePriv->sid, AppleDRISurfaceNotifyDestroyed); + DRISurfaceNotify(pDRIDrawablePriv->sid, + AppleDRISurfaceNotifyDestroyed); } if (pDRIDrawablePriv->notifiers != NULL) @@ -591,7 +593,7 @@ DRIWindowExposures(WindowPtr pWin, RegionPtr prgn, RegionPtr bsreg) pScreen->WindowExposures = pDRIPriv->wrap.WindowExposures; - (*pScreen->WindowExposures) (pWin, prgn, bsreg); + (*pScreen->WindowExposures)(pWin, prgn, bsreg); pScreen->WindowExposures = DRIWindowExposures; } @@ -614,7 +616,7 @@ DRICopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) pScreen->CopyWindow = pDRIPriv->wrap.CopyWindow; /* call lower layers */ - (*pScreen->CopyWindow) (pWin, ptOldOrg, prgnSrc); + (*pScreen->CopyWindow)(pWin, ptOldOrg, prgnSrc); /* rewrap */ pScreen->CopyWindow = DRICopyWindow; @@ -631,7 +633,7 @@ DRIValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind) pScreen->ValidateTree = pDRIPriv->wrap.ValidateTree; /* call lower layers */ - returnValue = (*pScreen->ValidateTree) (pParent, pChild, kind); + returnValue = (*pScreen->ValidateTree)(pParent, pChild, kind); /* rewrap */ pScreen->ValidateTree = DRIValidateTree; @@ -658,7 +660,7 @@ DRIPostValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind) pScreen->PostValidateTree = pDRIPriv->wrap.PostValidateTree; /* call lower layers */ - (*pScreen->PostValidateTree) (pParent, pChild, kind); + (*pScreen->PostValidateTree)(pParent, pChild, kind); /* rewrap */ pScreen->PostValidateTree = DRIPostValidateTree; @@ -679,7 +681,7 @@ DRIClipNotify(WindowPtr pWin, int dx, int dy) if (pDRIPriv->wrap.ClipNotify) { pScreen->ClipNotify = pDRIPriv->wrap.ClipNotify; - (*pScreen->ClipNotify) (pWin, dx, dy); + (*pScreen->ClipNotify)(pWin, dx, dy); pScreen->ClipNotify = DRIClipNotify; } @@ -696,14 +698,16 @@ DRIGetWrappedFuncs(ScreenPtr pScreen) } void -DRIQueryVersion(int *majorVersion, int *minorVersion, int *patchVersion) +DRIQueryVersion(int *majorVersion, + int *minorVersion, + int *patchVersion) { *majorVersion = APPLE_DRI_MAJOR_VERSION; *minorVersion = APPLE_DRI_MINOR_VERSION; *patchVersion = APPLE_DRI_PATCH_VERSION; } -/* +/* * Note: this also cleans up the hash table in addition to notifying clients. * The sid/surface-id should not be used after this, because it will be * invalid. @@ -753,7 +757,8 @@ DRISurfaceNotify(xp_surface_id id, int kind) */ Bool DRICreatePixmap(ScreenPtr pScreen, Drawable id, - DrawablePtr pDrawable, char *path, size_t pathmax) + DrawablePtr pDrawable, char *path, + size_t pathmax) { DRIPixmapBufferPtr shared; PixmapPtr pPix; @@ -761,7 +766,7 @@ DRICreatePixmap(ScreenPtr pScreen, Drawable id, if (pDrawable->type != DRAWABLE_PIXMAP) return FALSE; - pPix = (PixmapPtr) pDrawable; + pPix = (PixmapPtr)pDrawable; shared = malloc(sizeof(*shared)); if (NULL == shared) { @@ -782,7 +787,8 @@ DRICreatePixmap(ScreenPtr pScreen, Drawable id, shared->height = pDrawable->height; if (-1 == snprintf(shared->shmPath, sizeof(shared->shmPath), - "%d_0x%lx", getpid(), (unsigned long) id)) { + "%d_0x%lx", getpid(), + (unsigned long)id)) { FatalError("buffer overflow in %s\n", __func__); } @@ -821,7 +827,7 @@ DRICreatePixmap(ScreenPtr pScreen, Drawable id, dixSetPrivate(&pPix->devPrivates, DRIPixmapBufferPrivKey, shared); - AddResource(id, DRIDrawablePrivResType, (pointer) pDrawable); + AddResource(id, DRIDrawablePrivResType, (pointer)pDrawable); return TRUE; } @@ -836,7 +842,7 @@ DRIGetPixmapData(DrawablePtr pDrawable, int *width, int *height, if (pDrawable->type != DRAWABLE_PIXMAP) return FALSE; - pPix = (PixmapPtr) pDrawable; + pPix = (PixmapPtr)pDrawable; shared = dixLookupPrivate(&pPix->devPrivates, DRIPixmapBufferPrivKey); @@ -864,7 +870,7 @@ DRIFreePixmapImp(DrawablePtr pDrawable) if (pDrawable->type != DRAWABLE_PIXMAP) return FALSE; - pPix = (PixmapPtr) pDrawable; + pPix = (PixmapPtr)pDrawable; shared = dixLookupPrivate(&pPix->devPrivates, DRIPixmapBufferPrivKey); @@ -876,7 +882,7 @@ DRIFreePixmapImp(DrawablePtr pDrawable) shm_unlink(shared->shmPath); free(shared); - dixSetPrivate(&pPix->devPrivates, DRIPixmapBufferPrivKey, (pointer) NULL); + dixSetPrivate(&pPix->devPrivates, DRIPixmapBufferPrivKey, (pointer)NULL); return TRUE; } diff --git a/xorg-server/hw/xquartz/xpr/dri.h b/xorg-server/hw/xquartz/xpr/dri.h index b4342617c..8717a5186 100644 --- a/xorg-server/hw/xquartz/xpr/dri.h +++ b/xorg-server/hw/xquartz/xpr/dri.h @@ -1,35 +1,35 @@ /************************************************************************** -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -Copyright (c) 2002, 2009 Apple Computer, Inc. -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. + Copyright (c) 2002-2012 Apple Computer, Inc. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ /* * Authors: * Jens Owen <jens@precisioninsight.com> - * + * Jeremy Huddleston <jeremyhu@apple.com> */ /* Prototypes for AppleDRI functions */ @@ -43,7 +43,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "appledri.h" #include <Xplugin.h> -typedef void (*ClipNotifyPtr) (WindowPtr, int, int); +typedef void (*ClipNotifyPtr)(WindowPtr, int, int); /* * These functions can be wrapped by the DRI. Each of these have @@ -63,19 +63,26 @@ typedef struct { int kind; } DRISurfaceNotifyArg; -extern Bool DRIScreenInit(ScreenPtr pScreen); +extern Bool +DRIScreenInit(ScreenPtr pScreen); -extern Bool DRIFinishScreenInit(ScreenPtr pScreen); +extern Bool +DRIFinishScreenInit(ScreenPtr pScreen); -extern void DRICloseScreen(ScreenPtr pScreen); +extern void +DRICloseScreen(ScreenPtr pScreen); -extern Bool DRIExtensionInit(void); +extern Bool +DRIExtensionInit(void); -extern void DRIReset(void); +extern void +DRIReset(void); -extern Bool DRIQueryDirectRenderingCapable(ScreenPtr pScreen, Bool *isCapable); +extern Bool +DRIQueryDirectRenderingCapable(ScreenPtr pScreen, Bool *isCapable); -extern Bool DRIAuthConnection(ScreenPtr pScreen, unsigned int magic); +extern Bool +DRIAuthConnection(ScreenPtr pScreen, unsigned int magic); extern Bool DRICreateSurface(ScreenPtr pScreen, Drawable id, @@ -83,42 +90,52 @@ extern Bool DRICreateSurface(ScreenPtr pScreen, xp_client_id client_id, xp_surface_id * surface_id, unsigned int key[2], - void (*notify) (void *arg, void *data), + void (*notify)(void *arg, void *data), void *notify_data); -extern Bool DRIDestroySurface(ScreenPtr pScreen, - Drawable id, - DrawablePtr pDrawable, - void (*notify) (void *arg, void *data), - void *notify_data); +extern Bool +DRIDestroySurface(ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable, + void (*notify)(void *arg, + void *data), void *notify_data); -extern Bool DRIDrawablePrivDelete(pointer pResource, XID id); +extern Bool +DRIDrawablePrivDelete(pointer pResource, XID id); -extern DRIWrappedFuncsRec *DRIGetWrappedFuncs(ScreenPtr pScreen); +extern DRIWrappedFuncsRec * +DRIGetWrappedFuncs(ScreenPtr pScreen); -extern void DRICopyWindow(WindowPtr pWin, - DDXPointRec ptOldOrg, RegionPtr prgnSrc); +extern void +DRICopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc); -extern int DRIValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind); +extern int +DRIValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind); -extern void DRIPostValidateTree(WindowPtr pParent, - WindowPtr pChild, VTKind kind); +extern void +DRIPostValidateTree(WindowPtr pParent, WindowPtr pChild, VTKind kind); -extern void DRIClipNotify(WindowPtr pWin, int dx, int dy); +extern void +DRIClipNotify(WindowPtr pWin, int dx, int dy); -extern void DRIWindowExposures(WindowPtr pWin, RegionPtr prgn, RegionPtr bsreg); +extern void +DRIWindowExposures(WindowPtr pWin, RegionPtr prgn, RegionPtr bsreg); -extern void DRISurfaceNotify(xp_surface_id id, int kind); +extern void +DRISurfaceNotify(xp_surface_id id, int kind); -extern void DRIQueryVersion(int *majorVersion, - int *minorVersion, int *patchVersion); +extern void +DRIQueryVersion(int *majorVersion, int *minorVersion, int *patchVersion); -extern Bool DRICreatePixmap(ScreenPtr pScreen, Drawable id, - DrawablePtr pDrawable, char *path, size_t pathmax); +extern Bool +DRICreatePixmap(ScreenPtr pScreen, Drawable id, DrawablePtr pDrawable, + char *path, + size_t pathmax); -extern Bool DRIGetPixmapData(DrawablePtr pDrawable, int *width, int *height, - int *pitch, int *bpp, void **ptr); +extern Bool +DRIGetPixmapData(DrawablePtr pDrawable, int *width, int *height, int *pitch, + int *bpp, + void **ptr); -extern void DRIDestroyPixmap(DrawablePtr pDrawable); +extern void +DRIDestroyPixmap(DrawablePtr pDrawable); #endif diff --git a/xorg-server/hw/xquartz/xpr/driWrap.c b/xorg-server/hw/xquartz/xpr/driWrap.c index eca31b263..5f9f3abd3 100644 --- a/xorg-server/hw/xquartz/xpr/driWrap.c +++ b/xorg-server/hw/xquartz/xpr/driWrap.c @@ -1,27 +1,32 @@ /* -Copyright (c) 2009 Apple Computer, Inc. -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ + * Copyright (c) 2009-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ + #ifdef HAVE_DIX_CONFIG_H #include <dix-config.h> #endif @@ -55,23 +60,21 @@ typedef struct { } DRISavedDrawableState; static DevPrivateKeyRec driGCKeyRec; - #define driGCKey (&driGCKeyRec) static DevPrivateKeyRec driWrapScreenKeyRec; - #define driWrapScreenKey (&driWrapScreenKeyRec) static GCOps driGCOps; #define wrap(priv, real, member, func) { \ - priv->member = real->member; \ - real->member = func; \ - } + priv->member = real->member; \ + real->member = func; \ +} -#define unwrap(priv, real, member) { \ - real->member = priv->member; \ - } +#define unwrap(priv, real, member) { \ + real->member = priv->member; \ +} static DRIGCRec * DRIGetGCPriv(GCPtr pGC) @@ -94,7 +97,8 @@ DRIWrapGC(GCPtr pGC) } static void -DRISurfaceSetDrawable(DrawablePtr pDraw, DRISavedDrawableState * saved) +DRISurfaceSetDrawable(DrawablePtr pDraw, + DRISavedDrawableState *saved) { saved->didSave = FALSE; @@ -102,8 +106,9 @@ DRISurfaceSetDrawable(DrawablePtr pDraw, DRISavedDrawableState * saved) int pitch, width, height, bpp; void *buffer; - if (DRIGetPixmapData(pDraw, &width, &height, &pitch, &bpp, &buffer)) { - PixmapPtr pPix = (PixmapPtr) pDraw; + if (DRIGetPixmapData(pDraw, &width, &height, &pitch, &bpp, + &buffer)) { + PixmapPtr pPix = (PixmapPtr)pDraw; saved->devKind = pPix->devKind; saved->devPrivate.ptr = pPix->devPrivate.ptr; @@ -116,9 +121,10 @@ DRISurfaceSetDrawable(DrawablePtr pDraw, DRISavedDrawableState * saved) } static void -DRISurfaceRestoreDrawable(DrawablePtr pDraw, DRISavedDrawableState * saved) +DRISurfaceRestoreDrawable(DrawablePtr pDraw, + DRISavedDrawableState *saved) { - PixmapPtr pPix = (PixmapPtr) pDraw; + PixmapPtr pPix = (PixmapPtr)pDraw; if (!saved->didSave) return; @@ -129,7 +135,8 @@ DRISurfaceRestoreDrawable(DrawablePtr pDraw, DRISavedDrawableState * saved) static void DRIFillSpans(DrawablePtr dst, GCPtr pGC, int nInit, - DDXPointPtr pptInit, int *pwidthInit, int sorted) + DDXPointPtr pptInit, int *pwidthInit, + int sorted) { DRISavedDrawableState saved; @@ -146,7 +153,8 @@ DRIFillSpans(DrawablePtr dst, GCPtr pGC, int nInit, static void DRISetSpans(DrawablePtr dst, GCPtr pGC, char *pSrc, - DDXPointPtr pptInit, int *pwidthInit, int nspans, int sorted) + DDXPointPtr pptInit, int *pwidthInit, + int nspans, int sorted) { DRISavedDrawableState saved; @@ -181,7 +189,8 @@ DRIPutImage(DrawablePtr dst, GCPtr pGC, static RegionPtr DRICopyArea(DrawablePtr pSrc, DrawablePtr dst, GCPtr pGC, - int srcx, int srcy, int w, int h, int dstx, int dsty) + int srcx, int srcy, int w, int h, + int dstx, int dsty) { RegionPtr pReg; DRISavedDrawableState pSrcSaved, dstSaved; @@ -204,7 +213,8 @@ DRICopyArea(DrawablePtr pSrc, DrawablePtr dst, GCPtr pGC, static RegionPtr DRICopyPlane(DrawablePtr pSrc, DrawablePtr dst, GCPtr pGC, int srcx, int srcy, - int w, int h, int dstx, int dsty, unsigned long plane) + int w, int h, int dstx, int dsty, + unsigned long plane) { RegionPtr pReg; DRISavedDrawableState pSrcSaved, dstSaved; @@ -226,7 +236,8 @@ DRICopyPlane(DrawablePtr pSrc, DrawablePtr dst, } static void -DRIPolyPoint(DrawablePtr dst, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit) +DRIPolyPoint(DrawablePtr dst, GCPtr pGC, + int mode, int npt, DDXPointPtr pptInit) { DRISavedDrawableState saved; @@ -242,7 +253,8 @@ DRIPolyPoint(DrawablePtr dst, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit) } static void -DRIPolylines(DrawablePtr dst, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit) +DRIPolylines(DrawablePtr dst, GCPtr pGC, + int mode, int npt, DDXPointPtr pptInit) { DRISavedDrawableState saved; @@ -258,7 +270,8 @@ DRIPolylines(DrawablePtr dst, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit) } static void -DRIPolySegment(DrawablePtr dst, GCPtr pGC, int nseg, xSegment * pSeg) +DRIPolySegment(DrawablePtr dst, GCPtr pGC, + int nseg, xSegment *pSeg) { DRISavedDrawableState saved; @@ -274,7 +287,8 @@ DRIPolySegment(DrawablePtr dst, GCPtr pGC, int nseg, xSegment * pSeg) } static void -DRIPolyRectangle(DrawablePtr dst, GCPtr pGC, int nRects, xRectangle *pRects) +DRIPolyRectangle(DrawablePtr dst, GCPtr pGC, + int nRects, xRectangle *pRects) { DRISavedDrawableState saved; @@ -288,9 +302,8 @@ DRIPolyRectangle(DrawablePtr dst, GCPtr pGC, int nRects, xRectangle *pRects) DRISurfaceRestoreDrawable(dst, &saved); } - static void -DRIPolyArc(DrawablePtr dst, GCPtr pGC, int narcs, xArc * parcs) +DRIPolyArc(DrawablePtr dst, GCPtr pGC, int narcs, xArc *parcs) { DRISavedDrawableState saved; @@ -307,7 +320,8 @@ DRIPolyArc(DrawablePtr dst, GCPtr pGC, int narcs, xArc * parcs) static void DRIFillPolygon(DrawablePtr dst, GCPtr pGC, - int shape, int mode, int count, DDXPointPtr pptInit) + int shape, int mode, int count, + DDXPointPtr pptInit) { DRISavedDrawableState saved; @@ -340,7 +354,8 @@ DRIPolyFillRect(DrawablePtr dst, GCPtr pGC, } static void -DRIPolyFillArc(DrawablePtr dst, GCPtr pGC, int narcsInit, xArc * parcsInit) +DRIPolyFillArc(DrawablePtr dst, GCPtr pGC, + int narcsInit, xArc *parcsInit) { DRISavedDrawableState saved; @@ -356,7 +371,8 @@ DRIPolyFillArc(DrawablePtr dst, GCPtr pGC, int narcsInit, xArc * parcsInit) } static int -DRIPolyText8(DrawablePtr dst, GCPtr pGC, int x, int y, int count, char *chars) +DRIPolyText8(DrawablePtr dst, GCPtr pGC, + int x, int y, int count, char *chars) { int ret; DRISavedDrawableState saved; @@ -395,7 +411,8 @@ DRIPolyText16(DrawablePtr dst, GCPtr pGC, } static void -DRIImageText8(DrawablePtr dst, GCPtr pGC, int x, int y, int count, char *chars) +DRIImageText8(DrawablePtr dst, GCPtr pGC, + int x, int y, int count, char *chars) { DRISavedDrawableState saved; @@ -430,7 +447,7 @@ DRIImageText16(DrawablePtr dst, GCPtr pGC, static void DRIImageGlyphBlt(DrawablePtr dst, GCPtr pGC, int x, int y, unsigned int nglyphInit, - CharInfoPtr * ppciInit, pointer unused) + CharInfoPtr *ppciInit, pointer unused) { DRISavedDrawableState saved; @@ -448,7 +465,7 @@ DRIImageGlyphBlt(DrawablePtr dst, GCPtr pGC, static void DRIPolyGlyphBlt(DrawablePtr dst, GCPtr pGC, int x, int y, unsigned int nglyph, - CharInfoPtr * ppci, pointer pglyphBase) + CharInfoPtr *ppci, pointer pglyphBase) { DRISavedDrawableState saved; @@ -539,12 +556,12 @@ DRIWrapInit(ScreenPtr pScreen) if (!dixRegisterPrivateKey(&driGCKeyRec, PRIVATE_GC, sizeof(DRIGCRec))) return FALSE; - if (!dixRegisterPrivateKey - (&driWrapScreenKeyRec, PRIVATE_SCREEN, sizeof(DRIWrapScreenRec))) + if (!dixRegisterPrivateKey(&driWrapScreenKeyRec, PRIVATE_SCREEN, + sizeof(DRIWrapScreenRec))) return FALSE; - pScreenPriv = - dixGetPrivateAddr(&pScreen->devPrivates, &driWrapScreenKeyRec); + pScreenPriv = dixGetPrivateAddr(&pScreen->devPrivates, + &driWrapScreenKeyRec); pScreenPriv->CreateGC = pScreen->CreateGC; pScreen->CreateGC = DRICreateGC; diff --git a/xorg-server/hw/xquartz/xpr/driWrap.h b/xorg-server/hw/xquartz/xpr/driWrap.h index d31d5ddaf..1bc34ee9e 100644 --- a/xorg-server/hw/xquartz/xpr/driWrap.h +++ b/xorg-server/hw/xquartz/xpr/driWrap.h @@ -1,31 +1,36 @@ /* -Copyright (c) 2009 Apple Computer, Inc. -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ + * Copyright (c) 2009-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifndef DRIWRAP_H #include "scrnintstr.h" -Bool DRIWrapInit(ScreenPtr pScreen); +Bool +DRIWrapInit(ScreenPtr pScreen); #endif /*DRIWRAP_H*/ diff --git a/xorg-server/hw/xquartz/xpr/dristruct.h b/xorg-server/hw/xquartz/xpr/dristruct.h index 13d590b1f..068e9a253 100644 --- a/xorg-server/hw/xquartz/xpr/dristruct.h +++ b/xorg-server/hw/xquartz/xpr/dristruct.h @@ -1,35 +1,35 @@ /************************************************************************** -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -Copyright (c) 2002 Apple Computer, Inc. -All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. + Copyright (c) 2002-2012 Apple Computer, Inc. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ /* * Authors: * Jens Owen <jens@precisioninsight.com> - * + * Jeremy Huddleston <jeremyhu@apple.com> */ #ifndef DRI_STRUCT_H @@ -41,10 +41,14 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define DRI_MAX_DRAWABLES 256 #define DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin) ((DRIDrawablePrivPtr) \ - dixLookupPrivate(&(pWin)->devPrivates, DRIWindowPrivKey)) + dixLookupPrivate(&(pWin)-> \ + devPrivates, \ + DRIWindowPrivKey)) #define DRI_DRAWABLE_PRIV_FROM_PIXMAP(pPix) ((DRIDrawablePrivPtr) \ - dixLookupPrivate(&(pPix)->devPrivates, DRIPixmapPrivKey)) + dixLookupPrivate(&(pPix)-> \ + devPrivates, \ + DRIPixmapPrivKey)) typedef struct _DRIDrawablePrivRec { xp_surface_id sid; @@ -53,15 +57,22 @@ typedef struct _DRIDrawablePrivRec { ScreenPtr pScreen; int refCount; unsigned int key[2]; - x_list *notifiers; /* list of (FUN . DATA) */ + x_list *notifiers; /* list of (FUN . DATA) */ } DRIDrawablePrivRec, *DRIDrawablePrivPtr; -#define DRI_SCREEN_PRIV(pScreen) ((DRIScreenPrivPtr) \ - dixLookupPrivate(&(pScreen)->devPrivates, DRIScreenPrivKey)) +#define DRI_SCREEN_PRIV(pScreen) ((DRIScreenPrivPtr) \ + dixLookupPrivate(&(pScreen) \ + -> \ + devPrivates, \ + DRIScreenPrivKey)) #define DRI_SCREEN_PRIV_FROM_INDEX(screenIndex) ((DRIScreenPrivPtr) \ - dixLookupPrivate(&screenInfo.screens[screenIndex]->devPrivates, \ - DRIScreenPrivKey)) + dixLookupPrivate(&screenInfo \ + .screens[ \ + screenIndex \ + ]-> \ + devPrivates, \ + DRIScreenPrivKey)) typedef struct _DRIScreenPrivRec { Bool directRenderingSupport; @@ -70,4 +81,4 @@ typedef struct _DRIScreenPrivRec { DrawablePtr DRIDrawables[DRI_MAX_DRAWABLES]; } DRIScreenPrivRec, *DRIScreenPrivPtr; -#endif /* DRI_STRUCT_H */ +#endif /* DRI_STRUCT_H */ diff --git a/xorg-server/hw/xquartz/xpr/x-hash.c b/xorg-server/hw/xquartz/xpr/x-hash.c index a3ff66177..26e079ff0 100644 --- a/xorg-server/hw/xquartz/xpr/x-hash.c +++ b/xorg-server/hw/xquartz/xpr/x-hash.c @@ -1,31 +1,32 @@ /* x-hash.c - basic hash tables - - Copyright (c) 2002 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifdef HAVE_DIX_CONFIG_H #include <dix-config.h> @@ -47,59 +48,61 @@ struct x_hash_table_struct { x_destroy_fun *destroy_value; }; -#define ITEM_NEW(k, v) X_PFX (list_prepend) ((x_list *) (k), v) -#define ITEM_FREE(i) X_PFX (list_free_1) (i) -#define ITEM_KEY(i) ((void *) (i)->next) -#define ITEM_VALUE(i) ((i)->data) +#define ITEM_NEW(k, v) X_PFX(list_prepend) ((x_list *)(k), v) +#define ITEM_FREE(i) X_PFX(list_free_1) (i) +#define ITEM_KEY(i) ((void *)(i)->next) +#define ITEM_VALUE(i) ((i)->data) #define SPLIT_THRESHOLD_FACTOR 2 /* http://planetmath.org/?op=getobj&from=objects&name=GoodHashTablePrimes */ static const unsigned int bucket_sizes[] = { - 29, 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593, 49157, - 98317, 196613, 393241, 786433, 1572869, 3145739, 6291469, 12582917, + 29, 53, 97, 193, 389, 769, 1543, + 3079, 6151, 12289, 24593, 49157, + 98317, 196613, 393241, 786433, 1572869, 3145739, 6291469, + 12582917, 25165843, 50331653, 100663319, 201326611, 402653189, 805306457, 1610612741 }; -#define N_BUCKET_SIZES (sizeof (bucket_sizes) / sizeof (bucket_sizes[0])) +#define N_BUCKET_SIZES (sizeof(bucket_sizes) / sizeof(bucket_sizes[0])) static inline unsigned int -hash_table_total_buckets(x_hash_table * h) +hash_table_total_buckets(x_hash_table *h) { return bucket_sizes[h->bucket_index]; } static inline void -hash_table_destroy_item(x_hash_table * h, void *k, void *v) +hash_table_destroy_item(x_hash_table *h, void *k, void *v) { if (h->destroy_key != 0) - (*h->destroy_key) (k); + (*h->destroy_key)(k); if (h->destroy_value != 0) - (*h->destroy_value) (v); + (*h->destroy_value)(v); } static inline size_t -hash_table_hash_key(x_hash_table * h, void *k) +hash_table_hash_key(x_hash_table *h, void *k) { if (h->hash_key != 0) - return (*h->hash_key) (k); + return (*h->hash_key)(k); else - return (size_t) k; + return (size_t)k; } static inline int -hash_table_compare_keys(x_hash_table * h, void *k1, void *k2) +hash_table_compare_keys(x_hash_table *h, void *k1, void *k2) { if (h->compare_keys == 0) return k1 == k2; else - return (*h->compare_keys) (k1, k2) == 0; + return (*h->compare_keys)(k1, k2) == 0; } static void -hash_table_split(x_hash_table * h) +hash_table_split(x_hash_table *h) { x_list **new, **old; x_list *node, *item, *next; @@ -139,10 +142,11 @@ hash_table_split(x_hash_table * h) free(old); } -X_EXTERN x_hash_table *X_PFX(hash_table_new) (x_hash_fun * hash, - x_compare_fun * compare, - x_destroy_fun * key_destroy, - x_destroy_fun * value_destroy) { +X_EXTERN x_hash_table * +X_PFX(hash_table_new) (x_hash_fun * hash, + x_compare_fun * compare, + x_destroy_fun * key_destroy, + x_destroy_fun * value_destroy) { x_hash_table *h; h = calloc(1, sizeof(x_hash_table)); @@ -166,7 +170,7 @@ X_EXTERN x_hash_table *X_PFX(hash_table_new) (x_hash_fun * hash, } X_EXTERN void - X_PFX(hash_table_free) (x_hash_table * h) { +X_PFX(hash_table_free) (x_hash_table * h) { int n, i; x_list *node, *item; @@ -188,14 +192,14 @@ X_EXTERN void } X_EXTERN unsigned int - X_PFX(hash_table_size) (x_hash_table * h) { +X_PFX(hash_table_size) (x_hash_table * h) { assert(h != NULL); return h->total_keys; } static void -hash_table_modify(x_hash_table * h, void *k, void *v, int replace) +hash_table_modify(x_hash_table *h, void *k, void *v, int replace) { size_t hash_value; x_list *node, *item; @@ -210,7 +214,8 @@ hash_table_modify(x_hash_table * h, void *k, void *v, int replace) if (hash_table_compare_keys(h, ITEM_KEY(item), k)) { if (replace) { - hash_table_destroy_item(h, ITEM_KEY(item), ITEM_VALUE(item)); + hash_table_destroy_item(h, ITEM_KEY(item), + ITEM_VALUE(item)); item->next = k; ITEM_VALUE(item) = v; } @@ -236,17 +241,17 @@ hash_table_modify(x_hash_table * h, void *k, void *v, int replace) } X_EXTERN void - X_PFX(hash_table_insert) (x_hash_table * h, void *k, void *v) { +X_PFX(hash_table_insert) (x_hash_table * h, void *k, void *v) { hash_table_modify(h, k, v, 0); } X_EXTERN void - X_PFX(hash_table_replace) (x_hash_table * h, void *k, void *v) { +X_PFX(hash_table_replace) (x_hash_table * h, void *k, void *v) { hash_table_modify(h, k, v, 1); } X_EXTERN void - X_PFX(hash_table_remove) (x_hash_table * h, void *k) { +X_PFX(hash_table_remove) (x_hash_table * h, void *k) { size_t hash_value; x_list **ptr, *item; @@ -270,8 +275,8 @@ X_EXTERN void } } -X_EXTERN void *X_PFX(hash_table_lookup) (x_hash_table * h, void *k, - void **k_ret) { +X_EXTERN void * +X_PFX(hash_table_lookup) (x_hash_table * h, void *k, void **k_ret) { size_t hash_value; x_list *node, *item; @@ -298,7 +303,6 @@ X_EXTERN void *X_PFX(hash_table_lookup) (x_hash_table * h, void *k, } X_EXTERN void - X_PFX(hash_table_foreach) (x_hash_table * h, x_hash_foreach_fun * fun, void *data) { int i, n; @@ -311,7 +315,7 @@ X_PFX(hash_table_foreach) (x_hash_table * h, for (i = 0; i < n; i++) { for (node = h->buckets[i]; node != 0; node = node->next) { item = node->data; - (*fun) (ITEM_KEY(item), ITEM_VALUE(item), data); + (*fun)(ITEM_KEY(item), ITEM_VALUE(item), data); } } } diff --git a/xorg-server/hw/xquartz/xpr/x-hash.h b/xorg-server/hw/xquartz/xpr/x-hash.h index c4543346a..2cdae7c5d 100644 --- a/xorg-server/hw/xquartz/xpr/x-hash.h +++ b/xorg-server/hw/xquartz/xpr/x-hash.h @@ -1,31 +1,32 @@ /* x-hash.h -- basic hash table class - - Copyright (c) 2002 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifndef X_HASH_H #define X_HASH_H 1 @@ -35,10 +36,10 @@ typedef struct x_hash_table_struct x_hash_table; -typedef int (x_compare_fun) (const void *a, const void *b); -typedef unsigned int (x_hash_fun) (const void *k); -typedef void (x_destroy_fun) (void *x); -typedef void (x_hash_foreach_fun) (void *k, void *v, void *data); +typedef int (x_compare_fun)(const void *a, const void *b); +typedef unsigned int (x_hash_fun)(const void *k); +typedef void (x_destroy_fun)(void *x); +typedef void (x_hash_foreach_fun)(void *k, void *v, void *data); /* for X_PFX and X_EXTERN */ #include "x-list.h" @@ -57,25 +58,27 @@ X_EXTERN void X_PFX(hash_table_remove) (x_hash_table * h, void *k); X_EXTERN void *X_PFX(hash_table_lookup) (x_hash_table * h, void *k, void **k_ret); X_EXTERN void X_PFX(hash_table_foreach) (x_hash_table * h, - x_hash_foreach_fun * fun, void *data); + x_hash_foreach_fun * fun, + void *data); /* Conversion between unsigned int (e.g. xp_resource_id) and void pointer */ /* Forward declarations */ -static __inline__ void *X_PFX(cvt_uint_to_vptr) (unsigned int val) - __attribute__ ((always_inline)); +static __inline__ void * +X_PFX(cvt_uint_to_vptr) (unsigned int val) __attribute__((always_inline)); static __inline__ unsigned int - X_PFX(cvt_vptr_to_uint) (void *val) __attribute__ ((always_inline)); +X_PFX(cvt_vptr_to_uint) (void * val) __attribute__((always_inline)); /* Implementations */ -static __inline__ void *X_PFX(cvt_uint_to_vptr) (unsigned int val) { - return (void *) ((unsigned long) (val)); +static __inline__ void * +X_PFX(cvt_uint_to_vptr) (unsigned int val) { + return (void *)((unsigned long)(val)); } static __inline__ unsigned int - X_PFX(cvt_vptr_to_uint) (void *val) { - size_t sv = (size_t) val; - unsigned int uv = (unsigned int) sv; +X_PFX(cvt_vptr_to_uint) (void * val) { + size_t sv = (size_t)val; + unsigned int uv = (unsigned int)sv; /* If this assert fails, chances are val actually is a pointer, or there's been memory corruption */ @@ -84,4 +87,4 @@ static __inline__ unsigned int return uv; } -#endif /* X_HASH_H */ +#endif /* X_HASH_H */ diff --git a/xorg-server/hw/xquartz/xpr/x-hook.c b/xorg-server/hw/xquartz/xpr/x-hook.c index fd34658e7..b5d8ab90e 100644 --- a/xorg-server/hw/xquartz/xpr/x-hook.c +++ b/xorg-server/hw/xquartz/xpr/x-hook.c @@ -1,31 +1,32 @@ /* x-hook.c - - Copyright (c) 2003 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifdef HAVE_DIX_CONFIG_H #include <dix-config.h> @@ -36,18 +37,18 @@ #include <assert.h> #include "os.h" -#define CELL_NEW(f,d) X_PFX (list_prepend) ((x_list *) (f), (d)) -#define CELL_FREE(c) X_PFX (list_free_1) (c) -#define CELL_FUN(c) ((x_hook_function *) ((c)->next)) -#define CELL_DATA(c) ((c)->data) +#define CELL_NEW(f, d) X_PFX(list_prepend) ((x_list *)(f), (d)) +#define CELL_FREE(c) X_PFX(list_free_1) (c) +#define CELL_FUN(c) ((x_hook_function *)((c)->next)) +#define CELL_DATA(c) ((c)->data) -X_EXTERN x_list *X_PFX(hook_add) (x_list * lst, x_hook_function * fun, - void *data) { +X_EXTERN x_list * +X_PFX(hook_add) (x_list * lst, x_hook_function * fun, void *data) { return X_PFX(list_prepend) (lst, CELL_NEW(fun, data)); } -X_EXTERN x_list *X_PFX(hook_remove) (x_list * lst, x_hook_function * fun, - void *data) { +X_EXTERN x_list * +X_PFX(hook_remove) (x_list * lst, x_hook_function * fun, void *data) { x_list *node, *cell; x_list *to_delete = NULL; @@ -68,7 +69,7 @@ X_EXTERN x_list *X_PFX(hook_remove) (x_list * lst, x_hook_function * fun, } X_EXTERN void - X_PFX(hook_run) (x_list * lst, void *arg) { +X_PFX(hook_run) (x_list * lst, void *arg) { x_list *node, *cell; x_hook_function **fun; void **data; @@ -92,7 +93,7 @@ X_EXTERN void } for (i = 0; i < length; i++) { - (*fun[i]) (arg, data[i]); + (*fun[i])(arg, data[i]); } free(fun); @@ -100,7 +101,7 @@ X_EXTERN void } X_EXTERN void - X_PFX(hook_free) (x_list * lst) { +X_PFX(hook_free) (x_list * lst) { x_list *node; for (node = lst; node != NULL; node = node->next) { diff --git a/xorg-server/hw/xquartz/xpr/x-hook.h b/xorg-server/hw/xquartz/xpr/x-hook.h index da3407f92..7ba8ac9f6 100644 --- a/xorg-server/hw/xquartz/xpr/x-hook.h +++ b/xorg-server/hw/xquartz/xpr/x-hook.h @@ -1,38 +1,39 @@ /* x-hook.h -- lists of function,data pairs to call. - - Copyright (c) 2003 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2003-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifndef X_HOOK_H #define X_HOOK_H 1 #include "x-list.h" -typedef void x_hook_function(void *arg, void *data); +typedef void x_hook_function (void *arg, void *data); X_EXTERN x_list *X_PFX(hook_add) (x_list * lst, x_hook_function * fun, void *data); @@ -41,4 +42,4 @@ X_EXTERN x_list *X_PFX(hook_remove) (x_list * lst, x_hook_function * fun, X_EXTERN void X_PFX(hook_run) (x_list * lst, void *arg); X_EXTERN void X_PFX(hook_free) (x_list * lst); -#endif /* X_HOOK_H */ +#endif /* X_HOOK_H */ diff --git a/xorg-server/hw/xquartz/xpr/x-list.c b/xorg-server/hw/xquartz/xpr/x-list.c index 757ff4cb0..29543d4e0 100644 --- a/xorg-server/hw/xquartz/xpr/x-list.c +++ b/xorg-server/hw/xquartz/xpr/x-list.c @@ -1,31 +1,32 @@ /* x-list.c - - Copyright (c) 2002 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifdef HAVE_DIX_CONFIG_H #include <dix-config.h> @@ -50,14 +51,14 @@ static x_list *freelist; static pthread_mutex_t freelist_lock = PTHREAD_MUTEX_INITIALIZER; static inline void -list_free_1(x_list * node) +list_free_1(x_list *node) { node->next = freelist; freelist = node; } X_EXTERN void - X_PFX(list_free_1) (x_list * node) { +X_PFX(list_free_1) (x_list * node) { assert(node != NULL); pthread_mutex_lock(&freelist_lock); @@ -68,7 +69,7 @@ X_EXTERN void } X_EXTERN void - X_PFX(list_free) (x_list * lst) { +X_PFX(list_free) (x_list * lst) { x_list *next; pthread_mutex_lock(&freelist_lock); @@ -81,7 +82,8 @@ X_EXTERN void pthread_mutex_unlock(&freelist_lock); } -X_EXTERN x_list *X_PFX(list_prepend) (x_list * lst, void *data) { +X_EXTERN x_list * +X_PFX(list_prepend) (x_list * lst, void *data) { x_list *node; pthread_mutex_lock(&freelist_lock); @@ -111,7 +113,8 @@ X_EXTERN x_list *X_PFX(list_prepend) (x_list * lst, void *data) { return node; } -X_EXTERN x_list *X_PFX(list_append) (x_list * lst, void *data) { +X_EXTERN x_list * +X_PFX(list_append) (x_list * lst, void *data) { x_list *head = lst; if (lst == NULL) @@ -125,10 +128,12 @@ X_EXTERN x_list *X_PFX(list_append) (x_list * lst, void *data) { return head; } -X_EXTERN x_list *X_PFX(list_reverse) (x_list * lst) { +X_EXTERN x_list * +X_PFX(list_reverse) (x_list * lst) { x_list *head = NULL, *next; - while (lst != NULL) { + while (lst != NULL) + { next = lst->next; lst->next = head; head = lst; @@ -138,7 +143,8 @@ X_EXTERN x_list *X_PFX(list_reverse) (x_list * lst) { return head; } -X_EXTERN x_list *X_PFX(list_find) (x_list * lst, void *data) { +X_EXTERN x_list * +X_PFX(list_find) (x_list * lst, void *data) { for (; lst != NULL; lst = lst->next) { if (lst->data == data) return lst; @@ -147,19 +153,20 @@ X_EXTERN x_list *X_PFX(list_find) (x_list * lst, void *data) { return NULL; } -X_EXTERN x_list *X_PFX(list_nth) (x_list * lst, int n) { +X_EXTERN x_list * +X_PFX(list_nth) (x_list * lst, int n) { while (n-- > 0 && lst != NULL) lst = lst->next; return lst; } -X_EXTERN x_list *X_PFX(list_pop) (x_list * lst, void **data_ret) { +X_EXTERN x_list * +X_PFX(list_pop) (x_list * lst, void **data_ret) { void *data = NULL; if (lst != NULL) { x_list *tem = lst; - data = lst->data; lst = lst->next; X_PFX(list_free_1) (tem); @@ -171,22 +178,22 @@ X_EXTERN x_list *X_PFX(list_pop) (x_list * lst, void **data_ret) { return lst; } -X_EXTERN x_list *X_PFX(list_filter) (x_list * lst, - int (*pred) (void *item, void *data), - void *data) { +X_EXTERN x_list * +X_PFX(list_filter) (x_list * lst, + int (*pred)(void *item, void *data), void *data) { x_list *ret = NULL, *node; for (node = lst; node != NULL; node = node->next) { - if ((*pred) (node->data, data)) + if ((*pred)(node->data, data)) ret = X_PFX(list_prepend) (ret, node->data); } return X_PFX(list_reverse) (ret); } -X_EXTERN x_list *X_PFX(list_map) (x_list * lst, - void *(*fun) (void *item, void *data), - void *data) { +X_EXTERN x_list * +X_PFX(list_map) (x_list * lst, + void *(*fun)(void *item, void *data), void *data) { x_list *ret = NULL, *node; for (node = lst; node != NULL; node = node->next) { @@ -196,7 +203,8 @@ X_EXTERN x_list *X_PFX(list_map) (x_list * lst, return X_PFX(list_reverse) (ret); } -X_EXTERN x_list *X_PFX(list_copy) (x_list * lst) { +X_EXTERN x_list * +X_PFX(list_copy) (x_list * lst) { x_list *copy = NULL; for (; lst != NULL; lst = lst->next) { @@ -206,7 +214,8 @@ X_EXTERN x_list *X_PFX(list_copy) (x_list * lst) { return X_PFX(list_reverse) (copy); } -X_EXTERN x_list *X_PFX(list_remove) (x_list * lst, void *data) { +X_EXTERN x_list * +X_PFX(list_remove) (x_list * lst, void *data) { x_list **ptr, *node; for (ptr = &lst; *ptr != NULL;) { @@ -224,7 +233,7 @@ X_EXTERN x_list *X_PFX(list_remove) (x_list * lst, void *data) { } X_EXTERN unsigned int - X_PFX(list_length) (x_list * lst) { +X_PFX(list_length) (x_list * lst) { unsigned int n; n = 0; @@ -235,17 +244,17 @@ X_EXTERN unsigned int } X_EXTERN void - X_PFX(list_foreach) (x_list * lst, - void (*fun) (void *data, void *user_data), + void (*fun)(void *data, void *user_data), void *user_data) { for (; lst != NULL; lst = lst->next) { - (*fun) (lst->data, user_data); + (*fun)(lst->data, user_data); } } static x_list * -list_sort_1(x_list * lst, int length, int (*less) (const void *, const void *)) +list_sort_1(x_list *lst, int length, + int (*less)(const void *, const void *)) { x_list *mid, *ptr; x_list *out_head, *out; @@ -274,13 +283,14 @@ list_sort_1(x_list * lst, int length, int (*less) (const void *, const void *)) assert(lst != NULL && mid != NULL); - if ((*less) (mid->data, lst->data)) + if ((*less)(mid->data, lst->data)) out = out_head = mid, mid = mid->next; else out = out_head = lst, lst = lst->next; - while (lst != NULL && mid != NULL) { - if ((*less) (mid->data, lst->data)) + while (lst != NULL && mid != NULL) + { + if ((*less)(mid->data, lst->data)) out = out->next = mid, mid = mid->next; else out = out->next = lst, lst = lst->next; @@ -294,8 +304,8 @@ list_sort_1(x_list * lst, int length, int (*less) (const void *, const void *)) return out_head; } -X_EXTERN x_list *X_PFX(list_sort) (x_list * lst, - int (*less) (const void *, const void *)) { +X_EXTERN x_list * +X_PFX(list_sort) (x_list * lst, int (*less)(const void *, const void *)) { int length; length = X_PFX(list_length) (lst); diff --git a/xorg-server/hw/xquartz/xpr/x-list.h b/xorg-server/hw/xquartz/xpr/x-list.h index 04af024a2..28385fd99 100644 --- a/xorg-server/hw/xquartz/xpr/x-list.h +++ b/xorg-server/hw/xquartz/xpr/x-list.h @@ -1,31 +1,32 @@ /* x-list.h -- simple list type - - Copyright (c) 2002 Apple Computer, Inc. All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT - HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above - copyright holders shall not be used in advertising or otherwise to - promote the sale, use or other dealings in this Software without - prior written authorization. */ + * + * Copyright (c) 2002-2012 Apple Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name(s) of the above + * copyright holders shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without + * prior written authorization. + */ #ifndef X_LIST_H #define X_LIST_H 1 @@ -40,38 +41,38 @@ struct x_list_struct { }; #ifndef X_PFX -# define X_PFX(x) x_ ## x +#define X_PFX(x) x_ ## x #endif #ifndef X_EXTERN -# define X_EXTERN __private_extern__ +#define X_EXTERN __private_extern__ #endif -X_EXTERN void X_PFX (list_free_1) (x_list *node); -X_EXTERN x_list *X_PFX (list_prepend) (x_list *lst, void *data); - -X_EXTERN x_list *X_PFX (list_append) (x_list *lst, void *data); -X_EXTERN x_list *X_PFX (list_remove) (x_list *lst, void *data); -X_EXTERN void X_PFX (list_free) (x_list *lst); -X_EXTERN x_list *X_PFX (list_pop) (x_list *lst, void **data_ret); - -X_EXTERN x_list *X_PFX (list_copy) (x_list *lst); -X_EXTERN x_list *X_PFX (list_reverse) (x_list *lst); -X_EXTERN x_list *X_PFX (list_find) (x_list *lst, void *data); -X_EXTERN x_list *X_PFX (list_nth) (x_list *lst, int n); -X_EXTERN x_list *X_PFX (list_filter) (x_list *src, - int (*pred) (void *item, void *data), - void *data); -X_EXTERN x_list *X_PFX (list_map) (x_list *src, - void *(*fun) (void *item, void *data), - void *data); - -X_EXTERN unsigned int X_PFX (list_length) (x_list *lst); -X_EXTERN void X_PFX (list_foreach) (x_list *lst, void (*fun) - (void *data, void *user_data), - void *user_data); - -X_EXTERN x_list *X_PFX (list_sort) (x_list *lst, int (*less) (const void *, - const void *)); +X_EXTERN void X_PFX(list_free_1) (x_list * node); +X_EXTERN x_list *X_PFX(list_prepend) (x_list * lst, void *data); + +X_EXTERN x_list *X_PFX(list_append) (x_list * lst, void *data); +X_EXTERN x_list *X_PFX(list_remove) (x_list * lst, void *data); +X_EXTERN void X_PFX(list_free) (x_list * lst); +X_EXTERN x_list *X_PFX(list_pop) (x_list * lst, void **data_ret); + +X_EXTERN x_list *X_PFX(list_copy) (x_list * lst); +X_EXTERN x_list *X_PFX(list_reverse) (x_list * lst); +X_EXTERN x_list *X_PFX(list_find) (x_list * lst, void *data); +X_EXTERN x_list *X_PFX(list_nth) (x_list * lst, int n); +X_EXTERN x_list *X_PFX(list_filter) (x_list * src, + int (*pred)(void *item, void *data), + void *data); +X_EXTERN x_list *X_PFX(list_map) (x_list * src, + void *(*fun)(void *item, void *data), + void *data); + +X_EXTERN unsigned int X_PFX(list_length) (x_list * lst); +X_EXTERN void X_PFX(list_foreach) (x_list * lst, void (*fun) + (void *data, void *user_data), + void *user_data); + +X_EXTERN x_list *X_PFX(list_sort) (x_list * lst, + int (*less)(const void *, const void *)); #endif /* X_LIST_H */ diff --git a/xorg-server/hw/xquartz/xpr/xpr.h b/xorg-server/hw/xquartz/xpr/xpr.h index 0b138ddd7..fc614ebc3 100644 --- a/xorg-server/hw/xquartz/xpr/xpr.h +++ b/xorg-server/hw/xquartz/xpr/xpr.h @@ -2,6 +2,7 @@ * Xplugin rootless implementation * * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. + * Copyright (c) 2002-2012 Apple 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"), @@ -36,21 +37,31 @@ #include "darwin.h" #undef DEBUG_LOG -#define DEBUG_LOG(msg, args...) ASL_LOG(ASL_LEVEL_DEBUG, "xpr", msg, ##args) +#define DEBUG_LOG(msg, args ...) ASL_LOG(ASL_LEVEL_DEBUG, "xpr", msg, ## args) -Bool QuartzModeBundleInit(void); +Bool +QuartzModeBundleInit(void); -void AppleDRIExtensionInit(void); -void xprAppleWMInit(void); -Bool xprInit(ScreenPtr pScreen); -Bool xprIsX11Window(int windowNumber); -WindowPtr xprGetXWindow(xp_window_id wid); +void +AppleDRIExtensionInit(void); +void +xprAppleWMInit(void); +Bool +xprInit(ScreenPtr pScreen); +Bool +xprIsX11Window(int windowNumber); +WindowPtr +xprGetXWindow(xp_window_id wid); -void xprHideWindows(Bool hide); +void +xprHideWindows(Bool hide); -Bool QuartzInitCursor(ScreenPtr pScreen); -void QuartzSuspendXCursor(ScreenPtr pScreen); -void QuartzResumeXCursor(ScreenPtr pScreen); +Bool +QuartzInitCursor(ScreenPtr pScreen); +void +QuartzSuspendXCursor(ScreenPtr pScreen); +void +QuartzResumeXCursor(ScreenPtr pScreen); /* If we are rooted, we need the root window and desktop levels to be below * the menubar (24) but above native windows. Normal window level is 0. @@ -59,11 +70,11 @@ void QuartzResumeXCursor(ScreenPtr pScreen); */ #include <X11/extensions/applewmconst.h> -static const int normal_window_levels[AppleWMNumWindowLevels+1] = { -0, 3, 4, 5, INT_MIN + 30, INT_MIN + 29, +static const int normal_window_levels[AppleWMNumWindowLevels + 1] = { + 0, 3, 4, 5, INT_MIN + 30, INT_MIN + 29, }; -static const int rooted_window_levels[AppleWMNumWindowLevels+1] = { -20, 21, 22, 23, 19, 18, +static const int rooted_window_levels[AppleWMNumWindowLevels + 1] = { + 20, 21, 22, 23, 19, 18, }; #endif /* XPR_H */ diff --git a/xorg-server/hw/xquartz/xpr/xprAppleWM.c b/xorg-server/hw/xquartz/xpr/xprAppleWM.c index 77b9fa3e8..8c4f5efb8 100644 --- a/xorg-server/hw/xquartz/xpr/xprAppleWM.c +++ b/xorg-server/hw/xquartz/xpr/xprAppleWM.c @@ -1,7 +1,7 @@ /* * Xplugin rootless implementation functions for AppleWM extension * - * Copyright (c) 2002 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2002-2012 Apple Computer, Inc. All rights reserved. * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -107,7 +107,8 @@ xprAttachTransient(WindowPtr pWinChild, WindowPtr pWinParent) RootlessStopDrawing(pWinChild, FALSE); - if (xp_configure_window(child_wid, XP_ATTACH_TRANSIENT, &wc) != Success) { + if (xp_configure_window(child_wid, XP_ATTACH_TRANSIENT, + &wc) != Success) { return BadValue; } @@ -119,9 +120,10 @@ static int xprFrameDraw(WindowPtr pWin, xp_frame_class class, xp_frame_attr attr, - const BoxRec * outer, - const BoxRec * inner, - unsigned int title_len, const unsigned char *title_bytes) + const BoxRec *outer, + const BoxRec *inner, + unsigned int title_len, + const unsigned char *title_bytes) { xp_window_id wid; diff --git a/xorg-server/hw/xquartz/xpr/xprCursor.c b/xorg-server/hw/xquartz/xpr/xprCursor.c index b0afa8c0e..0392a4639 100644 --- a/xorg-server/hw/xquartz/xpr/xprCursor.c +++ b/xorg-server/hw/xquartz/xpr/xprCursor.c @@ -57,11 +57,11 @@ typedef struct { } QuartzCursorScreenRec, *QuartzCursorScreenPtr; static DevPrivateKeyRec darwinCursorScreenKeyRec; - #define darwinCursorScreenKey (&darwinCursorScreenKeyRec) #define CURSOR_PRIV(pScreen) ((QuartzCursorScreenPtr) \ - dixLookupPrivate(&pScreen->devPrivates, darwinCursorScreenKey)) + dixLookupPrivate(&pScreen->devPrivates, \ + darwinCursorScreenKey)) static Bool load_cursor(CursorPtr src, int screen) @@ -89,11 +89,10 @@ load_cursor(CursorPtr src, int screen) if (src->bits->argb != NULL) { #if BITMAP_BIT_ORDER == MSBFirst rowbytes = src->bits->width * sizeof(CARD32); - data = (uint32_t *) src->bits->argb; + data = (uint32_t *)src->bits->argb; #else - const uint32_t *be_data = (uint32_t *) src->bits->argb; + const uint32_t *be_data = (uint32_t *)src->bits->argb; unsigned i; - rowbytes = src->bits->width * sizeof(CARD32); data = malloc(rowbytes * src->bits->height); free_data = TRUE; @@ -134,13 +133,15 @@ load_cursor(CursorPtr src, int screen) mrow = src->bits->mask; drow = data; - while (ycount-- > 0) { + while (ycount-- > 0) + { xcount = bits_to_bytes(src->bits->width); sptr = srow; mptr = mrow; dptr = drow; - while (xcount-- > 0) { + while (xcount-- > 0) + { uint8_t s, m; int i; @@ -167,7 +168,7 @@ load_cursor(CursorPtr src, int screen) srow += BitmapBytePad(src->bits->width); mrow += BitmapBytePad(src->bits->width); - drow = (uint32_t *) ((char *) drow + rowbytes); + drow = (uint32_t *)((char *)drow + rowbytes); } } else { @@ -182,12 +183,12 @@ load_cursor(CursorPtr src, int screen) } /* -=========================================================================== + =========================================================================== - Pointer sprite functions + Pointer sprite functions -=========================================================================== -*/ + =========================================================================== + */ /* * QuartzRealizeCursor @@ -219,7 +220,8 @@ QuartzUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) * Set the cursor sprite and position. */ static void -QuartzSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, +QuartzSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, + int x, int y) { QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen); @@ -249,16 +251,15 @@ QuartzSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, */ static void QuartzMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) -{ -} +{} /* -=========================================================================== + =========================================================================== - Pointer screen functions + Pointer screen functions -=========================================================================== -*/ + =========================================================================== + */ /* * QuartzCursorOffScreen @@ -309,12 +310,12 @@ static miPointerScreenFuncRec quartzScreenFuncsRec = { }; /* -=========================================================================== + =========================================================================== - Other screen functions + Other screen functions -=========================================================================== -*/ + =========================================================================== + */ /* * QuartzCursorQueryBestSize @@ -332,7 +333,7 @@ QuartzCursorQueryBestSize(int class, unsigned short *width, *height = 32; } else { - (*ScreenPriv->QueryBestSize) (class, width, height, pScreen); + (*ScreenPriv->QueryBestSize)(class, width, height, pScreen); } } @@ -383,8 +384,7 @@ QuartzInitCursor(ScreenPtr pScreen) */ void QuartzSuspendXCursor(ScreenPtr pScreen) -{ -} +{} /* * QuartzResumeXCursor diff --git a/xorg-server/hw/xquartz/xpr/xprEvent.c b/xorg-server/hw/xquartz/xpr/xprEvent.c index 7f4b077c3..106a91931 100644 --- a/xorg-server/hw/xquartz/xpr/xprEvent.c +++ b/xorg-server/hw/xquartz/xpr/xprEvent.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2008 Apple Inc. +/* Copyright (c) 2008-2012 Apple Inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files @@ -56,12 +56,13 @@ #include "xprEvent.h" Bool -QuartzModeEventHandler(int screenNum, XQuartzEvent * e, DeviceIntPtr dev) +QuartzModeEventHandler(int screenNum, XQuartzEvent *e, DeviceIntPtr dev) { switch (e->subtype) { case kXquartzWindowState: DEBUG_LOG("kXquartzWindowState\n"); - RootlessNativeWindowStateChanged(xprGetXWindow(e->data[0]), e->data[1]); + RootlessNativeWindowStateChanged(xprGetXWindow(e->data[0]), + e->data[1]); return TRUE; case kXquartzWindowMoved: @@ -73,6 +74,7 @@ QuartzModeEventHandler(int screenNum, XQuartzEvent * e, DeviceIntPtr dev) DEBUG_LOG("kXquartzBringAllToFront\n"); RootlessOrderAllWindows(e->data[0]); return TRUE; + default: return FALSE; } diff --git a/xorg-server/hw/xquartz/xpr/xprEvent.h b/xorg-server/hw/xquartz/xpr/xprEvent.h index ebfa36bd8..4f9cc6118 100644 --- a/xorg-server/hw/xquartz/xpr/xprEvent.h +++ b/xorg-server/hw/xquartz/xpr/xprEvent.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2008 Apple Inc. +/* Copyright (c) 2008-2012 Apple Inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files @@ -29,6 +29,7 @@ #ifndef __XPR_EVENT_H__ #define __XPR_EVENT_H__ -Bool QuartzModeEventHandler(int screenNum, XQuartzEvent *e, DeviceIntPtr dev); +Bool +QuartzModeEventHandler(int screenNum, XQuartzEvent *e, DeviceIntPtr dev); #endif diff --git a/xorg-server/hw/xquartz/xpr/xprFrame.c b/xorg-server/hw/xquartz/xpr/xprFrame.c index ed81c4b48..4c7aac42b 100644 --- a/xorg-server/hw/xquartz/xpr/xprFrame.c +++ b/xorg-server/hw/xquartz/xpr/xprFrame.c @@ -1,7 +1,7 @@ /* * Xplugin rootless implementation frame functions * - * Copyright (c) 2002-2011 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2002-2012 Apple Computer, Inc. All rights reserved. * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -49,21 +49,21 @@ #include <pthread.h> #endif -#define DEFINE_ATOM_HELPER(func,atom_name) \ -static Atom func (void) { \ - static int generation; \ - static Atom atom; \ - if (generation != serverGeneration) { \ - generation = serverGeneration; \ - atom = MakeAtom (atom_name, strlen (atom_name), TRUE); \ - } \ - return atom; \ -} +#define DEFINE_ATOM_HELPER(func, atom_name) \ + static Atom func(void) { \ + static int generation; \ + static Atom atom; \ + if (generation != serverGeneration) { \ + generation = serverGeneration; \ + atom = MakeAtom(atom_name, strlen(atom_name), TRUE); \ + } \ + return atom; \ + } DEFINE_ATOM_HELPER(xa_native_window_id, "_NATIVE_WINDOW_ID") /* Maps xp_window_id -> RootlessWindowRec */ -static x_hash_table *window_hash; +static x_hash_table * window_hash; /* Need to guard window_hash since xprIsX11Window can be called from any thread. */ #ifdef HAVE_LIBDISPATCH @@ -74,15 +74,16 @@ static pthread_rwlock_t window_hash_rwlock; /* Prototypes for static functions */ static Bool -xprCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen, - int newX, int newY, RegionPtr pShape); +xprCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen, int newX, + int newY, + RegionPtr pShape); static void xprDestroyFrame(RootlessFrameID wid); static void xprMoveFrame(RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY); static void -xprResizeFrame(RootlessFrameID wid, ScreenPtr pScreen, - int newX, int newY, unsigned int newW, unsigned int newH, +xprResizeFrame(RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY, + unsigned int newW, unsigned int newH, unsigned int gravity); static void xprRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid); @@ -97,8 +98,9 @@ xprStopDrawing(RootlessFrameID wid, Bool flush); static void xprUpdateRegion(RootlessFrameID wid, RegionPtr pDamage); static void -xprDamageRects(RootlessFrameID wid, int nrects, const BoxRec * rects, - int shift_x, int shift_y); +xprDamageRects(RootlessFrameID wid, int nrects, const BoxRec *rects, + int shift_x, + int shift_y); static void xprSwitchWindow(RootlessWindowPtr pFrame, WindowPtr oldWin); static Bool @@ -108,12 +110,13 @@ xprHideWindow(RootlessFrameID wid); static void xprUpdateColormap(RootlessFrameID wid, ScreenPtr pScreen); static void -xprCopyWindow(RootlessFrameID wid, int dstNrects, const BoxRec * dstRects, - int dx, int dy); +xprCopyWindow(RootlessFrameID wid, int dstNrects, const BoxRec *dstRects, + int dx, + int dy); static inline xp_error xprConfigureWindow(xp_window_id id, unsigned int mask, - const xp_window_changes * values) + const xp_window_changes *values) { return xp_configure_window(id, mask, values); } @@ -131,17 +134,18 @@ xprSetNativeProperty(RootlessWindowPtr pFrame) data = native_id; dixChangeWindowProperty(serverClient, pFrame->win, - xa_native_window_id(), XA_INTEGER, 32, - PropModeReplace, 1, &data, TRUE); + xa_native_window_id(), + XA_INTEGER, 32, PropModeReplace, 1, &data, + TRUE); } } static xp_error xprColormapCallback(void *data, int first_color, int n_colors, - uint32_t * colors) + uint32_t *colors) { - return (RootlessResolveColormap(data, first_color, n_colors, colors) ? - XP_Success : XP_BadMatch); + return (RootlessResolveColormap(data, first_color, n_colors, + colors) ? XP_Success : XP_BadMatch); } /* @@ -195,7 +199,7 @@ xprCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen, wc.window_level = rooted_window_levels[pFrame->level]; mask |= XP_WINDOW_LEVEL; - err = xp_create_window(mask, &wc, (xp_window_id *) & pFrame->wid); + err = xp_create_window(mask, &wc, (xp_window_id *)&pFrame->wid); if (err != Success) { return FALSE; @@ -203,8 +207,8 @@ xprCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen, #ifdef HAVE_LIBDISPATCH dispatch_async(window_hash_serial_q, ^ { - x_hash_table_insert(window_hash, pFrame->wid, pFrame);} - ); + x_hash_table_insert(window_hash, pFrame->wid, pFrame); + }); #else pthread_rwlock_wrlock(&window_hash_rwlock); x_hash_table_insert(window_hash, pFrame->wid, pFrame); @@ -226,7 +230,8 @@ xprDestroyFrame(RootlessFrameID wid) #ifdef HAVE_LIBDISPATCH dispatch_async(window_hash_serial_q, ^ { - x_hash_table_remove(window_hash, wid);}); + x_hash_table_remove(window_hash, wid); + }); #else pthread_rwlock_wrlock(&window_hash_rwlock); x_hash_table_remove(window_hash, wid); @@ -236,7 +241,8 @@ xprDestroyFrame(RootlessFrameID wid) err = xp_destroy_window(x_cvt_vptr_to_uint(wid)); if (err != Success) FatalError("Could not destroy window %d (%d).", - (int) x_cvt_vptr_to_uint(wid), (int) err); + (int)x_cvt_vptr_to_uint( + wid), (int)err); } /* @@ -283,11 +289,10 @@ xprRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid) { xp_window_changes wc; unsigned int mask = XP_STACKING; - #ifdef HAVE_LIBDISPATCH __block #endif - RootlessWindowRec * winRec; + RootlessWindowRec * winRec; /* Stack frame below nextWid it if it exists, or raise frame above everything otherwise. */ @@ -303,8 +308,8 @@ xprRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid) #ifdef HAVE_LIBDISPATCH dispatch_sync(window_hash_serial_q, ^ { - winRec = x_hash_table_lookup(window_hash, wid, NULL);} - ); + winRec = x_hash_table_lookup(window_hash, wid, NULL); + }); #else pthread_rwlock_rdlock(&window_hash_rwlock); winRec = x_hash_table_lookup(window_hash, wid, NULL); @@ -371,12 +376,12 @@ xprStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow) unsigned int rowbytes[2]; xp_error err; - err = - xp_lock_window(x_cvt_vptr_to_uint(wid), NULL, NULL, data, rowbytes, - NULL); + err = xp_lock_window(x_cvt_vptr_to_uint( + wid), NULL, NULL, data, rowbytes, NULL); if (err != Success) FatalError("Could not lock window %d for drawing (%d).", - (int) x_cvt_vptr_to_uint(wid), (int) err); + (int)x_cvt_vptr_to_uint( + wid), (int)err); *pixelData = data[0]; *bytesPerRow = rowbytes[0]; @@ -396,7 +401,8 @@ xprStopDrawing(RootlessFrameID wid, Bool flush) */ if (err != Success) ErrorF("Could not unlock window %d after drawing (%d).", - (int) x_cvt_vptr_to_uint(wid), (int) err); + (int)x_cvt_vptr_to_uint( + wid), (int)err); } /* @@ -412,7 +418,7 @@ xprUpdateRegion(RootlessFrameID wid, RegionPtr pDamage) * Mark damaged rectangles as requiring redisplay to screen. */ static void -xprDamageRects(RootlessFrameID wid, int nrects, const BoxRec * rects, +xprDamageRects(RootlessFrameID wid, int nrects, const BoxRec *rects, int shift_x, int shift_y) { xp_mark_window(x_cvt_vptr_to_uint(wid), nrects, rects, shift_x, shift_y); @@ -446,7 +452,7 @@ xprDoReorderWindow(RootlessWindowPtr pFrame) * Used to accelerate scrolling. */ static void -xprCopyWindow(RootlessFrameID wid, int dstNrects, const BoxRec * dstRects, +xprCopyWindow(RootlessFrameID wid, int dstNrects, const BoxRec *dstRects, int dx, int dy) { xp_copy_window(x_cvt_vptr_to_uint(wid), x_cvt_vptr_to_uint(wid), @@ -487,8 +493,8 @@ xprInit(ScreenPtr pScreen) assert((window_hash = x_hash_table_new(NULL, NULL, NULL, NULL))); #ifdef HAVE_LIBDISPATCH assert((window_hash_serial_q = - dispatch_queue_create(BUNDLE_ID_PREFIX ".X11.xpr_window_hash", - NULL))); + dispatch_queue_create(BUNDLE_ID_PREFIX ".X11.xpr_window_hash", + NULL))); #else assert(0 == pthread_rwlock_init(&window_hash_rwlock, NULL)); #endif @@ -505,14 +511,13 @@ xprGetXWindow(xp_window_id wid) { #ifdef HAVE_LIBDISPATCH RootlessWindowRec *winRec __block; - dispatch_sync(window_hash_serial_q, ^ { - winRec = - x_hash_table_lookup(window_hash, x_cvt_uint_to_vptr(wid), - NULL);}); + winRec = + x_hash_table_lookup(window_hash, + x_cvt_uint_to_vptr(wid), NULL); + }); #else RootlessWindowRec *winRec; - pthread_rwlock_rdlock(&window_hash_rwlock); winRec = x_hash_table_lookup(window_hash, x_cvt_uint_to_vptr(wid), NULL); pthread_rwlock_unlock(&window_hash_rwlock); @@ -553,7 +558,6 @@ xprHideWindows(Bool hide) for (screen = 0; screen < screenInfo.numScreens; screen++) { RootlessFrameID prevWid = NULL; - pRoot = screenInfo.screens[screen]->root; for (pWin = pRoot->firstChild; pWin; pWin = pWin->nextSib) { @@ -583,13 +587,13 @@ xprHideWindows(Bool hide) } // XXX: identical to x_cvt_vptr_to_uint ? -#define MAKE_WINDOW_ID(x) ((xp_window_id)((size_t)(x))) +#define MAKE_WINDOW_ID(x) ((xp_window_id)((size_t)(x))) Bool no_configure_window; static inline int configure_window(xp_window_id id, unsigned int mask, - const xp_window_changes * values) + const xp_window_changes *values) { if (!no_configure_window) return xp_configure_window(id, mask, values); @@ -598,12 +602,11 @@ configure_window(xp_window_id id, unsigned int mask, } static - void +void xprUpdateColormap(RootlessFrameID wid, ScreenPtr pScreen) { /* This is how we tell xp that the colormap may have changed. */ xp_window_changes wc; - wc.colormap = xprColormapCallback; wc.colormap_data = pScreen; @@ -611,11 +614,10 @@ xprUpdateColormap(RootlessFrameID wid, ScreenPtr pScreen) } static - void +void xprHideWindow(RootlessFrameID wid) { xp_window_changes wc; - wc.stack_mode = XP_UNMAPPED; wc.sibling = 0; configure_window(MAKE_WINDOW_ID(wid), XP_STACKING, &wc); diff --git a/xorg-server/hw/xquartz/xpr/xprScreen.c b/xorg-server/hw/xquartz/xpr/xprScreen.c index 185369e6b..efe2aa882 100644 --- a/xorg-server/hw/xquartz/xpr/xprScreen.c +++ b/xorg-server/hw/xquartz/xpr/xprScreen.c @@ -1,7 +1,7 @@ /* * Xplugin rootless implementation screen functions * - * Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved. + * Copyright (c) 2002-2012 Apple Computer, Inc. All Rights Reserved. * Copyright (c) 2004 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -55,7 +55,7 @@ #endif /* 10.4's deferred update makes X slower.. have to live with the tearing - for now.. */ + * for now.. */ #define XP_NO_DEFERRED_UPDATES 8 // Name of GLX bundle for native OpenGL @@ -81,9 +81,10 @@ eventHandler(unsigned int type, const void *arg, const xp_window_state_event *ws_arg = arg; DEBUG_LOG("XP_EVENT_WINDOW_STATE_CHANGED: id=%d, state=%d\n", - ws_arg->id, ws_arg->state); - DarwinSendDDXEvent(kXquartzWindowState, 2, ws_arg->id, - ws_arg->state); + ws_arg->id, + ws_arg->state); + DarwinSendDDXEvent(kXquartzWindowState, 2, + ws_arg->id, ws_arg->state); } else { DEBUG_LOG("XP_EVENT_WINDOW_STATE_CHANGED: ignored\n"); @@ -93,14 +94,14 @@ eventHandler(unsigned int type, const void *arg, case XP_EVENT_WINDOW_MOVED: DEBUG_LOG("XP_EVENT_WINDOW_MOVED\n"); if (arg_size == sizeof(xp_window_id)) { - xp_window_id id = *(xp_window_id *) arg; - + xp_window_id id = *(xp_window_id *)arg; DarwinSendDDXEvent(kXquartzWindowMoved, 1, id); } break; case XP_EVENT_SURFACE_DESTROYED: DEBUG_LOG("XP_EVENT_SURFACE_DESTROYED\n"); + case XP_EVENT_SURFACE_CHANGED: DEBUG_LOG("XP_EVENT_SURFACE_CHANGED\n"); if (arg_size == sizeof(xp_surface_id)) { @@ -111,18 +112,19 @@ eventHandler(unsigned int type, const void *arg, else kind = AppleDRISurfaceNotifyChanged; - DRISurfaceNotify(*(xp_surface_id *) arg, kind); + DRISurfaceNotify(*(xp_surface_id *)arg, kind); } break; + #ifdef XP_EVENT_SPACE_CHANGED - case XP_EVENT_SPACE_CHANGED: + case XP_EVENT_SPACE_CHANGED: DEBUG_LOG("XP_EVENT_SPACE_CHANGED\n"); if (arg_size == sizeof(uint32_t)) { - uint32_t space_id = *(uint32_t *) arg; - + uint32_t space_id = *(uint32_t *)arg; DarwinSendDDXEvent(kXquartzSpaceChanged, 1, space_id); } break; + #endif default: ErrorF("Unknown XP_EVENT type (%d) in xprScreen:eventHandler\n", type); @@ -159,18 +161,19 @@ displayScreenBounds(CGDirectDisplayID id) frame = CGDisplayBounds(id); DEBUG_LOG(" %dx%d @ (%d,%d).\n", - (int) frame.size.width, (int) frame.size.height, - (int) frame.origin.x, (int) frame.origin.y); + (int)frame.size.width, (int)frame.size.height, + (int)frame.origin.x, (int)frame.origin.y); /* Remove menubar to help standard X11 window managers. */ - if (XQuartzIsRootless && frame.origin.x == 0 && frame.origin.y == 0) { + if (XQuartzIsRootless && + frame.origin.x == 0 && frame.origin.y == 0) { frame.origin.y += aquaMenuBarHeight; frame.size.height -= aquaMenuBarHeight; } DEBUG_LOG(" %dx%d @ (%d,%d).\n", - (int) frame.size.width, (int) frame.size.height, - (int) frame.origin.x, (int) frame.origin.y); + (int)frame.size.width, (int)frame.size.height, + (int)frame.origin.x, (int)frame.origin.y); return frame; } @@ -190,11 +193,11 @@ xprAddPseudoramiXScreens(int *x, int *y, int *width, int *height, // Find all the CoreGraphics displays CGGetActiveDisplayList(0, NULL, &displayCount); - DEBUG_LOG("displayCount: %d\n", (int) displayCount); + DEBUG_LOG("displayCount: %d\n", (int)displayCount); if (!displayCount) { - ErrorF - ("CoreGraphics has reported no connected displays. Creating a stub 800x600 display.\n"); + ErrorF( + "CoreGraphics has reported no connected displays. Creating a stub 800x600 display.\n"); *x = *y = 0; *width = 800; *height = 600; @@ -219,7 +222,6 @@ xprAddPseudoramiXScreens(int *x, int *y, int *width, int *height, /* Get the union of all screens */ for (i = 0; i < displayCount; i++) { CGDirectDisplayID dpy = displayList[i]; - frame = displayScreenBounds(dpy); unionRect = CGRectUnion(unionRect, frame); } @@ -242,7 +244,7 @@ xprAddPseudoramiXScreens(int *x, int *y, int *width, int *height, frame.origin.y -= unionRect.origin.y; DEBUG_LOG(" placed at X11 coordinate (%d,%d).\n", - (int) frame.origin.x, (int) frame.origin.y); + (int)frame.origin.x, (int)frame.origin.y); PseudoramiXAddScreen(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); @@ -276,12 +278,14 @@ xprDisplayInit(void) FatalError("Could not initialize the Xplugin library."); xp_select_events(XP_EVENT_DISPLAY_CHANGED - | XP_EVENT_WINDOW_STATE_CHANGED | XP_EVENT_WINDOW_MOVED + | XP_EVENT_WINDOW_STATE_CHANGED + | XP_EVENT_WINDOW_MOVED #ifdef XP_EVENT_SPACE_CHANGED | XP_EVENT_SPACE_CHANGED #endif | XP_EVENT_SURFACE_CHANGED - | XP_EVENT_SURFACE_DESTROYED, eventHandler, NULL); + | XP_EVENT_SURFACE_DESTROYED, + eventHandler, NULL); AppleDRIExtensionInit(); xprAppleWMInit(); @@ -305,9 +309,8 @@ xprAddScreen(int index, ScreenPtr pScreen) if (depth == -1) { #if MAC_OS_X_VERSION_MIN_REQUIRED < 1060 - depth = - CGDisplaySamplesPerPixel(kCGDirectMainDisplay) * - CGDisplayBitsPerSample(kCGDirectMainDisplay); + depth = CGDisplaySamplesPerPixel(kCGDirectMainDisplay) * + CGDisplayBitsPerSample(kCGDirectMainDisplay); #else CGDisplayModeRef modeRef; CFStringRef encStrRef; @@ -321,19 +324,19 @@ xprAddScreen(int index, ScreenPtr pScreen) if (!encStrRef) goto have_depth; - if (CFStringCompare - (encStrRef, CFSTR(IO32BitDirectPixels), - kCFCompareCaseInsensitive) == kCFCompareEqualTo) { + if (CFStringCompare(encStrRef, CFSTR(IO32BitDirectPixels), + kCFCompareCaseInsensitive) == + kCFCompareEqualTo) { depth = 24; } - else if (CFStringCompare - (encStrRef, CFSTR(IO16BitDirectPixels), - kCFCompareCaseInsensitive) == kCFCompareEqualTo) { + else if (CFStringCompare(encStrRef, CFSTR(IO16BitDirectPixels), + kCFCompareCaseInsensitive) == + kCFCompareEqualTo) { depth = 15; } - else if (CFStringCompare - (encStrRef, CFSTR(IO8BitIndexedPixels), - kCFCompareCaseInsensitive) == kCFCompareEqualTo) { + else if (CFStringCompare(encStrRef, CFSTR(IO8BitIndexedPixels), + kCFCompareCaseInsensitive) == + kCFCompareEqualTo) { depth = 8; } @@ -342,10 +345,10 @@ xprAddScreen(int index, ScreenPtr pScreen) } #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 - have_depth: +have_depth: #endif switch (depth) { - case 8: // pseudo-working + case 8: // pseudo-working dfb->visuals = PseudoColorMask; dfb->preferredCVC = PseudoColor; dfb->depth = 8; @@ -355,8 +358,9 @@ xprAddScreen(int index, ScreenPtr pScreen) dfb->greenMask = 0; dfb->blueMask = 0; break; + case 15: - dfb->visuals = TrueColorMask; //LARGE_VISUALS; + dfb->visuals = TrueColorMask; //LARGE_VISUALS; dfb->preferredCVC = TrueColor; dfb->depth = 15; dfb->bitsPerRGB = 5; @@ -365,13 +369,14 @@ xprAddScreen(int index, ScreenPtr pScreen) dfb->greenMask = GM_ARGB(0, 5, 5, 5); dfb->blueMask = BM_ARGB(0, 5, 5, 5); break; -// case 24: + + // case 24: default: if (depth != 24) - ErrorF - ("Unsupported color depth requested. Defaulting to 24bit. (depth=%d darwinDesiredDepth=%d)\n", - depth, darwinDesiredDepth); - dfb->visuals = TrueColorMask; //LARGE_VISUALS; + ErrorF( + "Unsupported color depth requested. Defaulting to 24bit. (depth=%d darwinDesiredDepth=%d)\n", + depth, darwinDesiredDepth); + dfb->visuals = TrueColorMask; //LARGE_VISUALS; dfb->preferredCVC = TrueColor; dfb->depth = 24; dfb->bitsPerRGB = 8; diff --git a/xorg-server/hw/xwin/winerror.c b/xorg-server/hw/xwin/winerror.c index 4049e9735..a25307cb6 100644 --- a/xorg-server/hw/xwin/winerror.c +++ b/xorg-server/hw/xwin/winerror.c @@ -70,7 +70,7 @@ OsVendorVErrorF(const char *pszFormat, va_list va_args) * Attempt to do last-ditch, safe, important cleanup here. */ void -OsVendorFatalError(void) +OsVendorFatalError(const char *f, va_list args) { /* Don't give duplicate warning if UseMsg was called */ if (g_fSilentFatalError) diff --git a/xorg-server/include/os.h b/xorg-server/include/os.h index dd06a8578..166c60cd8 100644 --- a/xorg-server/include/os.h +++ b/xorg-server/include/os.h @@ -321,7 +321,7 @@ extern _X_EXPORT void OsCleanup(Bool); extern _X_EXPORT void -OsVendorFatalError(void); +OsVendorFatalError(const char *f, va_list args); extern _X_EXPORT void OsVendorInit(void); diff --git a/xorg-server/os/log.c b/xorg-server/os/log.c index 1b1b28519..9a719696c 100644 --- a/xorg-server/os/log.c +++ b/xorg-server/os/log.c @@ -593,6 +593,7 @@ void FatalError(const char *f, ...) { va_list args; + va_list args2; static Bool beenhere = FALSE; if (beenhere) @@ -600,22 +601,25 @@ FatalError(const char *f, ...) else ErrorF("\nFatal server error:\n"); - va_start(args, f); + /* Make a copy for OsVendorFatalError */ + va_copy(args2, args); + #ifdef __APPLE__ { - va_list args2; + va_list apple_args; - va_copy(args2, args); - (void) vsnprintf(__crashreporter_info_buff__, - sizeof(__crashreporter_info_buff__), f, args2); - va_end(args2); + va_copy(apple_args, args); + (void)vsnprintf(__crashreporter_info_buff__, + sizeof(__crashreporter_info_buff__), f, apple_args); + va_end(apple_args); } #endif VErrorF(f, args); va_end(args); ErrorF("\n"); if (!beenhere) - OsVendorFatalError(); + OsVendorFatalError(f, args2); + va_end(args2); if (!beenhere) { beenhere = TRUE; AbortServer(); diff --git a/xorg-server/test/Makefile.am b/xorg-server/test/Makefile.am index b875b75f7..eb6147021 100644 --- a/xorg-server/test/Makefile.am +++ b/xorg-server/test/Makefile.am @@ -52,6 +52,9 @@ libxservertest_la_LIBADD += \ $(top_builddir)/hw/xfree86/i2c/libi2c.la \ $(top_builddir)/hw/xfree86/dixmods/libxorgxkb.la \ @XORG_LIBS@ + +EXTRA_DIST = ddxstubs.c + else nodist_libxservertest_la_SOURCES = \ ddxstubs.c \ diff --git a/xorg-server/test/ddxstubs.c b/xorg-server/test/ddxstubs.c index a214b9637..3647dc556 100644 --- a/xorg-server/test/ddxstubs.c +++ b/xorg-server/test/ddxstubs.c @@ -50,7 +50,7 @@ OsVendorInit(void) } void -OsVendorFatalError(void) +OsVendorFatalError(const char *f, va_list args) { } |