917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync/*
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Copyright © 2000 Compaq Computer Corporation
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Copyright © 2002 Hewlett-Packard Company
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Copyright © 2006 Intel Corporation
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Copyright © 2008 Red Hat, Inc.
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync *
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Permission to use, copy, modify, distribute, and sell this software and its
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * documentation for any purpose is hereby granted without fee, provided that
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * the above copyright notice appear in all copies and that both that copyright
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * notice and this permission notice appear in supporting documentation, and
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * that the name of the copyright holders not be used in advertising or
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * publicity pertaining to distribution of the software without specific,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * written prior permission. The copyright holders make no representations
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * about the suitability of this software for any purpose. It is provided "as
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync * is" without express or implied warranty.
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync *
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * OF THIS SOFTWARE.
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync *
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Author: Jim Gettys, Hewlett-Packard Company, Inc.
54ed927d658674ced4387afbd1877a27cb975a76vboxsync * Keith Packard, Intel Corporation
54ed927d658674ced4387afbd1877a27cb975a76vboxsync */
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#ifdef HAVE_DIX_CONFIG_H
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include <dix-config.h>
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#endif
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#ifndef _RANDRSTR_H_
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define _RANDRSTR_H_
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include <X11/X.h>
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include <X11/Xproto.h>
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "misc.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "os.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "dixstruct.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "resource.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "scrnintstr.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "windowstr.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "pixmapstr.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "extnsionst.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "servermd.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "rrtransform.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include <X11/extensions/randr.h>
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include <X11/extensions/randrproto.h>
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include <X11/extensions/render.h> /* we share subpixel order information */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include "picturestr.h"
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#include <X11/Xfuncproto.h>
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync/* required for ABI compatibility for now */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define RANDR_10_INTERFACE 1
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define RANDR_12_INTERFACE 1
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define RANDR_13_INTERFACE 1 /* requires RANDR_12_INTERFACE */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define RANDR_GET_CRTC_INTERFACE 1
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define RANDR_INTERFACE_VERSION 0x0104
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef XID RRMode;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef XID RROutput;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef XID RRCrtc;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef XID RRProvider;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int RREventBase, RRErrorBase;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int (*ProcRandrVector[RRNumberRequests]) (ClientPtr);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int (*SProcRandrVector[RRNumberRequests]) (ClientPtr);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync/*
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Modeline for a monitor. Name follows directly after this struct
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define RRModeName(pMode) ((char *) (pMode + 1))
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef struct _rrMode RRModeRec, *RRModePtr;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef struct _rrPropertyValue RRPropertyValueRec, *RRPropertyValuePtr;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef struct _rrProperty RRPropertyRec, *RRPropertyPtr;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsynctypedef struct _rrCrtc RRCrtcRec, *RRCrtcPtr;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef struct _rrOutput RROutputRec, *RROutputPtr;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef struct _rrProvider RRProviderRec, *RRProviderPtr;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncstruct _rrMode {
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int refcnt;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync xRRModeInfo mode;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync char *name;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync ScreenPtr userScreen;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync};
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncstruct _rrPropertyValue {
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync Atom type; /* ignored by server */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync short format; /* format of data for swapping - 8,16,32 */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync long size; /* size of data in (format/8) bytes */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync pointer data; /* private to client */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync};
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncstruct _rrProperty {
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRPropertyPtr next;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ATOM propertyName;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync Bool is_pending;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync Bool range;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync Bool immutable;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync int num_valid;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync INT32 *valid_values;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRPropertyValueRec current, pending;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync};
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncstruct _rrCrtc {
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRCrtc id;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ScreenPtr pScreen;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRModePtr mode;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync int x, y;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync Rotation rotation;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync Rotation rotations;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync Bool changed;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync int numOutputs;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RROutputPtr *outputs;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync int gammaSize;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync CARD16 *gammaRed;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync CARD16 *gammaBlue;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync CARD16 *gammaGreen;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync void *devPrivate;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync Bool transforms;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRTransformRec client_pending_transform;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRTransformRec client_current_transform;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync PictTransform transform;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync struct pict_f_transform f_transform;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync struct pict_f_transform f_inverse;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync PixmapPtr scanout_pixmap;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync};
e2ba4c7fd718dba1d5b73cd9e40486df3ce06e77vboxsync
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsyncstruct _rrOutput {
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RROutput id;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ScreenPtr pScreen;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync char *name;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int nameLength;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync CARD8 connection;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync CARD8 subpixelOrder;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync int mmWidth;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync int mmHeight;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync RRCrtcPtr crtc;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync int numCrtcs;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync RRCrtcPtr *crtcs;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync int numClones;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync RROutputPtr *clones;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync int numModes;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync int numPreferred;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync RRModePtr *modes;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync int numUserModes;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync RRModePtr *userModes;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync Bool changed;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync RRPropertyPtr properties;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync Bool pendingProperties;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync void *devPrivate;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync};
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsyncstruct _rrProvider {
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync RRProvider id;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync ScreenPtr pScreen;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync uint32_t capabilities;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync char *name;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync int nameLength;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync RRPropertyPtr properties;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync Bool pendingProperties;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync struct _rrProvider *offload_sink;
2532c528b686eb371278fc8d8b26b1fdba7960b0vboxsync struct _rrProvider *output_source;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync};
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#if RANDR_12_INTERFACE
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsynctypedef Bool (*RRScreenSetSizeProcPtr) (ScreenPtr pScreen,
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync CARD16 width,
08fc4eb537ed24136b05660d0aa038b336516961vboxsync CARD16 height,
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync CARD32 mmWidth, CARD32 mmHeight);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsynctypedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen,
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync RRCrtcPtr crtc,
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync RRModePtr mode,
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync int x,
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync int y,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync Rotation rotation,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int numOutputs, RROutputPtr * outputs);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RRCrtcSetGammaProcPtr) (ScreenPtr pScreen, RRCrtcPtr crtc);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RRCrtcGetGammaProcPtr) (ScreenPtr pScreen, RRCrtcPtr crtc);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RROutputSetPropertyProcPtr) (ScreenPtr pScreen,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RROutputPtr output,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync Atom property,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRPropertyValuePtr value);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RROutputValidateModeProcPtr) (ScreenPtr pScreen,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RROutputPtr output,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRModePtr mode);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsynctypedef void (*RRModeDestroyProcPtr) (ScreenPtr pScreen, RRModePtr mode);
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsync#endif
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsync#if RANDR_13_INTERFACE
54ed927d658674ced4387afbd1877a27cb975a76vboxsynctypedef Bool (*RROutputGetPropertyProcPtr) (ScreenPtr pScreen,
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RROutputPtr output, Atom property);
54ed927d658674ced4387afbd1877a27cb975a76vboxsynctypedef Bool (*RRGetPanningProcPtr) (ScreenPtr pScrn,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRCrtcPtr crtc,
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync BoxPtr totalArea,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync BoxPtr trackingArea, INT16 *border);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RRSetPanningProcPtr) (ScreenPtr pScrn,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRCrtcPtr crtc,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync BoxPtr totalArea,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync BoxPtr trackingArea, INT16 *border);
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#endif /* RANDR_13_INTERFACE */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RRProviderGetPropertyProcPtr) (ScreenPtr pScreen,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRProviderPtr provider, Atom property);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RRProviderSetPropertyProcPtr) (ScreenPtr pScreen,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRProviderPtr provider,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync Atom property,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRPropertyValuePtr value);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation * rotations);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RRCloseScreenProcPtr) (ScreenPtr pscreen);
e2ba4c7fd718dba1d5b73cd9e40486df3ce06e77vboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RRProviderSetOutputSourceProcPtr)(ScreenPtr pScreen,
e2ba4c7fd718dba1d5b73cd9e40486df3ce06e77vboxsync RRProviderPtr provider,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRProviderPtr output_source);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef Bool (*RRProviderSetOffloadSinkProcPtr)(ScreenPtr pScreen,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRProviderPtr provider,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRProviderPtr offload_sink);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef void (*RRProviderDestroyProcPtr)(ScreenPtr pScreen,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRProviderPtr provider);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync/* These are for 1.0 compatibility */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef struct _rrRefresh {
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync CARD16 rate;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRModePtr mode;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync} RRScreenRate, *RRScreenRatePtr;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsynctypedef struct _rrScreenSize {
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync int id;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync short width, height;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync short mmWidth, mmHeight;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync int nRates;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync RRScreenRatePtr pRates;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync} RRScreenSize, *RRScreenSizePtr;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync#ifdef RANDR_10_INTERFACE
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsynctypedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen,
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync Rotation rotation,
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync int rate, RRScreenSizePtr pSize);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#endif
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsynctypedef Bool (*RRCrtcSetScanoutPixmapProcPtr)(RRCrtcPtr crtc, PixmapPtr pixmap);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsynctypedef struct _rrScrPriv {
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync /*
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync * 'public' part of the structure; DDXen fill this in
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync * as they initialize
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync */
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#if RANDR_10_INTERFACE
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRSetConfigProcPtr rrSetConfig;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#endif
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRGetInfoProcPtr rrGetInfo;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#if RANDR_12_INTERFACE
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRScreenSetSizeProcPtr rrScreenSetSize;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRCrtcSetProcPtr rrCrtcSet;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRCrtcSetGammaProcPtr rrCrtcSetGamma;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRCrtcGetGammaProcPtr rrCrtcGetGamma;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RROutputSetPropertyProcPtr rrOutputSetProperty;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RROutputValidateModeProcPtr rrOutputValidateMode;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRModeDestroyProcPtr rrModeDestroy;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#endif
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#if RANDR_13_INTERFACE
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RROutputGetPropertyProcPtr rrOutputGetProperty;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRGetPanningProcPtr rrGetPanning;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRSetPanningProcPtr rrSetPanning;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#endif
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync /* TODO #if RANDR_15_INTERFACE */
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRCrtcSetScanoutPixmapProcPtr rrCrtcSetScanoutPixmap;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRProviderSetOutputSourceProcPtr rrProviderSetOutputSource;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRProviderSetOffloadSinkProcPtr rrProviderSetOffloadSink;
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRProviderGetPropertyProcPtr rrProviderGetProperty;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync RRProviderSetPropertyProcPtr rrProviderSetProperty;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync /*
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync * Private part of the structure; not considered part of the ABI
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync */
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync TimeStamp lastSetTime; /* last changed by client */
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync TimeStamp lastConfigTime; /* possible configs changed */
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync RRCloseScreenProcPtr CloseScreen;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync Bool changed; /* some config changed */
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync Bool configChanged; /* configuration changed */
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync Bool layoutChanged; /* screen layout changed */
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync CARD16 minWidth, minHeight;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync CARD16 maxWidth, maxHeight;
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync CARD16 width, height; /* last known screen size */
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync CARD16 mmWidth, mmHeight; /* last known screen size */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int numOutputs;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RROutputPtr *outputs;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RROutputPtr primaryOutput;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int numCrtcs;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRCrtcPtr *crtcs;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync /* Last known pointer position */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRCrtcPtr pointerCrtc;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#ifdef RANDR_10_INTERFACE
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync /*
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Configuration information
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync Rotation rotations;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync CARD16 reqWidth, reqHeight;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int nSizes;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRScreenSizePtr pSizes;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync Rotation rotation;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int rate;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int size;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#endif
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync Bool discontiguous;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRProviderPtr provider;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRProviderDestroyProcPtr rrProviderDestroy;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync} rrScrPrivRec, *rrScrPrivPtr;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT DevPrivateKeyRec rrPrivKeyRec;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define rrPrivKey (&rrPrivKeyRec)
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define rrGetScrPriv(pScr) ((rrScrPrivPtr)dixLookupPrivate(&(pScr)->devPrivates, rrPrivKey))
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define rrScrPriv(pScr) rrScrPrivPtr pScrPriv = rrGetScrPriv(pScr)
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync#define SetRRScreen(s,p) dixSetPrivate(&(s)->devPrivates, rrPrivKey, p)
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync/*
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * each window has a list of clients requesting
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * RRNotify events. Each client has a resource
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * for each window it selects RRNotify input for,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * this resource is used to delete the RRNotifyRec
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * entry from the per-window queue.
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef struct _RREvent *RREventPtr;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef struct _RREvent {
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RREventPtr next;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync ClientPtr client;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync WindowPtr window;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync XID clientResource;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int mask;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync} RREventRec;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsynctypedef struct _RRTimes {
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync TimeStamp setTime;
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync TimeStamp configTime;
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync} RRTimesRec, *RRTimesPtr;
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsynctypedef struct _RRClient {
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync int major_version;
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync int minor_version;
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync/* RRTimesRec times[0]; */
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync} RRClientRec, *RRClientPtr;
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncextern _X_EXPORT RESTYPE RRClientType, RREventType; /* resource types for event masks */
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncextern _X_EXPORT DevPrivateKeyRec RRClientPrivateKeyRec;
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#define RRClientPrivateKey (&RRClientPrivateKeyRec)
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT RESTYPE RRCrtcType, RRModeType, RROutputType, RRProviderType;
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#define VERIFY_RR_OUTPUT(id, ptr, a)\
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync {\
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RROutputType, client, a);\
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync if (rc != Success) {\
72e9ef1022a910facbd4a232500026befd944d95vboxsync client->errorValue = id;\
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync return rc;\
72e9ef1022a910facbd4a232500026befd944d95vboxsync }\
72e9ef1022a910facbd4a232500026befd944d95vboxsync }
72e9ef1022a910facbd4a232500026befd944d95vboxsync
72e9ef1022a910facbd4a232500026befd944d95vboxsync#define VERIFY_RR_CRTC(id, ptr, a)\
72e9ef1022a910facbd4a232500026befd944d95vboxsync {\
72e9ef1022a910facbd4a232500026befd944d95vboxsync int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
72e9ef1022a910facbd4a232500026befd944d95vboxsync RRCrtcType, client, a);\
72e9ef1022a910facbd4a232500026befd944d95vboxsync if (rc != Success) {\
54ed927d658674ced4387afbd1877a27cb975a76vboxsync client->errorValue = id;\
72e9ef1022a910facbd4a232500026befd944d95vboxsync return rc;\
72e9ef1022a910facbd4a232500026befd944d95vboxsync }\
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync }
270236340676d2385b27ea992e07fcb643bb78b6vboxsync
270236340676d2385b27ea992e07fcb643bb78b6vboxsync#define VERIFY_RR_MODE(id, ptr, a)\
270236340676d2385b27ea992e07fcb643bb78b6vboxsync {\
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
270236340676d2385b27ea992e07fcb643bb78b6vboxsync RRModeType, client, a);\
270236340676d2385b27ea992e07fcb643bb78b6vboxsync if (rc != Success) {\
ac91d9d0626a52f79cf554c81b1fdf5f262092bbvboxsync client->errorValue = id;\
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync return rc;\
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync }\
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync }
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync#define VERIFY_RR_PROVIDER(id, ptr, a)\
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync {\
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRProviderType, client, a);\
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync if (rc != Success) {\
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync client->errorValue = id;\
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync return rc;\
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync }\
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync }
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync#define GetRRClient(pClient) ((RRClientPtr)dixLookupPrivate(&(pClient)->devPrivates, RRClientPrivateKey))
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync#define rrClientPriv(pClient) RRClientPtr pRRClient = GetRRClient(pClient)
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync#ifdef RANDR_12_INTERFACE
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync/*
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync * Set the range of sizes for the screen
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT void
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncRRScreenSetSizeRange(ScreenPtr pScreen,
81a042b394e569219fd7bf5c66281e6afc2212a3vboxsync CARD16 minWidth,
81a042b394e569219fd7bf5c66281e6afc2212a3vboxsync CARD16 minHeight, CARD16 maxWidth, CARD16 maxHeight);
81a042b394e569219fd7bf5c66281e6afc2212a3vboxsync#endif
81a042b394e569219fd7bf5c66281e6afc2212a3vboxsync
44f548822e604beb589f687f22c21b2b5f1ee7c6vboxsync/* rrscreen.c */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync/*
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Notify the extension that the screen size has been changed.
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * The driver is responsible for calling this whenever it has changed
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync * the size of the screen
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT void
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRScreenSizeNotify(ScreenPtr pScreen);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync/*
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * Request that the screen be resized
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT Bool
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsyncRRScreenSizeSet(ScreenPtr pScreen,
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync CARD16 width, CARD16 height, CARD32 mmWidth, CARD32 mmHeight);
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync/*
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync * Send ConfigureNotify event to root window when 'something' happens
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT void
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync RRSendConfigNotify(ScreenPtr pScreen);
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync/*
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * screen dispatch
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync ProcRRGetScreenSizeRange(ClientPtr client);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT int
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync ProcRRSetScreenSize(ClientPtr client);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT int
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync ProcRRGetScreenResources(ClientPtr client);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT int
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync ProcRRGetScreenResourcesCurrent(ClientPtr client);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT int
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync ProcRRSetScreenConfig(ClientPtr client);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT int
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync ProcRRGetScreenInfo(ClientPtr client);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync/*
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync * Deliver a ScreenNotify event
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync */
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT void
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync/* randr.c */
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync/*
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync * Send all pending events
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync */
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT void
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync RRTellChanged(ScreenPtr pScreen);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync/*
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync * Poll the driver for changed information
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync */
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT Bool
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync RRGetInfo(ScreenPtr pScreen, Bool force_query);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT Bool RRInit(void);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT Bool RRScreenInit(ScreenPtr pScreen);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT RROutputPtr RRFirstOutput(ScreenPtr pScreen);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT CARD16
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync RRVerticalRefresh(xRRModeInfo * mode);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync#ifdef RANDR_10_INTERFACE
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync/*
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * This is the old interface, deprecated but left
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync * around for compatibility
270236340676d2385b27ea992e07fcb643bb78b6vboxsync */
270236340676d2385b27ea992e07fcb643bb78b6vboxsync
270236340676d2385b27ea992e07fcb643bb78b6vboxsync/*
270236340676d2385b27ea992e07fcb643bb78b6vboxsync * Then, register the specific size with the screen
270236340676d2385b27ea992e07fcb643bb78b6vboxsync */
270236340676d2385b27ea992e07fcb643bb78b6vboxsync
270236340676d2385b27ea992e07fcb643bb78b6vboxsyncextern _X_EXPORT RRScreenSizePtr
270236340676d2385b27ea992e07fcb643bb78b6vboxsyncRRRegisterSize(ScreenPtr pScreen,
270236340676d2385b27ea992e07fcb643bb78b6vboxsync short width, short height, short mmWidth, short mmHeight);
270236340676d2385b27ea992e07fcb643bb78b6vboxsync
e2ba4c7fd718dba1d5b73cd9e40486df3ce06e77vboxsyncextern _X_EXPORT Bool
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsync RRRegisterRate(ScreenPtr pScreen, RRScreenSizePtr pSize, int rate);
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsync
270236340676d2385b27ea992e07fcb643bb78b6vboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Finally, set the current configuration of the screen
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT void
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncRRSetCurrentConfig(ScreenPtr pScreen,
c744a417746b736ef91efc38f5e4ee099293f141vboxsync Rotation rotation, int rate, RRScreenSizePtr pSize);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncextern _X_EXPORT Rotation RRGetRotation(ScreenPtr pScreen);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync#endif
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync/* rrcrtc.c */
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
c744a417746b736ef91efc38f5e4ee099293f141vboxsync/*
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync * Notify the CRTC of some change; layoutChanged indicates that
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync * some position or size element changed
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncextern _X_EXPORT void
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync/*
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync * Create a CRTC
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncextern _X_EXPORT RRCrtcPtr RRCrtcCreate(ScreenPtr pScreen, void *devPrivate);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync/*
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync * Set the allowed rotations on a CRTC
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncextern _X_EXPORT void
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync RRCrtcSetRotations(RRCrtcPtr crtc, Rotation rotations);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync/*
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync * Set whether transforms are allowed on a CRTC
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncextern _X_EXPORT void
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync RRCrtcSetTransformSupport(RRCrtcPtr crtc, Bool transforms);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync/*
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync * Notify the extension that the Crtc has been reconfigured,
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync * the driver calls this whenever it has updated the mode
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync */
d17bffd306255c509aa98e8118e9a5456ee2138evboxsyncextern _X_EXPORT Bool
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
d17bffd306255c509aa98e8118e9a5456ee2138evboxsyncRRCrtcNotify(RRCrtcPtr crtc,
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync RRModePtr mode,
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync int x,
c744a417746b736ef91efc38f5e4ee099293f141vboxsync int y,
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync Rotation rotation,
c744a417746b736ef91efc38f5e4ee099293f141vboxsync RRTransformPtr transform, int numOutputs, RROutputPtr * outputs);
c744a417746b736ef91efc38f5e4ee099293f141vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT void
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RRDeliverCrtcEvent(ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync/*
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync * Request that the Crtc be reconfigured
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync */
d17bffd306255c509aa98e8118e9a5456ee2138evboxsyncextern _X_EXPORT Bool
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
c744a417746b736ef91efc38f5e4ee099293f141vboxsyncRRCrtcSet(RRCrtcPtr crtc,
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RRModePtr mode,
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync int x,
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync int y, Rotation rotation, int numOutput, RROutputPtr * outputs);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Request that the Crtc gamma be changed
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
d17bffd306255c509aa98e8118e9a5456ee2138evboxsyncextern _X_EXPORT Bool
c744a417746b736ef91efc38f5e4ee099293f141vboxsync RRCrtcGammaSet(RRCrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync * Request current gamma back from the DDX (if possible).
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * This includes gamma size.
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT Bool
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync RRCrtcGammaGet(RRCrtcPtr crtc);
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync/*
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync * Notify the extension that the Crtc gamma has been changed
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync * The driver calls this whenever it has changed the gamma values
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync * in the RRCrtcRec
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync */
c744a417746b736ef91efc38f5e4ee099293f141vboxsync
c744a417746b736ef91efc38f5e4ee099293f141vboxsyncextern _X_EXPORT Bool
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync RRCrtcGammaNotify(RRCrtcPtr crtc);
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Set the size of the gamma table at server startup time
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT Bool
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RRCrtcGammaSetSize(RRCrtcPtr crtc, int size);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsync * Return the area of the frame buffer scanned out by the crtc,
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync * taking into account the current mode and rotation
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT void
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RRCrtcGetScanoutSize(RRCrtcPtr crtc, int *width, int *height);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Return crtc transform
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT RRTransformPtr RRCrtcGetTransform(RRCrtcPtr crtc);
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Check whether the pending and current transforms are the same
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
d17bffd306255c509aa98e8118e9a5456ee2138evboxsyncextern _X_EXPORT Bool
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RRCrtcPendingTransform(RRCrtcPtr crtc);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync * Destroy a Crtc at shutdown
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT void
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RRCrtcDestroy(RRCrtcPtr crtc);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Set the pending CRTC transformation
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
d17bffd306255c509aa98e8118e9a5456ee2138evboxsyncextern _X_EXPORT int
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
8541678784dbe432feebe6d9c1528525e1771397vboxsyncRRCrtcTransformSet(RRCrtcPtr crtc,
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync PictTransformPtr transform,
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync struct pict_f_transform *f_transform,
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync struct pict_f_transform *f_inverse,
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync char *filter, int filter_len, xFixed * params, int nparams);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync/*
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync * Initialize crtc type
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncextern _X_EXPORT Bool
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync RRCrtcInit(void);
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync/*
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync * Initialize crtc type error value
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT void
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RRCrtcInitErrorValue(void);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Detach and free a scanout pixmap
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync */
8541678784dbe432feebe6d9c1528525e1771397vboxsyncextern _X_EXPORT void
8541678784dbe432feebe6d9c1528525e1771397vboxsync RRCrtcDetachScanoutPixmap(RRCrtcPtr crtc);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT Bool
8541678784dbe432feebe6d9c1528525e1771397vboxsync RRReplaceScanoutPixmap(DrawablePtr pDrawable, PixmapPtr pPixmap, Bool enable);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync * Crtc dispatch
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync */
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT int
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ProcRRGetCrtcInfo(ClientPtr client);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT int
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ProcRRSetCrtcConfig(ClientPtr client);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT int
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ProcRRGetCrtcGammaSize(ClientPtr client);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT int
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ProcRRGetCrtcGamma(ClientPtr client);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT int
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ProcRRSetCrtcGamma(ClientPtr client);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT int
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ProcRRSetCrtcTransform(ClientPtr client);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT int
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ProcRRGetCrtcTransform(ClientPtr client);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncint
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ProcRRGetPanning(ClientPtr client);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncint
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync ProcRRSetPanning(ClientPtr client);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncvoid
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRConstrainCursorHarder(DeviceIntPtr, ScreenPtr, int, int *, int *);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync/* rrdispatch.c */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncextern _X_EXPORT Bool
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync RRClientKnowsRates(ClientPtr pClient);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync/* rrmode.c */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync/*
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync * Find, and if necessary, create a mode
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncextern _X_EXPORT RRModePtr RRModeGet(xRRModeInfo * modeInfo, const char *name);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync/*
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync * Destroy a mode.
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync */
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT void
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync RRModeDestroy(RRModePtr mode);
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync/*
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync * Return a list of modes that are valid for some output in pScreen
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync */
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsyncextern _X_EXPORT RRModePtr *RRModesForScreen(ScreenPtr pScreen, int *num_ret);
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync * Initialize mode type
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync */
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsyncextern _X_EXPORT Bool
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync RRModeInit(void);
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync/*
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync * Initialize mode type error value
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync */
d17bffd306255c509aa98e8118e9a5456ee2138evboxsyncextern _X_EXPORT void
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync RRModeInitErrorValue(void);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT int
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync ProcRRCreateMode(ClientPtr client);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT int
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync ProcRRDestroyMode(ClientPtr client);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
d17bffd306255c509aa98e8118e9a5456ee2138evboxsyncextern _X_EXPORT int
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync ProcRRAddOutputMode(ClientPtr client);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT int
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync ProcRRDeleteOutputMode(ClientPtr client);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/* rroutput.c */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Notify the output of some change. configChanged indicates whether
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * any external configuration (mode list, clones, connected status)
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * has changed, or whether the change was strictly internal
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * (which crtc is in use)
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT void
8541678784dbe432feebe6d9c1528525e1771397vboxsync RROutputChanged(RROutputPtr output, Bool configChanged);
8541678784dbe432feebe6d9c1528525e1771397vboxsync
8541678784dbe432feebe6d9c1528525e1771397vboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Create an output
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT RROutputPtr
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncRROutputCreate(ScreenPtr pScreen,
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync const char *name, int nameLength, void *devPrivate);
d17bffd306255c509aa98e8118e9a5456ee2138evboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync/*
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync * Notify extension that output parameters have been changed
be177d2edf33024ee98bf5a84a32615473ac9568vboxsync */
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT Bool
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RROutputSetClones(RROutputPtr output, RROutputPtr * clones, int numClones);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsyncextern _X_EXPORT Bool
be177d2edf33024ee98bf5a84a32615473ac9568vboxsync
be177d2edf33024ee98bf5a84a32615473ac9568vboxsyncRROutputSetModes(RROutputPtr output,
be177d2edf33024ee98bf5a84a32615473ac9568vboxsync RRModePtr * modes, int numModes, int numPreferred);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsyncextern _X_EXPORT int
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync RROutputAddUserMode(RROutputPtr output, RRModePtr mode);
be177d2edf33024ee98bf5a84a32615473ac9568vboxsync
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsyncextern _X_EXPORT int
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync RROutputDeleteUserMode(RROutputPtr output, RRModePtr mode);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT Bool
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync RROutputSetCrtcs(RROutputPtr output, RRCrtcPtr * crtcs, int numCrtcs);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
be177d2edf33024ee98bf5a84a32615473ac9568vboxsyncextern _X_EXPORT Bool
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RROutputSetConnection(RROutputPtr output, CARD8 connection);
72e9ef1022a910facbd4a232500026befd944d95vboxsync
be177d2edf33024ee98bf5a84a32615473ac9568vboxsyncextern _X_EXPORT Bool
be177d2edf33024ee98bf5a84a32615473ac9568vboxsync RROutputSetSubpixelOrder(RROutputPtr output, int subpixelOrder);
be177d2edf33024ee98bf5a84a32615473ac9568vboxsync
be177d2edf33024ee98bf5a84a32615473ac9568vboxsyncextern _X_EXPORT Bool
be177d2edf33024ee98bf5a84a32615473ac9568vboxsync RROutputSetPhysicalSize(RROutputPtr output, int mmWidth, int mmHeight);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT void
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
be177d2edf33024ee98bf5a84a32615473ac9568vboxsyncextern _X_EXPORT void
be177d2edf33024ee98bf5a84a32615473ac9568vboxsync RROutputDestroy(RROutputPtr output);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsyncextern _X_EXPORT int
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync ProcRRGetOutputInfo(ClientPtr client);
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsyncextern _X_EXPORT int
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync ProcRRSetOutputPrimary(ClientPtr client);
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync ProcRRGetOutputPrimary(ClientPtr client);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync/*
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync * Initialize output type
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync */
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsyncextern _X_EXPORT Bool
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync RROutputInit(void);
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync
0ab80a5f847b8c908ee2d9db5cc37da8e8dd5697vboxsync/*
270236340676d2385b27ea992e07fcb643bb78b6vboxsync * Initialize output type error value
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsync */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncextern _X_EXPORT void
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync RROutputInitErrorValue(void);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync/* rrpointer.c */
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT void
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRPointerMoved(ScreenPtr pScreen, int x, int y);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT void
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRPointerScreenConfigured(ScreenPtr pScreen);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync/* rrproperty.c */
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT void
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRDeleteAllOutputProperties(RROutputPtr output);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT RRPropertyValuePtr
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncRRGetOutputProperty(RROutputPtr output, Atom property, Bool pending);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT RRPropertyPtr
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncRRQueryOutputProperty(RROutputPtr output, Atom property);
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT void
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRDeleteOutputProperty(RROutputPtr output, Atom property);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT Bool
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync RRPostPendingProperties(RROutputPtr output);
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsync
c4b8dd273d2becff4145cf4c634b566e2dd633e6vboxsyncextern _X_EXPORT int
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsync
f372af8e6ee2a011213b11cc69f4a29530ff7ce5vboxsyncRRChangeOutputProperty(RROutputPtr output, Atom property, Atom type,
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsync int format, int mode, unsigned long len,
72e9ef1022a910facbd4a232500026befd944d95vboxsync pointer value, Bool sendevent, Bool pending);
72e9ef1022a910facbd4a232500026befd944d95vboxsync
72e9ef1022a910facbd4a232500026befd944d95vboxsyncextern _X_EXPORT int
72e9ef1022a910facbd4a232500026befd944d95vboxsync
72e9ef1022a910facbd4a232500026befd944d95vboxsyncRRConfigureOutputProperty(RROutputPtr output, Atom property,
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync Bool pending, Bool range, Bool immutable,
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync int num_values, INT32 *values);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsyncextern _X_EXPORT int
72e9ef1022a910facbd4a232500026befd944d95vboxsync ProcRRChangeOutputProperty(ClientPtr client);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
72e9ef1022a910facbd4a232500026befd944d95vboxsyncextern _X_EXPORT int
72e9ef1022a910facbd4a232500026befd944d95vboxsync ProcRRGetOutputProperty(ClientPtr client);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsyncextern _X_EXPORT int
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync ProcRRListOutputProperties(ClientPtr client);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
d17bffd306255c509aa98e8118e9a5456ee2138evboxsyncextern _X_EXPORT int
e2ba4c7fd718dba1d5b73cd9e40486df3ce06e77vboxsync ProcRRQueryOutputProperty(ClientPtr client);
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsyncextern _X_EXPORT int
6cd3c708987d8c77397659c5a80ef0eea7ef1fd1vboxsync ProcRRConfigureOutputProperty(ClientPtr client);
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync
e2ba4c7fd718dba1d5b73cd9e40486df3ce06e77vboxsyncextern _X_EXPORT int
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync ProcRRDeleteOutputProperty(ClientPtr client);
e2ba4c7fd718dba1d5b73cd9e40486df3ce06e77vboxsync
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsync/* rrprovider.c */
ca935c7716bd7361d80c27c870d108a8fec80b79vboxsyncextern _X_EXPORT void
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsyncRRProviderInitErrorValue(void);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncProcRRGetProviders(ClientPtr client);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncProcRRGetProviderInfo(ClientPtr client);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncProcRRSetProviderOutputSource(ClientPtr client);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncProcRRSetProviderOffloadSink(ClientPtr client);
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncextern _X_EXPORT Bool
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncRRProviderInit(void);
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncextern _X_EXPORT RRProviderPtr
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncRRProviderCreate(ScreenPtr pScreen, const char *name,
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync int nameLength);
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncextern _X_EXPORT void
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncRRProviderDestroy (RRProviderPtr provider);
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncextern _X_EXPORT void
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncRRProviderSetCapabilities(RRProviderPtr provider, uint32_t capabilities);
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncextern _X_EXPORT Bool
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncRRProviderLookup(XID id, RRProviderPtr *provider_p);
bec4d1c0274e4712fe01426313aab120b5ad1c17vboxsync
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync/* rrproviderproperty.c */
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsync
c6383709c15c809f8cfb09b5cfe670760f06e2b9vboxsyncextern _X_EXPORT void
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRDeleteAllProviderProperties(RRProviderPtr provider);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT RRPropertyValuePtr
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRGetProviderProperty(RRProviderPtr provider, Atom property, Bool pending);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT RRPropertyPtr
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsync RRQueryProviderProperty(RRProviderPtr provider, Atom property);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT void
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsync RRDeleteProviderProperty(RRProviderPtr provider, Atom property);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsyncextern _X_EXPORT int
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsyncRRChangeProviderProperty(RRProviderPtr provider, Atom property, Atom type,
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync int format, int mode, unsigned long len,
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsync pointer value, Bool sendevent, Bool pending);
2fd6ecdd81cabe2dae6f05dd8b5c3c584f03231bvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRConfigureProviderProperty(RRProviderPtr provider, Atom property,
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync Bool pending, Bool range, Bool immutable,
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync int num_values, INT32 *values);
51ef69064b4ea4d571ed129ab883b0c08967c901vboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT Bool
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync RRPostProviderPendingProperties(RRProviderPtr provider);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync ProcRRGetProviderProperty(ClientPtr client);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync ProcRRListProviderProperties(ClientPtr client);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync ProcRRQueryProviderProperty(ClientPtr client);
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsync
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncextern _X_EXPORT int
917f4ee9f101c9786cf09ea0fe7923a7f6dfe40cvboxsyncProcRRConfigureProviderProperty(ClientPtr client);
0cd5b157d7c4708b8ad79e3acd474ac781dfbcf1vboxsync
0cd5b157d7c4708b8ad79e3acd474ac781dfbcf1vboxsyncextern _X_EXPORT int
0cd5b157d7c4708b8ad79e3acd474ac781dfbcf1vboxsyncProcRRChangeProviderProperty(ClientPtr client);
0cd5b157d7c4708b8ad79e3acd474ac781dfbcf1vboxsync
0cd5b157d7c4708b8ad79e3acd474ac781dfbcf1vboxsyncextern _X_EXPORT int
0cd5b157d7c4708b8ad79e3acd474ac781dfbcf1vboxsync ProcRRDeleteProviderProperty(ClientPtr client);
0cd5b157d7c4708b8ad79e3acd474ac781dfbcf1vboxsync/* rrxinerama.c */
54ed927d658674ced4387afbd1877a27cb975a76vboxsync#ifdef XINERAMA
54ed927d658674ced4387afbd1877a27cb975a76vboxsyncextern _X_EXPORT void
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRXineramaExtensionInit(void);
0cd5b157d7c4708b8ad79e3acd474ac781dfbcf1vboxsync#endif
0cd5b157d7c4708b8ad79e3acd474ac781dfbcf1vboxsync
7528d4a15800321b4013826ce35ad184898dba21vboxsync#endif /* _RANDRSTR_H_ */
7528d4a15800321b4013826ce35ad184898dba21vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsync/*
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsyncrandr extension implementation structure
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsyncQuery state:
54ed927d658674ced4387afbd1877a27cb975a76vboxsync ProcRRGetScreenInfo/ProcRRGetScreenResources
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRGetInfo
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsync • Request configuration from driver, either 1.0 or 1.2 style
54ed927d658674ced4387afbd1877a27cb975a76vboxsync • These functions only record state changes, all
54ed927d658674ced4387afbd1877a27cb975a76vboxsync other actions are pended until RRTellChanged is called
7528d4a15800321b4013826ce35ad184898dba21vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsync ->rrGetInfo
7528d4a15800321b4013826ce35ad184898dba21vboxsync 1.0:
7528d4a15800321b4013826ce35ad184898dba21vboxsync RRRegisterSize
7528d4a15800321b4013826ce35ad184898dba21vboxsync RRRegisterRate
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRSetCurrentConfig
7528d4a15800321b4013826ce35ad184898dba21vboxsync 1.2:
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRScreenSetSizeRange
7528d4a15800321b4013826ce35ad184898dba21vboxsync RROutputSetCrtcs
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRModeGet
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RROutputSetModes
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RROutputSetConnection
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RROutputSetSubpixelOrder
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RROutputSetClones
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRCrtcNotify
7528d4a15800321b4013826ce35ad184898dba21vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsync • Must delay scanning configuration until after ->rrGetInfo returns
7528d4a15800321b4013826ce35ad184898dba21vboxsync because some drivers will call SetCurrentConfig in the middle
54ed927d658674ced4387afbd1877a27cb975a76vboxsync of the ->rrGetInfo operation.
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsync 1.0:
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsync • Scan old configuration, mirror to new structures
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
7528d4a15800321b4013826ce35ad184898dba21vboxsync RRScanOldConfig
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRCrtcCreate
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RROutputCreate
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RROutputSetCrtcs
7528d4a15800321b4013826ce35ad184898dba21vboxsync RROutputSetConnection
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RROutputSetSubpixelOrder
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RROldModeAdd • This adds modes one-at-a-time
7528d4a15800321b4013826ce35ad184898dba21vboxsync RRModeGet
7528d4a15800321b4013826ce35ad184898dba21vboxsync RRCrtcNotify
7528d4a15800321b4013826ce35ad184898dba21vboxsync
7528d4a15800321b4013826ce35ad184898dba21vboxsync • send events, reset pointer if necessary
7528d4a15800321b4013826ce35ad184898dba21vboxsync
7528d4a15800321b4013826ce35ad184898dba21vboxsync RRTellChanged
7528d4a15800321b4013826ce35ad184898dba21vboxsync WalkTree (sending events)
7528d4a15800321b4013826ce35ad184898dba21vboxsync
7528d4a15800321b4013826ce35ad184898dba21vboxsync • when layout has changed:
7528d4a15800321b4013826ce35ad184898dba21vboxsync RRPointerScreenConfigured
7528d4a15800321b4013826ce35ad184898dba21vboxsync RRSendConfigNotify
7528d4a15800321b4013826ce35ad184898dba21vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsyncAsynchronous state setting (1.2 only)
54ed927d658674ced4387afbd1877a27cb975a76vboxsync When setting state asynchronously, the driver invokes the
54ed927d658674ced4387afbd1877a27cb975a76vboxsync ->rrGetInfo function and then calls RRTellChanged to flush
54ed927d658674ced4387afbd1877a27cb975a76vboxsync the changes to the clients and reset pointer if necessary
7528d4a15800321b4013826ce35ad184898dba21vboxsync
54ed927d658674ced4387afbd1877a27cb975a76vboxsyncSet state
54ed927d658674ced4387afbd1877a27cb975a76vboxsync
7528d4a15800321b4013826ce35ad184898dba21vboxsync ProcRRSetScreenConfig
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRCrtcSet
54ed927d658674ced4387afbd1877a27cb975a76vboxsync 1.2:
54ed927d658674ced4387afbd1877a27cb975a76vboxsync ->rrCrtcSet
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRCrtcNotify
54ed927d658674ced4387afbd1877a27cb975a76vboxsync 1.0:
54ed927d658674ced4387afbd1877a27cb975a76vboxsync ->rrSetConfig
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRCrtcNotify
54ed927d658674ced4387afbd1877a27cb975a76vboxsync RRTellChanged
7528d4a15800321b4013826ce35ad184898dba21vboxsync */
54ed927d658674ced4387afbd1877a27cb975a76vboxsync