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