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