b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * $XFree86: xc/programs/Xserver/randr/randrstr.h,v 1.5 2002/09/29 23:39:45 keithp Exp $
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Copyright © 2000 Compaq Computer Corporation
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * documentation for any purpose is hereby granted without fee, provided that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * the above copyright notice appear in all copies and that both that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * copyright notice and this permission notice appear in supporting
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * documentation, and that the name of Compaq not be used in
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * advertising or publicity pertaining to distribution of the software without
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * specific, written prior permission. Compaq makes no
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * representations about the suitability of this software for any purpose. It
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * is provided "as is" without express or implied warranty.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * COMPAQ DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * EVENT SHALL COMPAQ BE LIABLE FOR ANY SPECIAL, INDIRECT OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * PERFORMANCE OF THIS SOFTWARE.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef HAVE_DIX_CONFIG_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <dix-config.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef _RANDRSTR_H_
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define _RANDRSTR_H_
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <X11/extensions/randr.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _rrScreenRate {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int rate;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool referenced;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool oldReferenced;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} RRScreenRate, *RRScreenRatePtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _rrScreenSize {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int id;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync short width, height;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync short mmWidth, mmHeight;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRScreenRatePtr pRates;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int nRates;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int nRatesInUse;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool referenced;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool oldReferenced;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} RRScreenSize, *RRScreenSizePtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Rotation rotation,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int rate,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRScreenSizePtr pSize);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation *rotations);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef Bool (*RRCloseScreenProcPtr) ( int i, ScreenPtr pscreen);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _rrScrPriv {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRSetConfigProcPtr rrSetConfig;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRGetInfoProcPtr rrGetInfo;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync TimeStamp lastSetTime; /* last changed by client */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync TimeStamp lastConfigTime; /* possible configs changed */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRCloseScreenProcPtr CloseScreen;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync /*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Configuration information
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Rotation rotations;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int nSizes;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int nSizesInUse;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRScreenSizePtr pSizes;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync /*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Current state
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Rotation rotation;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int size;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int rate;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} rrScrPrivRec, *rrScrPrivPtr;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncextern int rrPrivIndex;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define rrGetScrPriv(pScr) ((rrScrPrivPtr) (pScr)->devPrivates[rrPrivIndex].ptr)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define rrScrPriv(pScr) rrScrPrivPtr pScrPriv = rrGetScrPriv(pScr)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SetRRScreen(s,p) ((s)->devPrivates[rrPrivIndex].ptr = (pointer) (p))
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* Initialize the extension */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncRRExtensionInit (void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Then, register the specific size with the screen
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncRRScreenSizePtr
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncRRRegisterSize (ScreenPtr pScreen,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync short width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync short height,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync short mmWidth,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync short mmHeight);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool RRRegisterRate (ScreenPtr pScreen,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRScreenSizePtr pSize,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int rate);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Finally, set the current configuration of the screen
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncRRSetCurrentConfig (ScreenPtr pScreen,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Rotation rotation,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int rate,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRScreenSizePtr pSize);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool RRScreenInit(ScreenPtr pScreen);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncint
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncRRSetScreenConfig (ScreenPtr pScreen,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Rotation rotation,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int rate,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRScreenSizePtr pSize);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncmiRandRInit (ScreenPtr pScreen);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncmiRRGetInfo (ScreenPtr pScreen, Rotation *rotations);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncmiRRSetConfig (ScreenPtr pScreen,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Rotation rotation,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int rate,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RRScreenSizePtr size);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncmiRRGetScreenInfo (ScreenPtr pScreen);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif /* _RANDRSTR_H_ */