03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Copyright 2003-2004 Red Hat Inc., Durham, North Carolina.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * All Rights Reserved.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Permission is hereby granted, free of charge, to any person obtaining
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * a copy of this software and associated documentation files (the
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * "Software"), to deal in the Software without restriction, including
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * without limitation on the rights to use, copy, modify, merge,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * publish, distribute, sublicense, and/or sell copies of the Software,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * and to permit persons to whom the Software is furnished to do so,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * subject to the following conditions:
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * The above copyright notice and this permission notice (including the
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * next paragraph) shall be included in all copies or substantial
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * portions of the Software.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * SOFTWARE.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Author:
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Rickard E. (Rik) Faith <faith@redhat.com>
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Kevin E. Martin <kem@redhat.com>
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/** \file
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Interface for DMX extension support. These routines are called by
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * function in Xserver/Xext/dmx.c. \see dmxextension.c */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#ifndef _DMXEXTENSION_H_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define _DMXEXTENSION_H_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/** Screen attributes. Used by #ProcDMXGetScreenAttributes and
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * \a ProcDMXChangeScreensAttributes. */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync const char *displayName;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int logicalScreen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned int screenWindowWidth; /* displayName's coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned int screenWindowHeight; /* displayName's coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int screenWindowXoffset; /* displayName's coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int screenWindowYoffset; /* displayName's coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned int rootWindowWidth; /* screenWindow's coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned int rootWindowHeight; /* screenWindow's coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int rootWindowXoffset; /* screenWindow's coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int rootWindowYoffset; /* screenWindow's coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int rootWindowXorigin; /* global coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int rootWindowYorigin; /* global coordinate system */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} DMXScreenAttributesRec, *DMXScreenAttributesPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/** Window attributes. Used by #ProcDMXGetWindowAttributes. */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int screen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync Window window;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xRectangle pos;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xRectangle vis;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} DMXWindowAttributesRec, *DMXWindowAttributesPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/** Desktop attributes. Used by #ProcDMXGetDesktopAttributes and
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * #ProcDMXChangeDesktopAttributes. */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int width;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int height;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int shiftX;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int shiftY;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} DMXDesktopAttributesRec, *DMXDesktopAttributesPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/** Input attributes. Used by #ProcDMXGetInputAttributes. */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync const char *name;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int inputType;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int physicalScreen;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int physicalId;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int isCore;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int sendsCore;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int detached;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} DMXInputAttributesRec, *DMXInputAttributesPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern unsigned long dmxGetNumScreens(void);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern void dmxForceWindowCreation(WindowPtr pWindow);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern void dmxFlushPendingSyncs(void);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern Bool dmxGetScreenAttributes(int physical, DMXScreenAttributesPtr attr);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern Bool dmxGetWindowAttributes(WindowPtr pWindow,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DMXWindowAttributesPtr attr);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern void dmxGetDesktopAttributes(DMXDesktopAttributesPtr attr);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern int dmxGetInputCount(void);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern int dmxGetInputAttributes(int deviceId, DMXInputAttributesPtr attr);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern int dmxAddInput(DMXInputAttributesPtr attr, int *deviceId);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern int dmxRemoveInput(int deviceId);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern int dmxConfigureScreenWindows(int nscreens,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 *screens,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DMXScreenAttributesPtr attribs,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int *errorScreen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern int dmxConfigureDesktop(DMXDesktopAttributesPtr attribs);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/* dmxUpdateScreenResources exposed for dmxCreateWindow in dmxwindow.c */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern void dmxUpdateScreenResources(ScreenPtr pScreen,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int x, int y, int w, int h);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern int dmxAttachScreen(int idx, DMXScreenAttributesPtr attr);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern int dmxDetachScreen(int idx);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#endif