8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/*
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Copyright (c) 1998-2001 by The XFree86 Project, Inc.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Permission is hereby granted, free of charge, to any person obtaining a
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * copy of this software and associated documentation files (the "Software"),
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * to deal in the Software without restriction, including without limitation
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * and/or sell copies of the Software, and to permit persons to whom the
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Software is furnished to do so, subject to the following conditions:
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * The above copyright notice and this permission notice shall be included in
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * all copies or substantial portions of the Software.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * OTHER DEALINGS IN THE SOFTWARE.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync *
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Except as contained in this notice, the name of the copyright holder(s)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * and author(s) shall not be used in advertising or otherwise to promote
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * the sale, use or other dealings in this Software without prior written
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * authorization from the copyright holder(s) and author(s).
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#ifndef _XF86FBMAN_H
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define _XF86FBMAN_H
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "scrnintstr.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "regionstr.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define FAVOR_AREA_THEN_WIDTH 0
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define FAVOR_AREA_THEN_HEIGHT 1
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define FAVOR_WIDTH_THEN_AREA 2
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define FAVOR_HEIGHT_THEN_AREA 3
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define PRIORITY_LOW 0
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define PRIORITY_NORMAL 1
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define PRIORITY_EXTREME 2
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _FBArea {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync BoxRec box;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*MoveAreaCallback)(struct _FBArea*, struct _FBArea*);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*RemoveAreaCallback)(struct _FBArea*);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DevUnion devPrivate;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} FBArea, *FBAreaPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _FBLinear {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int size;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int offset;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*MoveLinearCallback)(struct _FBLinear*, struct _FBLinear*);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*RemoveLinearCallback)(struct _FBLinear*);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync DevUnion devPrivate;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} FBLinear, *FBLinearPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*FreeBoxCallbackProcPtr)(ScreenPtr, RegionPtr, pointer);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*MoveAreaCallbackProcPtr)(FBAreaPtr, FBAreaPtr);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*RemoveAreaCallbackProcPtr)(FBAreaPtr);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*MoveLinearCallbackProcPtr)(FBLinearPtr, FBLinearPtr);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*RemoveLinearCallbackProcPtr)(FBLinearPtr);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync FBAreaPtr (*AllocateOffscreenArea)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int w, int h,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MoveAreaCallbackProcPtr moveCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RemoveAreaCallbackProcPtr removeCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer privData);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*FreeOffscreenArea)(FBAreaPtr area);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*ResizeOffscreenArea)(FBAreaPtr area, int w, int h);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*QueryLargestOffscreenArea)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int *width, int *height,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int preferences,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int priority);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*RegisterFreeBoxCallback)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync FreeBoxCallbackProcPtr FreeBoxCallback,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer devPriv);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* linear functions */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync FBLinearPtr (*AllocateOffscreenLinear)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int size,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MoveLinearCallbackProcPtr moveCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RemoveLinearCallbackProcPtr removeCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer privData);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*FreeOffscreenLinear)(FBLinearPtr area);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*ResizeOffscreenLinear)(FBLinearPtr area, int size);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*QueryLargestOffscreenLinear)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int *size,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int priority);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool (*PurgeOffscreenAreas) (ScreenPtr);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} FBManagerFuncs, *FBManagerFuncsPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool xf86RegisterOffscreenManager(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync FBManagerFuncsPtr funcs
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86InitFBManagerRegion(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RegionPtr ScreenRegion
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86InitFBManagerArea(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int PixalArea,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int Verbosity
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86InitFBManager(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync BoxPtr FullBox
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86InitFBManagerLinear(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int offset,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int size
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86FBManagerRunning(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT FBAreaPtr
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86AllocateOffscreenArea (
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int w, int h,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MoveAreaCallbackProcPtr moveCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RemoveAreaCallbackProcPtr removeCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer privData
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT FBAreaPtr
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86AllocateLinearOffscreenArea (
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int length,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MoveAreaCallbackProcPtr moveCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RemoveAreaCallbackProcPtr removeCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer privData
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT FBLinearPtr
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86AllocateOffscreenLinear (
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int length,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync MoveLinearCallbackProcPtr moveCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RemoveLinearCallbackProcPtr removeCB,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer privData
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void xf86FreeOffscreenArea(FBAreaPtr area);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void xf86FreeOffscreenLinear(FBLinearPtr area);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86ResizeOffscreenArea(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync FBAreaPtr resize,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int w, int h
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86ResizeOffscreenLinear(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync FBLinearPtr resize,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int size
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86RegisterFreeBoxCallback(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync FreeBoxCallbackProcPtr FreeBoxCallback,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync pointer devPriv
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86PurgeUnlockedOffscreenAreas(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86QueryLargestOffscreenArea(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int *width, int *height,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int preferences,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int priority
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncxf86QueryLargestOffscreenLinear(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScreenPtr pScreen,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int *size,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int granularity,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int priority
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#endif /* _XF86FBMAN_H */