Go to file
Jamey Sharp 2d7eb4a19b Pre-validate ChangeGC XIDs.
In order to execute a wire-level ChangeGC request, we need to look up
the resources named by any XIDs in the value-list. Various places in the
server already have pointers to the resources they want to set into the
GC, though, so over time the interface has evolved to accept either XIDs
or pointers, with several different function call signatures used in
different eras.

This patch makes the existing code require pointers to resources rather
than XIDs, and adds a simple wrapper that looks up any XIDs. The old
dixChangeGC API is preserved by delegating to whichever implementation
is appropriate.

This affects error-handling: If any of the XIDs are invalid, then the GC
is unchanged, and its ChangeGC callback is not invoked. This change is
allowed by the protocol spec, which says, "The order in which components
are verified and altered is server-dependent. If an error is generated,
a subset of the components may have been altered."

Signed-off-by: Jamey Sharp <jamey@minilop.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2010-05-13 17:14:07 -07:00
composite dixChangeGC callers: Use ChangeGCVal instead of XID almost everywhere. 2010-05-13 17:13:48 -07:00
config Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
damageext Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
dbe Kill DoChangeGC in favor of dixChangeGC. 2010-05-12 18:09:55 -07:00
dix Pre-validate ChangeGC XIDs. 2010-05-13 17:14:07 -07:00
doc Fix .man.N targets for AM_SILENT_RULES 2010-03-22 00:45:55 -05:00
exa Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
fb dixChangeGC callers: Use ChangeGCVal instead of XID almost everywhere. 2010-05-13 17:13:48 -07:00
glx dixChangeGC callers: Use ChangeGCVal instead of XID almost everywhere. 2010-05-13 17:13:48 -07:00
hw dixChangeGC callers: Use ChangeGCVal instead of XID almost everywhere. 2010-05-13 17:13:48 -07:00
include Use _X_ATTRIBUTE_PRINTF _X_DEPRECATED _X_NORETURN 2010-05-13 10:03:23 -07:00
m4 dolt: add Cygwin to supported platforms 2009-10-13 20:30:22 -07:00
mi dixChangeGC callers: Use ChangeGCVal instead of XID almost everywhere. 2010-05-13 17:13:48 -07:00
miext dixChangeGC callers: Use ChangeGCVal instead of XID almost everywhere. 2010-05-13 17:13:48 -07:00
os Use _X_ATTRIBUTE_PRINTF _X_DEPRECATED _X_NORETURN 2010-05-13 10:03:23 -07:00
randr Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
record Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
render dixChangeGC callers: Use ChangeGCVal instead of XID almost everywhere. 2010-05-13 17:13:48 -07:00
test Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
Xext xselinux: Remove use of devPrivates init/free callbacks. 2010-05-13 10:07:31 -07:00
xfixes dixChangeGC callers: Use ChangeGCVal instead of XID almost everywhere. 2010-05-13 17:13:48 -07:00
Xi Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
xkb Do not jump through the hoops to deallocate xkbbasedirflag variable 2010-05-13 04:54:29 +07:00
.gitignore .gitignore: use common defaults with custom section #24239 2009-11-11 21:40:20 -08:00
autogen.sh autogen.sh: Pass --force to autoreconf 2008-07-22 16:55:26 +03:00
configure.ac dri2: Send out event when auxillary buffers are invalidated 2010-05-13 06:32:04 -07:00
COPYING Update Sun license notices to current X.Org standard form 2009-12-16 17:11:35 -08:00
cpprules.in xfree86: Set a saner search path for xorg.conf.d 2010-04-08 15:21:01 +10:00
Makefile.am Fix relink targets for silent rules 2010-03-22 00:45:52 -05:00
README packaging: provide a default README file #24206 2010-01-27 14:00:17 -08:00
xorg-server.m4 macros: use PKG_CONFIG variable rather than executable name 2010-01-07 12:57:23 -08:00
xorg-server.pc.in xfree86: Search for a system xorg.conf.d 2010-04-08 15:21:01 +10:00

					X Server

The X server accepts requests from client applications to create windows,
which are (normally rectangular) "virtual screens" that the client program
can draw into.

Windows are then composed on the actual screen by the X server
(or by a separate composite manager) as directed by the window manager,
which usually communicates with the user via graphical controls such as buttons
and draggable titlebars and borders.

For a comprehensive overview of X Server and X Window System, consult the
following article:
http://en.wikipedia.org/wiki/X_server

All questions regarding this software should be directed at the
Xorg mailing list:

        http://lists.freedesktop.org/mailman/listinfo/xorg

Please submit bug reports to the Xorg bugzilla:

        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg

The master development code repository can be found at:

        git://anongit.freedesktop.org/git/xorg/xserver

        http://cgit.freedesktop.org/xorg/xserver

For patch submission instructions, see:

	http://www.x.org/wiki/Development/Documentation/SubmittingPatches

For more information on the git code manager, see:

        http://wiki.x.org/wiki/GitPage