2 * Copyright © 2000, Compaq Computer Corporation,
3 * Copyright © 2002, Hewlett Packard, Inc.
5 * Permission to use, copy, modify, distribute, and sell this software and its
6 * documentation for any purpose is hereby granted without fee, provided that
7 * the above copyright notice appear in all copies and that both that
8 * copyright notice and this permission notice appear in supporting
9 * documentation, and that the name of Compaq or HP not be used in advertising
10 * or publicity pertaining to distribution of the software without specific,
11 * written prior permission. HP makes no representations about the
12 * suitability of this software for any purpose. It is provided "as is"
13 * without express or implied warranty.
15 * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
17 * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
19 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
28 #include <X11/Xlibint.h>
29 #include <X11/Xutil.h>
30 #include <X11/extensions/Xext.h>
31 #include <X11/extensions/extutil.h>
33 #include <X11/extensions/randr.h>
34 #include <X11/extensions/randrproto.h>
36 extern char XRRExtensionName[];
38 #define RRCheckExtension(dpy,i,val) \
39 XextCheckExtension (dpy, i, XRRExtensionName, val)
40 #define RRSimpleCheckExtension(dpy,i) \
41 XextSimpleCheckExtension (dpy, i, XRRExtensionName)
43 XExtDisplayInfo *XRRFindDisplay (Display *dpy);
45 #ifndef HAVE__XEATDATAWORDS
46 #include <X11/Xmd.h> /* for LONG64 on 64-bit platforms */
49 static inline void _XEatDataWords(Display *dpy, unsigned long n)
52 if (n >= (ULONG_MAX >> 2))
55 _XEatData (dpy, n << 2);
59 /* deliberately opaque internal data structure; can be extended,
61 struct _XRRScreenConfiguration {
62 Screen *screen; /* the root window in GetScreenInfo */
65 Rotation current_rotation;
70 Time config_timestamp;
71 int subpixel_order; /* introduced in randr v0.1 */
72 short *rates; /* introduced in randr v1.1 */
77 * if a configure notify on the root is recieved, or
78 * an XRRScreenChangeNotify is recieved,
79 * XRRUpdateConfiguration should be called to update the X library's
80 * view of the screen configuration; it will also invalidate the cache
81 * provided by XRRScreenConfig and XRRConfig, and force a round trip
82 * when next used. Returns invalid status if not an event type
83 * the library routine understand.
86 /* we cache one screen configuration/screen */
88 typedef struct _XRandRInfo {
89 XRRScreenConfiguration **config;
90 int major_version, minor_version; /* major_version = -1 means we don't know */
91 Bool has_rates; /* Server supports refresh rates */
94 typedef struct _randrVersionState {
95 unsigned long version_seq;
102 _XRRVersionHandler (Display *dpy,
109 _XRRHasRates (int major, int minor);
111 #endif /* _XRANDRINT_H_ */