mirror of
https://gitlab.freedesktop.org/xorg/proto/xorgproto.git
synced 2026-05-08 20:38:08 +02:00
Merge branch 'multi-monitor'
This brings in the changes for RandR 1.2 protocol.
This commit is contained in:
commit
c27ece2592
9 changed files with 2331 additions and 599 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
|||
*~
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
|
|
|
|||
49
COPYING
49
COPYING
|
|
@ -1,40 +1,21 @@
|
|||
Copyright © 2000, Compaq Computer Corporation,
|
||||
Copyright © 2002, Hewlett Packard, Inc.
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this software and its
|
||||
documentation for any purpose is hereby granted without fee, provided that
|
||||
the above copyright notice appear in all copies and that both that
|
||||
copyright notice and this permission notice appear in supporting
|
||||
documentation, and that the name of Compaq or HP not be used in advertising
|
||||
or publicity pertaining to distribution of the software without specific,
|
||||
written prior permission. HP makes no representations about the
|
||||
suitability of this software for any purpose. It is provided "as is"
|
||||
without express or implied warranty.
|
||||
|
||||
HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
|
||||
BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
|
||||
Copyright © 2000 Compaq Computer Corporation
|
||||
Copyright © 2002 Hewlett-Packard Company
|
||||
Copyright © 2006 Intel Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this software and its
|
||||
documentation for any purpose is hereby granted without fee, provided that
|
||||
the above copyright notice appear in all copies and that both that
|
||||
copyright notice and this permission notice appear in supporting
|
||||
documentation, and that the name of Compaq or HP not be used in advertising
|
||||
or publicity pertaining to distribution of the software without specific,
|
||||
written prior permission. Compaq and HP makes no representations about the
|
||||
suitability of this software for any purpose. It is provided "as is"
|
||||
without express or implied warranty.
|
||||
the above copyright notice appear in all copies and that both that copyright
|
||||
notice and this permission notice appear in supporting documentation, and
|
||||
that the name of the copyright holders not be used in advertising or
|
||||
publicity pertaining to distribution of the software without specific,
|
||||
written prior permission. The copyright holders make no representations
|
||||
about the suitability of this software for any purpose. It is provided "as
|
||||
is" without express or implied warranty.
|
||||
|
||||
HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
|
||||
BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
||||
OF THIS SOFTWARE.
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
2005-12-14 Kevin E. Martin <kem-at-freedesktop-dot-org>
|
||||
|
||||
* configure.ac:
|
||||
Update package version number for final X11R7 release candidate.
|
||||
|
|
@ -6,4 +6,4 @@ randr_HEADERS = \
|
|||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = randrproto.pc
|
||||
|
||||
EXTRA_DIST = autogen.sh randrproto.pc.in
|
||||
EXTRA_DIST = autogen.sh randrproto.pc.in randrproto.txt
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
AC_PREREQ([2.57])
|
||||
AC_INIT([RandrProto], [1.1.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
|
||||
AC_INIT([RandrProto], [1.2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||
|
||||
XORG_RELEASE_VERSION
|
||||
|
|
|
|||
519
protocol.txt
519
protocol.txt
|
|
@ -1,519 +0,0 @@
|
|||
The X Resize, Rotate and Reflect Extension
|
||||
Version 1.0
|
||||
2002-10-4
|
||||
|
||||
Jim Gettys
|
||||
Jim.Gettys@hp.com
|
||||
|
||||
Keith Packard
|
||||
keithp@xfree86.org
|
||||
|
||||
Cambridge Research Laboratory
|
||||
HP Labs
|
||||
Hewlett Packard Company
|
||||
|
||||
1. Introduction
|
||||
|
||||
The X Resize, Rotate and Reflect Extension, called RandR for short,
|
||||
brings the ability to resize, rotate and reflect the root window of a
|
||||
screen. It is based on the X Resize and Rotate Extension as specified
|
||||
in the Proceedings of the 2001 Usenix Technical Conference [RANDR].
|
||||
|
||||
RandR as implemented and integrated into the XFree86 server differs in
|
||||
one substantial fashion from the design discussed in that paper: that
|
||||
is, RandR 1.0 does not implement the depth switching described in that
|
||||
document, and the support described for that in the protocol in that
|
||||
document and in the XFree86 implementationhas been removed from the
|
||||
protocol described here, as it has been overtaken by events.
|
||||
|
||||
These events include:
|
||||
o Modern toolkits (in this case, GTK+ 2.x) have progressed to the point
|
||||
of implementing migration between screens of arbitrary depths
|
||||
o The continued advance of Moore's law has made limited amounts of VRAM
|
||||
less of an issue, reducing the pressure to implement depth switching
|
||||
on laptops or desktop systems
|
||||
o The continued decline of legacy toolkits whose design would have
|
||||
required depth switching to support migration
|
||||
o The lack of depth switchin implementation experience in the
|
||||
intervening time, due to events beyond our control
|
||||
|
||||
Additionally, the requirement to support depth switching might
|
||||
complicate other re-engineering of the device independent part of the
|
||||
X server that is currently being contemplated.
|
||||
|
||||
Rather than further delaying RandR's widespread deployment for a
|
||||
feature long wanted by the community (resizing of screens,
|
||||
particularly on laptops), or the deployment of a protocol design that
|
||||
might be flawed due to lack of implementation experience, we decided
|
||||
to remove depth switching from the protocol. It may be implementated
|
||||
at a later time if resources and interests permit as a revision to the
|
||||
protocol described here, which will remain a stable base for
|
||||
applications. The protocol described here has been implemented in the
|
||||
main XFree86 server, and more fully in the TinyX implementation in the
|
||||
XFree86 distribution, which fully implements resizing, rotation and
|
||||
reflection.
|
||||
|
||||
2. Acknowlegements
|
||||
|
||||
Our thanks to the contributors to the design found on the xpert mailing list.
|
||||
|
||||
2. Screen change model
|
||||
|
||||
Screens may change dynamically, either under control of this
|
||||
extension, or due to external events. Examples include: monitors being
|
||||
swapped, you pressing a button to switch from internal display to an
|
||||
external monitor on a laptop, or, eventually, the hotplug of a display
|
||||
card entirely on busses such as Cardbus which permit hot-swap (which
|
||||
will require other work in addition to this extension).
|
||||
|
||||
Since the screen configuration is dynamic and asynchronous to the
|
||||
client and may change at any time RandR provides mechanisms to ensure
|
||||
that your clients view is up to date with the configuration
|
||||
possibilities of the moment and enforces applications that wish to
|
||||
control the configuration to prove that their information is up to
|
||||
date before honoring requests to change the screen configuration (by
|
||||
requiring a timestamp on the request).
|
||||
|
||||
Interested applications are notified whenever the screen configuration
|
||||
changes, providing the current size of the screen and subpixel order
|
||||
(see the Render extension [RENDER]), to enabel proper rendering of
|
||||
subpixel decimated client text to continue, along with a time stamp of
|
||||
the configuration change. A client must refresh its knowledge of the
|
||||
screen configuration before attempting to change the configuration
|
||||
after a notification, or the request will fail.
|
||||
|
||||
To avoid multiplicative explosion between orientation, reflection
|
||||
and sizes, the sizes are only those sizes in the normal (0) rotation.
|
||||
|
||||
Rotation and reflection and how they interact can be confusing. In
|
||||
Randr, the coordinate system is rotated in a counter-clockwise
|
||||
direction relative to the normal orientation. Reflection is along the
|
||||
window system coordinate system, not the physical screen X and Y axis,
|
||||
so that rotation and reflection do not interact. The other way to
|
||||
consider reflection is to is specified in the "normal" orientation,
|
||||
before rotation, if you find the other way confusing.
|
||||
|
||||
We expect that most clients and toolkits will be oblivious to changes
|
||||
to the screen stucture, as they generally use the values in the
|
||||
connections Display structure directly. By toolkits updating the
|
||||
values on the fly, we believe pop-up menus and other pop up windows
|
||||
will position themselves correctly in the face of screen configuration
|
||||
changes (the issue is ensuring that pop-ups are visible on the
|
||||
reconfigured screen).
|
||||
|
||||
3. Data Types
|
||||
|
||||
The subpixel order is shared with the Render extension, and is
|
||||
documented there. The only datatype defined is the screen size,
|
||||
defined in the normal (0 degree) orientation.
|
||||
|
||||
|
||||
4. Errors
|
||||
|
||||
There are no new error types defined by this extension.
|
||||
|
||||
5. Protocol Types
|
||||
|
||||
ROTATION {
|
||||
RR_rotate_0
|
||||
RR_rotate_90
|
||||
RR_rotate_180
|
||||
RR_rotate_270
|
||||
RR-Reflect_X
|
||||
RR_Reflect_Y }
|
||||
|
||||
RRSELECTMASK { RRScreenChangeNotifyMask }
|
||||
|
||||
SIZEID { CARD16 }
|
||||
|
||||
SUBPIXELORDER { SubPixelUnknown The subpixel order uses the Render
|
||||
SubPixelHorizontalRGB extensions definitions; they are here
|
||||
SubPixelHorizontalBGR only for convenience.
|
||||
SubPixelVerticalRGB
|
||||
SubPixelVerticalBGR
|
||||
SubPixelNone }
|
||||
|
||||
|
||||
6. Extension Initialization
|
||||
|
||||
The name of this extension is "RANDR".
|
||||
|
||||
RRQueryVersion
|
||||
client-major-version: CARD32
|
||||
client-minor-version: CARD32
|
||||
->
|
||||
major-version: CARD32
|
||||
minor-version: CARD32
|
||||
|
||||
The client sends the highest supported version to the server
|
||||
and the server sends the highest version it supports, but no
|
||||
higher than the requested version. Major versions changes can
|
||||
introduce incompatibilities in existing functionality, minor
|
||||
version changes introduce only backward compatible changes.
|
||||
It is the clients responsibility to ensure that the server
|
||||
supports a version which is compatible with its expectations.
|
||||
|
||||
7. Extension Requests
|
||||
|
||||
RRSelectInput
|
||||
window: WINDOW
|
||||
enable: SETofRRSELECTMASK
|
||||
|
||||
Errors: BadWindow, BadValue
|
||||
|
||||
If enable is RRScreenChangeNotifyMask, RRScreenChangeNotify
|
||||
events will be sent anytime the screen configuration changes,
|
||||
either from this protocol extension, or due to detected
|
||||
external screen configuration changes. RRScreenChangeNotify
|
||||
may also be sent immediately if the screen configuration has
|
||||
changed since the client connected, to avoid race conditions.
|
||||
|
||||
RRSetScreenConfig
|
||||
drawable: DRAWABLE
|
||||
timestamp: TIMESTAMP
|
||||
config-timestamp: TIMESTAMP
|
||||
sizeID: SIZEID
|
||||
rotation: ROTATION
|
||||
rate: CARD16
|
||||
|
||||
->
|
||||
|
||||
new-timestamp: TIMESTAMP
|
||||
config-timestamp: TIMESTAMP
|
||||
root: WINDOW
|
||||
subpixelOrder: SUBPIXELORDER
|
||||
|
||||
Errors: BadValue, BadMatch
|
||||
|
||||
If the timestamp in this request is less than the time when
|
||||
the configuration was last successfully set, the request is
|
||||
ignored and False returned in success. If the
|
||||
config-timestamp in this request is not equal to when the
|
||||
server's screen configurations last changed, the request is
|
||||
ignored and False returned in success. This could occur if
|
||||
the screen changed since you last made a RRGetScreenInfo
|
||||
request, perhaps by a different piece of display hardware
|
||||
being installed. Rather than allowing an incorrect call to be
|
||||
executed based on stale data, the server will ignore the
|
||||
request.
|
||||
|
||||
If rate is zero, the server selects an appropriate rate.
|
||||
|
||||
If the request succeeds, this request sets the screen to the
|
||||
specified size, rate, rotation and reflection. If the requests
|
||||
succeeds, the new-time-stamp is returned containing the time
|
||||
when the screen configuration was changed and config-timestamp
|
||||
is returned to indicate when the possible screen
|
||||
configurations were last changed, and success is set to True.
|
||||
The root window for the screen indicated by the drawable
|
||||
argument is also returned, along with the subpixel order, to
|
||||
allow correct subpixel rendering.
|
||||
|
||||
BadValue errors are generated if the rotation is not an
|
||||
allowed rotation. BadValue errors are generated, if, when the
|
||||
timestamps would allow the operation to succeed, or size-index
|
||||
are not possible (out of range).
|
||||
|
||||
|
||||
RRGetScreenInfo
|
||||
window: WINDOW
|
||||
|
||||
->
|
||||
|
||||
rotations: SETofROTATION
|
||||
root: WINDOW
|
||||
timestamp: TIMESTAMP
|
||||
config-timestamp: TIMESTAMP
|
||||
nSizes: CARD16
|
||||
sizeID: SIZEID
|
||||
rotation: ROTATION
|
||||
rate: CARD16
|
||||
sizes: LISTofSCREENSIZE
|
||||
refresh: LISTofREFRESH
|
||||
|
||||
where:
|
||||
|
||||
SCREENSIZE {
|
||||
widthInPixels, heightInPixels: CARD16
|
||||
widthInMillimeters, heightInMillimeters: CARD16 }
|
||||
|
||||
REFRESH {
|
||||
rates: LISTofCARD16
|
||||
}
|
||||
|
||||
Errors: BadWindow
|
||||
|
||||
This event is delivered to clients selecting for notification
|
||||
with RRSelectInput requests using a RRScreenChangeNotifyMask.
|
||||
|
||||
Size-index indicates which size is active. The returned
|
||||
window is the window requsting notification.
|
||||
|
||||
This call returns the root window of the screen which has changed.
|
||||
|
||||
Rotations contains the set of rotations and reflections
|
||||
supported by the screen of the window requested. The root
|
||||
window of that screen is reported. The number of current sizes
|
||||
supported is returned, along with which size rotation and
|
||||
reflection the screen is currently set to.
|
||||
|
||||
The config-timestamp indicates when the screen configuration
|
||||
information last changed: requests to set the screen will fail
|
||||
unless the timestamp indicates that the information the client
|
||||
is using is up to date, to ensure clients can be well behaved
|
||||
in the face of race conditions. Similarly, timestamp indicates
|
||||
when the configuration was last set, and must both must be up
|
||||
to date in a call to RRSetScreenConfig for it to succeed.
|
||||
|
||||
Rate is the current refresh rate. This is zero when the refresh
|
||||
rate is unknown or on devices for which refresh is not relevant.
|
||||
|
||||
Sizes is the list of possible frame buffer sizes (at the
|
||||
normal orientation, each provide both the linear physical size
|
||||
of the screen and the pixel size.
|
||||
|
||||
Refresh is the list of refresh rates for each size, each element
|
||||
of sizes has a cooresponding element in refresh. An empty list
|
||||
indicates no known rates, or a device for which refresh is not
|
||||
relevant.
|
||||
|
||||
The default size of the screen (the size that would become the
|
||||
current size when the server resets) is the first size in the
|
||||
list. The potential screen sizes themselves are also
|
||||
returned.
|
||||
|
||||
Toolkits SHOULD use RRScreenChangeSelectInput to be notified
|
||||
via a RRScreenChangeNotify event, so that they can adapt to
|
||||
screen size changes.
|
||||
|
||||
|
||||
8. Extension Events
|
||||
|
||||
Clients MAY select for ConfigureNotify on the root window to be
|
||||
informed of screen changes. This may be advantageous if all your
|
||||
clients need to know is the size of the root window, as it avoids
|
||||
round trips to set up the extension.
|
||||
|
||||
RRScreenChangeNotify is sent if RRSelectInput has requested it
|
||||
whenever properties of the screen change, which may be due to external
|
||||
factors, such as recabling a monitor, etc.
|
||||
|
||||
RRScreenChangeNotify
|
||||
|
||||
rotation: ROTATION; new rotation
|
||||
sequenceNumber: CARD16 low 16 bits of request's seq. number
|
||||
timestamp: TIMESTAMP time screen was changed
|
||||
configTimestamp: TIMESTAMP time config data was changed
|
||||
root: WINDOW root window of screen
|
||||
window: WINDOW window requesting notification
|
||||
sizeID: SIZEID new ID of size
|
||||
subpixelOrder: SUBPIXELORDER order of subpixels
|
||||
widthInPixels: INT16
|
||||
heightInPixels: INT16
|
||||
widthInMillimeters: INT16
|
||||
heightInMillimeters: INT16
|
||||
|
||||
This event is generated whenever the screen configuration is
|
||||
changed and sent to requesting clients. The timestamp included
|
||||
indicates when the screen configuration was changed, and
|
||||
configTimestamp says when the last time the configuration was
|
||||
changed. The root is the root of the screen the change
|
||||
occurred on, and the event window is also returned. SizeID
|
||||
contains an index indicating which size is current.
|
||||
|
||||
This event is sent whenever the screen's configuration changes
|
||||
or if a new screen configuration becomes available that was
|
||||
not available in the past. In this case (config-timestamp in
|
||||
the event not being equal to the config-timestamp returned in
|
||||
the last call to RRGetScreenInfo), the client MUST call
|
||||
RRGetScreenInfo to update its view of possible screen
|
||||
configurations to have a correct view of possible screen
|
||||
organizations. Timestamp is set to when the active screen
|
||||
configuration was changed.
|
||||
|
||||
Clients which select screen change notification events may be
|
||||
sent an event immediately if the screen configuration was
|
||||
changed between when they connected to the X server and
|
||||
selected for notification. This is to prevent a common race
|
||||
that might occur on log-in, where many applications start up
|
||||
just at the time when a display manager or log in script might
|
||||
be changing the screen size or configuration.
|
||||
|
||||
|
||||
9. Extension Versioning
|
||||
|
||||
The RandR extension was developed in parallel with the implementation
|
||||
to ensure the feasibility of various portions of the design. As
|
||||
portions of the extension are implemented, the version number of the
|
||||
extension has changed to reflect the portions of the standard provied.
|
||||
This document describes the version 1.0 of the specification, the
|
||||
partial implementations have version numbers less than that. Here's a
|
||||
list of what each version before 1.0 implemented:
|
||||
|
||||
0.0: This prototype implemented resize and rotation in the
|
||||
TinyX server Used approximately the protocol described in
|
||||
the Usenix paper. Appeared in the TinyX server in
|
||||
XFree86 4.2, but not in the XFree86 main server.
|
||||
|
||||
0.1: Added subpixel order, added an event for subpixel order.
|
||||
This version was never checked in to XFree86 CVS.
|
||||
|
||||
1.0: Implements resize, rotation, and reflection. Implemented
|
||||
both in the XFree86 main server (size change only at this
|
||||
date), and fully (size change, rotation, and reflection)
|
||||
in XFree86's TinyX server.
|
||||
|
||||
1.1: Added refresh rates
|
||||
|
||||
Compatibility between 0.0 and 1.0 was *NOT* preserved, and 0.0 clients
|
||||
will fail against 1.0 servers. The wire encoding op-codes were
|
||||
changed for GetScreenInfo to ensure this failure in a relatively
|
||||
graceful way. Version 1.1 servers and clients are cross compatible with
|
||||
1.0. Version 1.1 is considered to be stable and we intend upward
|
||||
compatibility from this point.
|
||||
|
||||
|
||||
Appendix A. Protocol Encoding
|
||||
|
||||
Syntactic Conventions
|
||||
|
||||
This document uses the same syntactic conventions as the core X
|
||||
protocol encoding document.
|
||||
|
||||
|
||||
A.1 Common Types
|
||||
|
||||
SETofROTATION
|
||||
|
||||
0x0001 RR_Rotate_0
|
||||
0x0002 RR_Rotate_90
|
||||
0x0004 RR_Rotate_180
|
||||
0x0008 RR_Rotate_270
|
||||
0x0010 RR_Reflect_X
|
||||
0x0020 RR_Reflect_Y
|
||||
|
||||
|
||||
SETofRRSELECTMASK
|
||||
|
||||
0x0001 RRScreenChangeNotifyMask
|
||||
|
||||
|
||||
A.2 Protocol Requests
|
||||
|
||||
|
||||
Opcodes 0x1 and 0x3 were used in the 0.0 protocols, and will return
|
||||
errors if used in version 1.0.
|
||||
|
||||
RRQueryVersion
|
||||
|
||||
1 CARD8 major opcode
|
||||
1 0x01 RandR opcode
|
||||
2 3 length
|
||||
4 CARD32 major version
|
||||
4 CARD32 minor version
|
||||
->
|
||||
1 1 Reply
|
||||
1 unused
|
||||
2 CARD16 sequence number
|
||||
4 0 reply length
|
||||
1 CARD32 major version
|
||||
1 CARD32 minor version
|
||||
|
||||
RRSetScreenConfig
|
||||
|
||||
1 CARD8 major opcode
|
||||
1 0x02 RandR opcode
|
||||
2 5 length
|
||||
4 DRAWABLE drawable on screen to be configured
|
||||
4 TIMESTAMP timestamp
|
||||
2 SIZEID size id
|
||||
2 ROTATION rotation/reflection
|
||||
2 CARD16 refresh rate (1.1 only)
|
||||
2 CARD16 pad
|
||||
->
|
||||
1 1 Reply
|
||||
1 CARD8 status
|
||||
0x0 RRSetConfigSuccess
|
||||
0x1 RRSetConfigInvalidConfigTime
|
||||
0x2 RRSetConfigInvalidTime
|
||||
0x3 RRSetConfigFailed
|
||||
2 CARD16 sequence number
|
||||
4 0 reply length
|
||||
4 TIMESTAMP new timestamp
|
||||
4 TIMESTAMP new configuration timestamp
|
||||
4 WINDOW root
|
||||
2 SUBPIXELORDER subpixel order defined in Render
|
||||
2 CARD16 pad4
|
||||
4 CARD32 pad5
|
||||
4 CARD32 pad6
|
||||
|
||||
|
||||
RRSelectInput
|
||||
|
||||
1 CARD8 major opcode
|
||||
1 0x04 RandR opcode
|
||||
2 3 length
|
||||
4 WINDOW window
|
||||
2 SETofRRSELECTMASK enable
|
||||
2 CARD16 pad
|
||||
|
||||
|
||||
RRGetScreenInfo
|
||||
|
||||
1 CARD8 major opcode
|
||||
1 0x05 RandR opcode
|
||||
2 2 length
|
||||
4 WINDOW window
|
||||
->
|
||||
1 1 Reply
|
||||
1 CARD8 set of Rotations
|
||||
2 CARD16 sequence number
|
||||
4 0 reply length
|
||||
4 WINDOW root window
|
||||
4 TIMESTAMP timestamp
|
||||
4 TIMESTAMP config timestamp
|
||||
2 CARD16 number of SIZE following
|
||||
2 SIZEID sizeID
|
||||
2 ROTATION current rotation and reflection
|
||||
2 CARD16 rate (1.1)
|
||||
2 CARD16 length of rate info (number of CARD16s)
|
||||
2 CARD16 pad
|
||||
|
||||
SIZE
|
||||
2 CARD16 width in pixels
|
||||
2 CARD16 height in pixels
|
||||
2 CARD16 width in millimeters
|
||||
2 CARD16 height in millimeters
|
||||
|
||||
REFRESH
|
||||
2 CARD16 number of rates (n)
|
||||
2n CARD16 rates
|
||||
|
||||
A.2 Protocol Event
|
||||
|
||||
RRScreenChangeNotify
|
||||
|
||||
1 Base + 0 code
|
||||
1 ROTATION new rotation and reflection
|
||||
2 CARD16 sequence number
|
||||
4 TIMESTAMP timestamp
|
||||
4 TIMESTAMP configuration timestamp
|
||||
4 WINDOW root window
|
||||
4 WINDOW request window
|
||||
2 SIZEID size ID
|
||||
2 SUBPIXELORDER subpixel order defined in Render
|
||||
2 CARD16 width in pixels
|
||||
2 CARD16 height in pixels
|
||||
2 CARD16 width in millimeters
|
||||
2 CARD16 height in millimeters
|
||||
|
||||
|
||||
Bibliography
|
||||
|
||||
[RANDR] Gettys, Jim and Keith Packard, "The X Resize and Rotate
|
||||
Extension - RandR", Proceedings of the 2001 USENIX Annual
|
||||
Technical Conference, Boston, MA
|
||||
|
||||
[RENDER]
|
||||
Packard, Keith, "The X Rendering Extension", work in progress,
|
||||
documents found in xc/specs/Render.
|
||||
109
randr.h
109
randr.h
|
|
@ -1,27 +1,28 @@
|
|||
/*
|
||||
* $XFree86: xc/include/extensions/randr.h,v 1.4 2001/11/24 07:24:58 keithp Exp $
|
||||
*
|
||||
* Copyright © 2000, Compaq Computer Corporation,
|
||||
* Copyright © 2002, Hewlett Packard, Inc.
|
||||
* Copyright © 2000 Compaq Computer Corporation
|
||||
* Copyright © 2002 Hewlett Packard Company
|
||||
* Copyright © 2006 Intel Corporation
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of Compaq or HP not be used in advertising
|
||||
* or publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. HP makes no representations about the
|
||||
* suitability of this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
* the above copyright notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting documentation, and
|
||||
* that the name of the copyright holders not be used in advertising or
|
||||
* publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. The copyright holders make no representations
|
||||
* about the suitability of this software for any purpose. It is provided "as
|
||||
* is" without express or implied warranty.
|
||||
*
|
||||
* HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
|
||||
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
||||
* OF THIS SOFTWARE.
|
||||
*
|
||||
* Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
|
||||
* Keith Packard, Intel Corporation
|
||||
*/
|
||||
|
||||
#ifndef _RANDR_H_
|
||||
|
|
@ -30,13 +31,19 @@
|
|||
typedef unsigned short Rotation;
|
||||
typedef unsigned short SizeID;
|
||||
typedef unsigned short SubpixelOrder;
|
||||
typedef unsigned short Connection;
|
||||
typedef unsigned short XRandrRotation;
|
||||
typedef unsigned short XRandrSizeID;
|
||||
typedef unsigned short XRandrSubpixelOrder;
|
||||
typedef unsigned long XRandrModeFlags;
|
||||
|
||||
#define RANDR_NAME "RANDR"
|
||||
#define RANDR_MAJOR 1
|
||||
#define RANDR_MINOR 1
|
||||
#define RANDR_MINOR 2
|
||||
|
||||
#define RRNumberErrors 0
|
||||
#define RRNumberEvents 1
|
||||
#define RRNumberErrors 3
|
||||
#define RRNumberEvents 2
|
||||
#define RRNumberRequests 25
|
||||
|
||||
#define X_RRQueryVersion 0
|
||||
/* we skip 1 to make old clients fail pretty immediately */
|
||||
|
|
@ -49,11 +56,42 @@ typedef unsigned short SubpixelOrder;
|
|||
#define X_RRSelectInput 4
|
||||
#define X_RRGetScreenInfo 5
|
||||
|
||||
/* used in XRRSelectInput */
|
||||
/* V1.2 additions */
|
||||
#define X_RRGetScreenSizeRange 6
|
||||
#define X_RRSetScreenSize 7
|
||||
#define X_RRGetScreenResources 8
|
||||
#define X_RRGetOutputInfo 9
|
||||
#define X_RRListOutputProperties 10
|
||||
#define X_RRQueryOutputProperty 11
|
||||
#define X_RRConfigureOutputProperty 12
|
||||
#define X_RRChangeOutputProperty 13
|
||||
#define X_RRDeleteOutputProperty 14
|
||||
#define X_RRGetOutputProperty 15
|
||||
#define X_RRCreateMode 16
|
||||
#define X_RRDestroyMode 17
|
||||
#define X_RRAddOutputMode 18
|
||||
#define X_RRDeleteOutputMode 19
|
||||
#define X_RRGetCrtcInfo 20
|
||||
#define X_RRSetCrtcConfig 21
|
||||
#define X_RRGetCrtcGammaSize 22
|
||||
#define X_RRGetCrtcGamma 23
|
||||
#define X_RRSetCrtcGamma 24
|
||||
|
||||
/* Event selection bits */
|
||||
#define RRScreenChangeNotifyMask (1L << 0)
|
||||
/* V1.2 additions */
|
||||
#define RRCrtcChangeNotifyMask (1L << 1)
|
||||
#define RROutputChangeNotifyMask (1L << 2)
|
||||
#define RROutputPropertyNotifyMask (1L << 3)
|
||||
|
||||
/* Event codes */
|
||||
#define RRScreenChangeNotify 0
|
||||
/* V1.2 additions */
|
||||
#define RRNotify 1
|
||||
/* RRNotify Subcodes */
|
||||
#define RRNotify_CrtcChange 0
|
||||
#define RRNotify_OutputChange 1
|
||||
#define RRNotify_OutputProperty 2
|
||||
|
||||
/* used in the rotation field; rotation and reflection in 0.1 proto. */
|
||||
#define RR_Rotate_0 1
|
||||
|
|
@ -71,4 +109,33 @@ typedef unsigned short SubpixelOrder;
|
|||
#define RRSetConfigInvalidTime 2
|
||||
#define RRSetConfigFailed 3
|
||||
|
||||
/* new in 1.2 protocol */
|
||||
|
||||
#define RR_HSyncPositive 0x00000001
|
||||
#define RR_HSyncNegative 0x00000002
|
||||
#define RR_VSyncPositive 0x00000004
|
||||
#define RR_VSyncNegative 0x00000008
|
||||
#define RR_Interlace 0x00000010
|
||||
#define RR_DoubleScan 0x00000020
|
||||
#define RR_CSync 0x00000040
|
||||
#define RR_CSyncPositive 0x00000080
|
||||
#define RR_CSyncNegative 0x00000100
|
||||
#define RR_HSkewPresent 0x00000200
|
||||
#define RR_BCast 0x00000400
|
||||
#define RR_PixelMultiplex 0x00000800
|
||||
#define RR_DoubleClock 0x00001000
|
||||
#define RR_ClockDivideBy2 0x00002000
|
||||
|
||||
#define RR_Connected 0
|
||||
#define RR_Disconnected 1
|
||||
#define RR_UnknownConnection 2
|
||||
|
||||
#define BadRROutput 0
|
||||
#define BadRRCrtc 1
|
||||
#define BadRRMode 2
|
||||
|
||||
/* Conventional RandR output properties */
|
||||
|
||||
#define RR_PROPERTY_RANDR_EDID "RANDR_EDID"
|
||||
|
||||
#endif /* _RANDR_H_ */
|
||||
|
|
|
|||
479
randrproto.h
479
randrproto.h
|
|
@ -1,27 +1,28 @@
|
|||
/*
|
||||
* $XFree86: xc/include/extensions/randrproto.h,v 1.6 2002/09/29 23:39:43 keithp Exp $
|
||||
*
|
||||
* Copyright © 2000 Compaq Computer Corporation
|
||||
* Copyright © 2002 Hewlett-Packard Company
|
||||
* Copyright © 2006 Intel Corporation
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of Compaq or HP not be used in advertising
|
||||
* or publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. Compaq and HP makes no representations about the
|
||||
* suitability of this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
* the above copyright notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting documentation, and
|
||||
* that the name of the copyright holders not be used in advertising or
|
||||
* publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. The copyright holders make no representations
|
||||
* about the suitability of this software for any purpose. It is provided "as
|
||||
* is" without express or implied warranty.
|
||||
*
|
||||
* HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
|
||||
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
||||
* OF THIS SOFTWARE.
|
||||
*
|
||||
* Author: Jim Gettys, Hewlett-Packard Company, Inc.
|
||||
* Keith Packard, Intel Corporation
|
||||
*/
|
||||
|
||||
/* note that RANDR 1.0 is incompatible with version 0.0, or 0.1 */
|
||||
|
|
@ -42,6 +43,10 @@
|
|||
#define Time CARD32
|
||||
#define KeyCode CARD8
|
||||
#define KeySym CARD32
|
||||
#define RROutput CARD32
|
||||
#define RRMode CARD32
|
||||
#define RRCrtc CARD32
|
||||
#define RRModeFlags CARD32
|
||||
|
||||
#define Rotation CARD16
|
||||
#define SizeID CARD16
|
||||
|
|
@ -169,7 +174,388 @@ typedef struct {
|
|||
} xRRSelectInputReq;
|
||||
#define sz_xRRSelectInputReq 12
|
||||
|
||||
#define sz_xRRSelectInputReq 12
|
||||
/*
|
||||
* Additions for version 1.2
|
||||
*/
|
||||
|
||||
typedef struct _xRRModeInfo {
|
||||
RRMode id B32;
|
||||
CARD16 width B16;
|
||||
CARD16 height B16;
|
||||
CARD32 dotClock B32;
|
||||
CARD16 hSyncStart B16;
|
||||
CARD16 hSyncEnd B16;
|
||||
CARD16 hTotal B16;
|
||||
CARD16 hSkew B16;
|
||||
CARD16 vSyncStart B16;
|
||||
CARD16 vSyncEnd B16;
|
||||
CARD16 vTotal B16;
|
||||
CARD16 nameLength B16;
|
||||
RRModeFlags modeFlags B32;
|
||||
} xRRModeInfo;
|
||||
#define sz_xRRModeInfo 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
Window window B32;
|
||||
} xRRGetScreenSizeRangeReq;
|
||||
#define sz_xRRGetScreenSizeRangeReq 8
|
||||
|
||||
typedef struct {
|
||||
BYTE type; /* X_Reply */
|
||||
CARD8 pad;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
CARD16 minWidth B16;
|
||||
CARD16 minHeight B16;
|
||||
CARD16 maxWidth B16;
|
||||
CARD16 maxHeight B16;
|
||||
CARD32 pad0 B32;
|
||||
CARD32 pad1 B32;
|
||||
CARD32 pad2 B32;
|
||||
CARD32 pad3 B32;
|
||||
} xRRGetScreenSizeRangeReply;
|
||||
#define sz_xRRGetScreenSizeRangeReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
Window window B32;
|
||||
CARD16 width B16;
|
||||
CARD16 height B16;
|
||||
CARD32 widthInMillimeters B32;
|
||||
CARD32 heightInMillimeters B32;
|
||||
} xRRSetScreenSizeReq;
|
||||
#define sz_xRRSetScreenSizeReq 20
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
Window window B32;
|
||||
} xRRGetScreenResourcesReq;
|
||||
#define sz_xRRGetScreenResourcesReq 8
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 pad;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
Time timestamp B32;
|
||||
Time configTimestamp B32;
|
||||
CARD16 nCrtcs B16;
|
||||
CARD16 nOutputs B16;
|
||||
CARD16 nModes B16;
|
||||
CARD16 nbytesNames B16;
|
||||
CARD32 pad1 B32;
|
||||
CARD32 pad2 B32;
|
||||
} xRRGetScreenResourcesReply;
|
||||
#define sz_xRRGetScreenResourcesReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RROutput output B32;
|
||||
Time configTimestamp B32;
|
||||
} xRRGetOutputInfoReq;
|
||||
#define sz_xRRGetOutputInfoReq 12
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 status;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
Time timestamp B32;
|
||||
RRCrtc crtc B32;
|
||||
CARD32 mmWidth B32;
|
||||
CARD32 mmHeight B32;
|
||||
CARD8 connection;
|
||||
CARD8 subpixelOrder;
|
||||
CARD16 nCrtcs B16;
|
||||
CARD16 nModes B16;
|
||||
CARD16 nPreferred B16;
|
||||
CARD16 nClones B16;
|
||||
CARD16 nameLength B16;
|
||||
} xRRGetOutputInfoReply;
|
||||
#define sz_xRRGetOutputInfoReply 36
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RROutput output B32;
|
||||
} xRRListOutputPropertiesReq;
|
||||
#define sz_xRRListOutputPropertiesReq 8
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 nProperties;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
CARD16 nAtoms B16;
|
||||
CARD16 pad1 B16;
|
||||
CARD32 pad2 B32;
|
||||
CARD32 pad3 B32;
|
||||
CARD32 pad4 B32;
|
||||
CARD32 pad5 B32;
|
||||
CARD32 pad6 B32;
|
||||
} xRRListOutputPropertiesReply;
|
||||
#define sz_xRRListOutputPropertiesReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RROutput output B32;
|
||||
Atom property B32;
|
||||
} xRRQueryOutputPropertyReq;
|
||||
#define sz_xRRQueryOutputPropertyReq 12
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
BYTE pad0;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
BOOL pending;
|
||||
BOOL range;
|
||||
BOOL immutable;
|
||||
BYTE pad1;
|
||||
CARD16 pad2 B16;
|
||||
CARD32 pad3 B32;
|
||||
CARD32 pad4 B32;
|
||||
CARD32 pad5 B32;
|
||||
CARD32 pad6 B32;
|
||||
} xRRQueryOutputPropertyReply;
|
||||
#define sz_xRRQueryOutputPropertyReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RROutput output B32;
|
||||
Atom property B32;
|
||||
BOOL pending;
|
||||
BOOL range;
|
||||
CARD16 pad B16;
|
||||
} xRRConfigureOutputPropertyReq;
|
||||
#define sz_xRRConfigureOutputPropertyReq 16
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RROutput output B32;
|
||||
Atom property B32;
|
||||
Atom type B32;
|
||||
CARD8 format;
|
||||
CARD8 mode;
|
||||
CARD16 pad;
|
||||
CARD32 nUnits B32;
|
||||
} xRRChangeOutputPropertyReq;
|
||||
#define sz_xRRChangeOutputPropertyReq 24
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RROutput output B32;
|
||||
Atom property B32;
|
||||
} xRRDeleteOutputPropertyReq;
|
||||
#define sz_xRRDeleteOutputPropertyReq 12
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RROutput output B32;
|
||||
Atom property B32;
|
||||
Atom type B32;
|
||||
CARD32 longOffset B32;
|
||||
CARD32 longLength B32;
|
||||
BOOL delete;
|
||||
BOOL pending;
|
||||
CARD16 pad1 B16;
|
||||
} xRRGetOutputPropertyReq;
|
||||
#define sz_xRRGetOutputPropertyReq 28
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 format;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
Atom propertyType B32;
|
||||
CARD32 bytesAfter B32;
|
||||
CARD32 nItems B32;
|
||||
CARD32 pad1 B32;
|
||||
CARD32 pad2 B32;
|
||||
CARD32 pad3 B32;
|
||||
} xRRGetOutputPropertyReply;
|
||||
#define sz_xRRGetOutputPropertyReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
Window window B32;
|
||||
xRRModeInfo modeInfo;
|
||||
} xRRCreateModeReq;
|
||||
#define sz_xRRCreateModeReq 40
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 status;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
RRMode mode B32;
|
||||
CARD32 pad1 B32;
|
||||
CARD32 pad2 B32;
|
||||
CARD32 pad3 B32;
|
||||
CARD32 pad4 B32;
|
||||
CARD32 pad5 B32;
|
||||
} xRRCreateModeReply;
|
||||
#define sz_xRRCreateModeReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RRMode mode B32;
|
||||
} xRRDestroyModeReq;
|
||||
#define sz_xRRDestroyModeReq 8
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RROutput output B32;
|
||||
RRMode mode B32;
|
||||
} xRRAddOutputModeReq;
|
||||
#define sz_xRRAddOutputModeReq 12
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RROutput output B32;
|
||||
RRMode mode B32;
|
||||
} xRRDeleteOutputModeReq;
|
||||
#define sz_xRRDeleteOutputModeReq 12
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RRCrtc crtc B32;
|
||||
Time configTimestamp B32;
|
||||
} xRRGetCrtcInfoReq;
|
||||
#define sz_xRRGetCrtcInfoReq 12
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 status;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
Time timestamp B32;
|
||||
INT16 x B16;
|
||||
INT16 y B16;
|
||||
CARD16 width B16;
|
||||
CARD16 height B16;
|
||||
RRMode mode B32;
|
||||
Rotation rotation B16;
|
||||
Rotation rotations B16;
|
||||
CARD16 nOutput B16;
|
||||
CARD16 nPossibleOutput B16;
|
||||
} xRRGetCrtcInfoReply;
|
||||
#define sz_xRRGetCrtcInfoReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RRCrtc crtc B32;
|
||||
Time timestamp B32;
|
||||
Time configTimestamp B32;
|
||||
INT16 x B16;
|
||||
INT16 y B16;
|
||||
RRMode mode B32;
|
||||
Rotation rotation B16;
|
||||
CARD16 pad B16;
|
||||
} xRRSetCrtcConfigReq;
|
||||
#define sz_xRRSetCrtcConfigReq 28
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 status;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
Time newTimestamp B32;
|
||||
CARD32 pad1 B32;
|
||||
CARD32 pad2 B16;
|
||||
CARD32 pad3 B32;
|
||||
CARD32 pad4 B32;
|
||||
CARD32 pad5 B32;
|
||||
} xRRSetCrtcConfigReply;
|
||||
#define sz_xRRSetCrtcConfigReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RRCrtc crtc B32;
|
||||
} xRRGetCrtcGammaSizeReq;
|
||||
#define sz_xRRGetCrtcGammaSizeReq 8
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 status;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
CARD16 size B16;
|
||||
CARD16 pad1 B16;
|
||||
CARD16 pad2 B32;
|
||||
CARD16 pad3 B32;
|
||||
CARD16 pad4 B32;
|
||||
CARD16 pad5 B32;
|
||||
CARD16 pad6 B32;
|
||||
} xRRGetCrtcGammaSizeReply;
|
||||
#define sz_xRRGetCrtcGammaSizeReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RRCrtc crtc B32;
|
||||
} xRRGetCrtcGammaReq;
|
||||
#define sz_xRRGetCrtcGammaReq 8
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 status;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
CARD16 size B16;
|
||||
CARD16 pad1 B16;
|
||||
CARD16 pad2 B32;
|
||||
CARD16 pad3 B32;
|
||||
CARD16 pad4 B32;
|
||||
CARD16 pad5 B32;
|
||||
CARD16 pad6 B32;
|
||||
} xRRGetCrtcGammaReply;
|
||||
#define sz_xRRGetCrtcGammaReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RRCrtc crtc B32;
|
||||
CARD16 size B16;
|
||||
CARD16 pad1 B16;
|
||||
} xRRSetCrtcGammaReq;
|
||||
#define sz_xRRSetCrtcGammaReq 12
|
||||
|
||||
/*
|
||||
* event
|
||||
|
|
@ -178,8 +564,8 @@ typedef struct {
|
|||
CARD8 type; /* always evBase + ScreenChangeNotify */
|
||||
CARD8 rotation; /* new rotation */
|
||||
CARD16 sequenceNumber B16;
|
||||
Time timestamp B32; /* time screen was changed */
|
||||
Time configTimestamp B32; /* time config data was changed */
|
||||
Time timestamp B32; B32; /* time screen was changed */
|
||||
Time configTimestamp B32; B32; /* time config data was changed */
|
||||
Window root B32; /* root window */
|
||||
Window window B32; /* window requesting notification */
|
||||
SizeID sizeID B16; /* new size ID */
|
||||
|
|
@ -191,8 +577,63 @@ typedef struct {
|
|||
} xRRScreenChangeNotifyEvent;
|
||||
#define sz_xRRScreenChangeNotifyEvent 32
|
||||
|
||||
#undef Window
|
||||
typedef struct {
|
||||
CARD8 type; /* always evBase + RRNotify */
|
||||
CARD8 subCode; /* RRNotify_CrtcChange */
|
||||
CARD16 sequenceNumber B16;
|
||||
Time timestamp B32; /* time crtc was changed */
|
||||
Window window B32; /* window requesting notification */
|
||||
RRCrtc crtc B32; /* affected CRTC */
|
||||
RRMode mode B32; /* current mode */
|
||||
CARD16 rotation B16; /* rotation and reflection */
|
||||
CARD16 pad1 B16; /* unused */
|
||||
INT16 x B16; /* new location */
|
||||
INT16 y B16;
|
||||
CARD16 width B16; /* new size */
|
||||
CARD16 height B16;
|
||||
} xRRCrtcChangeNotifyEvent;
|
||||
#define sz_xRRCrtcChangeNotifyEvent 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 type; /* always evBase + RRNotify */
|
||||
CARD8 subCode; /* RRNotify_OutputChange */
|
||||
CARD16 sequenceNumber B16;
|
||||
Time timestamp B32; /* time crtc was changed */
|
||||
Time configTimestamp B32; /* time crtc was changed */
|
||||
Window window B32; /* window requesting notification */
|
||||
RROutput output B32; /* affected output */
|
||||
RRCrtc crtc B32; /* current crtc */
|
||||
RRMode mode B32; /* current mode */
|
||||
CARD16 rotation B16; /* rotation and reflection */
|
||||
CARD8 connection; /* connection status */
|
||||
CARD8 subpixelOrder; /* subpixel order */
|
||||
} xRROutputChangeNotifyEvent;
|
||||
#define sz_xRROUtputChangeNotifyEvent 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 type; /* always evBase + RRNotify */
|
||||
CARD8 subCode; /* RRNotify_OutputProperty */
|
||||
CARD16 sequenceNumber B16;
|
||||
Window window B32; /* window requesting notification */
|
||||
RROutput output B32; /* affected output */
|
||||
Atom atom B32; /* property name */
|
||||
Time timestamp B32; /* time crtc was changed */
|
||||
CARD8 state; /* NewValue or Deleted */
|
||||
CARD8 pad1;
|
||||
CARD16 pad2 B16;
|
||||
CARD32 pad3 B32;
|
||||
CARD32 pad4 B32;
|
||||
} xRROutputPropertyNotifyEvent;
|
||||
#define sz_xRROUtputPropertyNotifyEvent 32
|
||||
|
||||
#undef RRModeFlags
|
||||
#undef RRCrtc
|
||||
#undef RRMode
|
||||
#undef RROutput
|
||||
#undef RRMode
|
||||
#undef RRCrtc
|
||||
#undef Drawable
|
||||
#undef Window
|
||||
#undef Font
|
||||
#undef Pixmap
|
||||
#undef Cursor
|
||||
|
|
|
|||
1765
randrproto.txt
Normal file
1765
randrproto.txt
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue