Xrandr.h revision 706b6b52
1b042e37fSmrg/*
2b042e37fSmrg * Copyright © 2000 Compaq Computer Corporation, Inc.
3b042e37fSmrg * Copyright © 2002 Hewlett-Packard Company, Inc.
4b042e37fSmrg * Copyright © 2006 Intel Corporation
58c4a8e55Smrg * Copyright © 2008 Red Hat, Inc.
6b042e37fSmrg *
7b042e37fSmrg * Permission to use, copy, modify, distribute, and sell this software and its
8b042e37fSmrg * documentation for any purpose is hereby granted without fee, provided that
9b042e37fSmrg * the above copyright notice appear in all copies and that both that copyright
10b042e37fSmrg * notice and this permission notice appear in supporting documentation, and
11b042e37fSmrg * that the name of the copyright holders not be used in advertising or
12b042e37fSmrg * publicity pertaining to distribution of the software without specific,
13b042e37fSmrg * written prior permission.  The copyright holders make no representations
14b042e37fSmrg * about the suitability of this software for any purpose.  It is provided "as
15b042e37fSmrg * is" without express or implied warranty.
16b042e37fSmrg *
17b042e37fSmrg * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
18b042e37fSmrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
19b042e37fSmrg * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
20b042e37fSmrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21b042e37fSmrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
22b042e37fSmrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
23b042e37fSmrg * OF THIS SOFTWARE.
24b042e37fSmrg *
25b042e37fSmrg * Author:  Jim Gettys, HP Labs, Hewlett-Packard, Inc.
26b042e37fSmrg *	    Keith Packard, Intel Corporation
27b042e37fSmrg */
28b042e37fSmrg
29b042e37fSmrg#ifndef _XRANDR_H_
30b042e37fSmrg#define _XRANDR_H_
31b042e37fSmrg
32b042e37fSmrg#include <X11/extensions/randr.h>
338c4a8e55Smrg#include <X11/extensions/Xrender.h>
34b042e37fSmrg
35b042e37fSmrg#include <X11/Xfuncproto.h>
36b042e37fSmrg
37b042e37fSmrg_XFUNCPROTOBEGIN
38b042e37fSmrg
39b042e37fSmrgtypedef XID RROutput;
40b042e37fSmrgtypedef XID RRCrtc;
41b042e37fSmrgtypedef XID RRMode;
42b042e37fSmrg
43b042e37fSmrgtypedef struct {
44b042e37fSmrg    int	width, height;
45b042e37fSmrg    int	mwidth, mheight;
46b042e37fSmrg} XRRScreenSize;
47b042e37fSmrg
48b042e37fSmrg/*
49b042e37fSmrg *  Events.
50b042e37fSmrg */
51b042e37fSmrg
52b042e37fSmrgtypedef struct {
53b042e37fSmrg    int type;			/* event base */
54b042e37fSmrg    unsigned long serial;	/* # of last request processed by server */
55b042e37fSmrg    Bool send_event;		/* true if this came from a SendEvent request */
56b042e37fSmrg    Display *display;		/* Display the event was read from */
57b042e37fSmrg    Window window;		/* window which selected for this event */
58b042e37fSmrg    Window root;		/* Root window for changed screen */
59b042e37fSmrg    Time timestamp;		/* when the screen change occurred */
60b042e37fSmrg    Time config_timestamp;	/* when the last configuration change */
61b042e37fSmrg    SizeID size_index;
62b042e37fSmrg    SubpixelOrder subpixel_order;
63b042e37fSmrg    Rotation rotation;
64b042e37fSmrg    int width;
65b042e37fSmrg    int height;
66b042e37fSmrg    int mwidth;
67b042e37fSmrg    int mheight;
68b042e37fSmrg} XRRScreenChangeNotifyEvent;
69b042e37fSmrg
70b042e37fSmrgtypedef struct {
71b042e37fSmrg    int type;			/* event base */
72b042e37fSmrg    unsigned long serial;	/* # of last request processed by server */
73b042e37fSmrg    Bool send_event;		/* true if this came from a SendEvent request */
74b042e37fSmrg    Display *display;		/* Display the event was read from */
75b042e37fSmrg    Window window;		/* window which selected for this event */
76b042e37fSmrg    int subtype;		/* RRNotify_ subtype */
77b042e37fSmrg} XRRNotifyEvent;
78b042e37fSmrg
79b042e37fSmrgtypedef struct {
80b042e37fSmrg    int type;			/* event base */
81b042e37fSmrg    unsigned long serial;	/* # of last request processed by server */
82b042e37fSmrg    Bool send_event;		/* true if this came from a SendEvent request */
83b042e37fSmrg    Display *display;		/* Display the event was read from */
84b042e37fSmrg    Window window;		/* window which selected for this event */
85b042e37fSmrg    int subtype;		/* RRNotify_OutputChange */
86b042e37fSmrg    RROutput output;		/* affected output */
87b042e37fSmrg    RRCrtc crtc;	    	/* current crtc (or None) */
88b042e37fSmrg    RRMode mode;	    	/* current mode (or None) */
89b042e37fSmrg    Rotation rotation;		/* current rotation of associated crtc */
90b042e37fSmrg    Connection connection;	/* current connection status */
91b042e37fSmrg    SubpixelOrder subpixel_order;
92b042e37fSmrg} XRROutputChangeNotifyEvent;
93b042e37fSmrg
94b042e37fSmrgtypedef struct {
95b042e37fSmrg    int type;			/* event base */
96b042e37fSmrg    unsigned long serial;	/* # of last request processed by server */
97b042e37fSmrg    Bool send_event;		/* true if this came from a SendEvent request */
98b042e37fSmrg    Display *display;		/* Display the event was read from */
99b042e37fSmrg    Window window;		/* window which selected for this event */
100b042e37fSmrg    int subtype;		/* RRNotify_CrtcChange */
101b042e37fSmrg    RRCrtc crtc;    		/* current crtc (or None) */
102b042e37fSmrg    RRMode mode;	    	/* current mode (or None) */
103b042e37fSmrg    Rotation rotation;		/* current rotation of associated crtc */
104b042e37fSmrg    int x, y;			/* position */
105b042e37fSmrg    unsigned int width, height;	/* size */
106b042e37fSmrg} XRRCrtcChangeNotifyEvent;
107b042e37fSmrg
108b042e37fSmrgtypedef struct {
109b042e37fSmrg    int type;			/* event base */
110b042e37fSmrg    unsigned long serial;	/* # of last request processed by server */
111b042e37fSmrg    Bool send_event;		/* true if this came from a SendEvent request */
112b042e37fSmrg    Display *display;		/* Display the event was read from */
113b042e37fSmrg    Window window;		/* window which selected for this event */
114b042e37fSmrg    int subtype;		/* RRNotify_OutputProperty */
115b042e37fSmrg    RROutput output;		/* related output */
116b042e37fSmrg    Atom property;		/* changed property */
117b042e37fSmrg    Time timestamp;		/* time of change */
118b042e37fSmrg    int state;			/* NewValue, Deleted */
119b042e37fSmrg} XRROutputPropertyNotifyEvent;
120b042e37fSmrg
121b042e37fSmrg/* internal representation is private to the library */
122b042e37fSmrgtypedef struct _XRRScreenConfiguration XRRScreenConfiguration;
123b042e37fSmrg
1248c4a8e55SmrgBool XRRQueryExtension (Display *dpy,
1258c4a8e55Smrg			int *event_base_return,
1268c4a8e55Smrg			int *error_base_return);
127b042e37fSmrgStatus XRRQueryVersion (Display *dpy,
1288c4a8e55Smrg			    int     *major_version_return,
1298c4a8e55Smrg			    int     *minor_version_return);
130b042e37fSmrg
131b042e37fSmrgXRRScreenConfiguration *XRRGetScreenInfo (Display *dpy,
132b042e37fSmrg					  Window window);
133b042e37fSmrg
134b042e37fSmrgvoid XRRFreeScreenConfigInfo (XRRScreenConfiguration *config);
135b042e37fSmrg
136b042e37fSmrg/*
137b042e37fSmrg * Note that screen configuration changes are only permitted if the client can
138b042e37fSmrg * prove it has up to date configuration information.  We are trying to
139b042e37fSmrg * insist that it become possible for screens to change dynamically, so
140b042e37fSmrg * we want to ensure the client knows what it is talking about when requesting
141b042e37fSmrg * changes.
142b042e37fSmrg */
143b042e37fSmrgStatus XRRSetScreenConfig (Display *dpy,
144b042e37fSmrg			   XRRScreenConfiguration *config,
145b042e37fSmrg			   Drawable draw,
146b042e37fSmrg			   int size_index,
147b042e37fSmrg			   Rotation rotation,
148b042e37fSmrg			   Time timestamp);
149b042e37fSmrg
150b042e37fSmrg/* added in v1.1, sorry for the lame name */
151b042e37fSmrgStatus XRRSetScreenConfigAndRate (Display *dpy,
152b042e37fSmrg				  XRRScreenConfiguration *config,
153b042e37fSmrg				  Drawable draw,
154b042e37fSmrg				  int size_index,
155b042e37fSmrg				  Rotation rotation,
156b042e37fSmrg				  short rate,
157b042e37fSmrg				  Time timestamp);
158b042e37fSmrg
159b042e37fSmrg
160b042e37fSmrgRotation XRRConfigRotations(XRRScreenConfiguration *config, Rotation *current_rotation);
161b042e37fSmrg
162b042e37fSmrgTime XRRConfigTimes (XRRScreenConfiguration *config, Time *config_timestamp);
163b042e37fSmrg
164b042e37fSmrgXRRScreenSize *XRRConfigSizes(XRRScreenConfiguration *config, int *nsizes);
165b042e37fSmrg
166b042e37fSmrgshort *XRRConfigRates (XRRScreenConfiguration *config, int sizeID, int *nrates);
167b042e37fSmrg
168b042e37fSmrgSizeID XRRConfigCurrentConfiguration (XRRScreenConfiguration *config,
169b042e37fSmrg			      Rotation *rotation);
170b042e37fSmrg
171b042e37fSmrgshort XRRConfigCurrentRate (XRRScreenConfiguration *config);
172b042e37fSmrg
173b042e37fSmrgint XRRRootToScreen(Display *dpy, Window root);
174b042e37fSmrg
175b042e37fSmrg/*
176b042e37fSmrg * returns the screen configuration for the specified screen; does a lazy
177b042e37fSmrg * evalution to delay getting the information, and caches the result.
178b042e37fSmrg * These routines should be used in preference to XRRGetScreenInfo
179b042e37fSmrg * to avoid unneeded round trips to the X server.  These are new
180b042e37fSmrg * in protocol version 0.1.
181b042e37fSmrg */
182b042e37fSmrg
183b042e37fSmrg
184b042e37fSmrgvoid XRRSelectInput(Display *dpy, Window window, int mask);
185b042e37fSmrg
186b042e37fSmrg/*
187b042e37fSmrg * the following are always safe to call, even if RandR is not implemented
188b042e37fSmrg * on a screen
189b042e37fSmrg */
190b042e37fSmrg
191b042e37fSmrg
192b042e37fSmrgRotation XRRRotations(Display *dpy, int screen, Rotation *current_rotation);
193b042e37fSmrgXRRScreenSize *XRRSizes(Display *dpy, int screen, int *nsizes);
194b042e37fSmrgshort *XRRRates (Display *dpy, int screen, int sizeID, int *nrates);
195b042e37fSmrgTime XRRTimes (Display *dpy, int screen, Time *config_timestamp);
196b042e37fSmrg
197b042e37fSmrg
198b042e37fSmrg/* Version 1.2 additions */
199b042e37fSmrg
200706b6b52Smrg/* despite returning a Status, this returns 1 for success */
201b042e37fSmrgStatus
202b042e37fSmrgXRRGetScreenSizeRange (Display *dpy, Window window,
203b042e37fSmrg		       int *minWidth, int *minHeight,
204b042e37fSmrg		       int *maxWidth, int *maxHeight);
205b042e37fSmrg
206b042e37fSmrgvoid
207b042e37fSmrgXRRSetScreenSize (Display *dpy, Window window,
208b042e37fSmrg		  int width, int height,
209b042e37fSmrg		  int mmWidth, int mmHeight);
210b042e37fSmrg
211b042e37fSmrgtypedef unsigned long XRRModeFlags;
212b042e37fSmrg
213b042e37fSmrgtypedef struct _XRRModeInfo {
214b042e37fSmrg    RRMode		id;
215b042e37fSmrg    unsigned int	width;
216b042e37fSmrg    unsigned int	height;
217b042e37fSmrg    unsigned long	dotClock;
218b042e37fSmrg    unsigned int	hSyncStart;
219b042e37fSmrg    unsigned int	hSyncEnd;
220b042e37fSmrg    unsigned int	hTotal;
221b042e37fSmrg    unsigned int	hSkew;
222b042e37fSmrg    unsigned int	vSyncStart;
223b042e37fSmrg    unsigned int	vSyncEnd;
224b042e37fSmrg    unsigned int	vTotal;
225b042e37fSmrg    char		*name;
226b042e37fSmrg    unsigned int	nameLength;
227b042e37fSmrg    XRRModeFlags	modeFlags;
228b042e37fSmrg} XRRModeInfo;
229b042e37fSmrg
230b042e37fSmrgtypedef struct _XRRScreenResources {
231b042e37fSmrg    Time	timestamp;
232b042e37fSmrg    Time	configTimestamp;
233b042e37fSmrg    int		ncrtc;
234b042e37fSmrg    RRCrtc	*crtcs;
235b042e37fSmrg    int		noutput;
236b042e37fSmrg    RROutput	*outputs;
237b042e37fSmrg    int		nmode;
238b042e37fSmrg    XRRModeInfo	*modes;
239b042e37fSmrg} XRRScreenResources;
240b042e37fSmrg
241b042e37fSmrgXRRScreenResources *
242b042e37fSmrgXRRGetScreenResources (Display *dpy, Window window);
243b042e37fSmrg
244b042e37fSmrgvoid
245b042e37fSmrgXRRFreeScreenResources (XRRScreenResources *resources);
246b042e37fSmrg
247b042e37fSmrgtypedef struct _XRROutputInfo {
248b042e37fSmrg    Time	    timestamp;
249b042e37fSmrg    RRCrtc	    crtc;
250b042e37fSmrg    char	    *name;
251b042e37fSmrg    int		    nameLen;
252b042e37fSmrg    unsigned long   mm_width;
253b042e37fSmrg    unsigned long   mm_height;
254b042e37fSmrg    Connection	    connection;
255b042e37fSmrg    SubpixelOrder   subpixel_order;
256b042e37fSmrg    int		    ncrtc;
257b042e37fSmrg    RRCrtc	    *crtcs;
258b042e37fSmrg    int		    nclone;
259b042e37fSmrg    RROutput	    *clones;
260b042e37fSmrg    int		    nmode;
261b042e37fSmrg    int		    npreferred;
262b042e37fSmrg    RRMode	    *modes;
263b042e37fSmrg} XRROutputInfo;
264b042e37fSmrg
265b042e37fSmrgXRROutputInfo *
266b042e37fSmrgXRRGetOutputInfo (Display *dpy, XRRScreenResources *resources, RROutput output);
267b042e37fSmrg
268b042e37fSmrgvoid
269b042e37fSmrgXRRFreeOutputInfo (XRROutputInfo *outputInfo);
270b042e37fSmrg
271b042e37fSmrgAtom *
272b042e37fSmrgXRRListOutputProperties (Display *dpy, RROutput output, int *nprop);
273b042e37fSmrg
274b042e37fSmrgtypedef struct {
275b042e37fSmrg    Bool    pending;
276b042e37fSmrg    Bool    range;
277b042e37fSmrg    Bool    immutable;
278b042e37fSmrg    int	    num_values;
279b042e37fSmrg    long    *values;
280b042e37fSmrg} XRRPropertyInfo;
281b042e37fSmrg
282b042e37fSmrgXRRPropertyInfo *
283b042e37fSmrgXRRQueryOutputProperty (Display *dpy, RROutput output, Atom property);
284b042e37fSmrg
285b042e37fSmrgvoid
286b042e37fSmrgXRRConfigureOutputProperty (Display *dpy, RROutput output, Atom property,
287b042e37fSmrg			    Bool pending, Bool range, int num_values,
288b042e37fSmrg			    long *values);
289b042e37fSmrg
290b042e37fSmrgvoid
291b042e37fSmrgXRRChangeOutputProperty (Display *dpy, RROutput output,
292b042e37fSmrg			 Atom property, Atom type,
293b042e37fSmrg			 int format, int mode,
294b042e37fSmrg			 _Xconst unsigned char *data, int nelements);
295b042e37fSmrg
296b042e37fSmrgvoid
297b042e37fSmrgXRRDeleteOutputProperty (Display *dpy, RROutput output, Atom property);
298b042e37fSmrg
299b042e37fSmrgint
300b042e37fSmrgXRRGetOutputProperty (Display *dpy, RROutput output,
301b042e37fSmrg		      Atom property, long offset, long length,
302b042e37fSmrg		      Bool _delete, Bool pending, Atom req_type,
303b042e37fSmrg		      Atom *actual_type, int *actual_format,
304b042e37fSmrg		      unsigned long *nitems, unsigned long *bytes_after,
305b042e37fSmrg		      unsigned char **prop);
306b042e37fSmrg
307b042e37fSmrgXRRModeInfo *
308b042e37fSmrgXRRAllocModeInfo (char *name, int nameLength);
309b042e37fSmrg
310b042e37fSmrgRRMode
311b042e37fSmrgXRRCreateMode (Display *dpy, Window window, XRRModeInfo *modeInfo);
312b042e37fSmrg
313b042e37fSmrgvoid
314b042e37fSmrgXRRDestroyMode (Display *dpy, RRMode mode);
315b042e37fSmrg
316b042e37fSmrgvoid
317b042e37fSmrgXRRAddOutputMode (Display *dpy, RROutput output, RRMode mode);
318b042e37fSmrg
319b042e37fSmrgvoid
320b042e37fSmrgXRRDeleteOutputMode (Display *dpy, RROutput output, RRMode mode);
321b042e37fSmrg
322b042e37fSmrgvoid
323b042e37fSmrgXRRFreeModeInfo (XRRModeInfo *modeInfo);
324b042e37fSmrg
325b042e37fSmrgtypedef struct _XRRCrtcInfo {
326b042e37fSmrg    Time	    timestamp;
327b042e37fSmrg    int		    x, y;
328b042e37fSmrg    unsigned int    width, height;
329b042e37fSmrg    RRMode	    mode;
330b042e37fSmrg    Rotation	    rotation;
331b042e37fSmrg    int		    noutput;
332b042e37fSmrg    RROutput	    *outputs;
333b042e37fSmrg    Rotation	    rotations;
334b042e37fSmrg    int		    npossible;
335b042e37fSmrg    RROutput	    *possible;
336b042e37fSmrg} XRRCrtcInfo;
337b042e37fSmrg
338b042e37fSmrgXRRCrtcInfo *
339b042e37fSmrgXRRGetCrtcInfo (Display *dpy, XRRScreenResources *resources, RRCrtc crtc);
340b042e37fSmrg
341b042e37fSmrgvoid
342b042e37fSmrgXRRFreeCrtcInfo (XRRCrtcInfo *crtcInfo);
343b042e37fSmrg
344b042e37fSmrgStatus
345b042e37fSmrgXRRSetCrtcConfig (Display *dpy,
346b042e37fSmrg		  XRRScreenResources *resources,
347b042e37fSmrg		  RRCrtc crtc,
348b042e37fSmrg		  Time timestamp,
349b042e37fSmrg		  int x, int y,
350b042e37fSmrg		  RRMode mode,
351b042e37fSmrg		  Rotation rotation,
352b042e37fSmrg		  RROutput *outputs,
353b042e37fSmrg		  int noutputs);
354b042e37fSmrg
355b042e37fSmrgint
356b042e37fSmrgXRRGetCrtcGammaSize (Display *dpy, RRCrtc crtc);
357b042e37fSmrg
358b042e37fSmrgtypedef struct _XRRCrtcGamma {
359b042e37fSmrg    int		    size;
360b042e37fSmrg    unsigned short  *red;
361b042e37fSmrg    unsigned short  *green;
362b042e37fSmrg    unsigned short  *blue;
363b042e37fSmrg} XRRCrtcGamma;
364b042e37fSmrg
365b042e37fSmrgXRRCrtcGamma *
366b042e37fSmrgXRRGetCrtcGamma (Display *dpy, RRCrtc crtc);
367b042e37fSmrg
368b042e37fSmrgXRRCrtcGamma *
369b042e37fSmrgXRRAllocGamma (int size);
370b042e37fSmrg
371b042e37fSmrgvoid
372b042e37fSmrgXRRSetCrtcGamma (Display *dpy, RRCrtc crtc, XRRCrtcGamma *gamma);
373b042e37fSmrg
374b042e37fSmrgvoid
375b042e37fSmrgXRRFreeGamma (XRRCrtcGamma *gamma);
376b042e37fSmrg
3778c4a8e55Smrg/* Version 1.3 additions */
3788c4a8e55Smrg
3798c4a8e55SmrgXRRScreenResources *
3808c4a8e55SmrgXRRGetScreenResourcesCurrent (Display *dpy, Window window);
3818c4a8e55Smrg
3828c4a8e55Smrgvoid
3838c4a8e55SmrgXRRSetCrtcTransform (Display	*dpy,
3848c4a8e55Smrg		     RRCrtc	crtc,
3858c4a8e55Smrg		     XTransform	*transform,
3868c4a8e55Smrg		     char	*filter,
3878c4a8e55Smrg		     XFixed	*params,
3888c4a8e55Smrg		     int	nparams);
3898c4a8e55Smrg
3908c4a8e55Smrgtypedef struct _XRRCrtcTransformAttributes {
3918c4a8e55Smrg    XTransform	pendingTransform;
3928c4a8e55Smrg    char	*pendingFilter;
3938c4a8e55Smrg    int		pendingNparams;
3948c4a8e55Smrg    XFixed	*pendingParams;
3958c4a8e55Smrg    XTransform	currentTransform;
3968c4a8e55Smrg    char	*currentFilter;
3978c4a8e55Smrg    int		currentNparams;
3988c4a8e55Smrg    XFixed	*currentParams;
3998c4a8e55Smrg} XRRCrtcTransformAttributes;
4008c4a8e55Smrg
4018c4a8e55Smrg/*
4028c4a8e55Smrg * Get current crtc transforms and filters.
4038c4a8e55Smrg * Pass *attributes to XFree to free
4048c4a8e55Smrg */
4058c4a8e55SmrgStatus
4068c4a8e55SmrgXRRGetCrtcTransform (Display	*dpy,
4078c4a8e55Smrg		     RRCrtc	crtc,
4088c4a8e55Smrg		     XRRCrtcTransformAttributes **attributes);
4098c4a8e55Smrg
4108c4a8e55Smrg/*
411b042e37fSmrg * intended to take RRScreenChangeNotify,  or
412b042e37fSmrg * ConfigureNotify (on the root window)
413b042e37fSmrg * returns 1 if it is an event type it understands, 0 if not
414b042e37fSmrg */
415b042e37fSmrgint XRRUpdateConfiguration(XEvent *event);
416b042e37fSmrg
4178c4a8e55Smrgtypedef struct _XRRPanning {
4188c4a8e55Smrg    Time            timestamp;
4198c4a8e55Smrg    unsigned int left;
4208c4a8e55Smrg    unsigned int top;
4218c4a8e55Smrg    unsigned int width;
4228c4a8e55Smrg    unsigned int height;
4238c4a8e55Smrg    unsigned int track_left;
4248c4a8e55Smrg    unsigned int track_top;
4258c4a8e55Smrg    unsigned int track_width;
4268c4a8e55Smrg    unsigned int track_height;
4278c4a8e55Smrg    int          border_left;
4288c4a8e55Smrg    int          border_top;
4298c4a8e55Smrg    int          border_right;
4308c4a8e55Smrg    int          border_bottom;
4318c4a8e55Smrg} XRRPanning;
4328c4a8e55Smrg
4338c4a8e55SmrgXRRPanning *
4348c4a8e55SmrgXRRGetPanning (Display *dpy, XRRScreenResources *resources, RRCrtc crtc);
4358c4a8e55Smrg
4368c4a8e55Smrgvoid
4378c4a8e55SmrgXRRFreePanning (XRRPanning *panning);
4388c4a8e55Smrg
4398c4a8e55SmrgStatus
4408c4a8e55SmrgXRRSetPanning (Display *dpy,
4418c4a8e55Smrg	       XRRScreenResources *resources,
4428c4a8e55Smrg	       RRCrtc crtc,
4438c4a8e55Smrg	       XRRPanning *panning);
4448c4a8e55Smrg
4458c4a8e55Smrgvoid
4468c4a8e55SmrgXRRSetOutputPrimary(Display *dpy,
4478c4a8e55Smrg		    Window window,
4488c4a8e55Smrg		    RROutput output);
4498c4a8e55Smrg
4508c4a8e55SmrgRROutput
4518c4a8e55SmrgXRRGetOutputPrimary(Display *dpy,
4528c4a8e55Smrg		    Window window);
4538c4a8e55Smrg
454b042e37fSmrg_XFUNCPROTOEND
455b042e37fSmrg
456b042e37fSmrg#endif /* _XRANDR_H_ */
457