1 /* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86fbman.h,v 1.14 2003/10/09 12:40:54 alanh Exp $ */
4 * Copyright (c) 1998-2001 by The XFree86 Project, Inc.
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 * OTHER DEALINGS IN THE SOFTWARE.
24 * Except as contained in this notice, the name of the copyright holder(s)
25 * and author(s) shall not be used in advertising or otherwise to promote
26 * the sale, use or other dealings in this Software without prior written
27 * authorization from the copyright holder(s) and author(s).
34 #include "scrnintstr.h"
35 #include "regionstr.h"
38 #define FAVOR_AREA_THEN_WIDTH 0
39 #define FAVOR_AREA_THEN_HEIGHT 1
40 #define FAVOR_WIDTH_THEN_AREA 2
41 #define FAVOR_HEIGHT_THEN_AREA 3
43 #define PRIORITY_LOW 0
44 #define PRIORITY_NORMAL 1
45 #define PRIORITY_EXTREME 2
48 typedef struct _FBArea {
52 void (*MoveAreaCallback)(struct _FBArea*, struct _FBArea*);
53 void (*RemoveAreaCallback)(struct _FBArea*);
57 typedef struct _FBLinear {
62 void (*MoveLinearCallback)(struct _FBLinear*, struct _FBLinear*);
63 void (*RemoveLinearCallback)(struct _FBLinear*);
65 } FBLinear, *FBLinearPtr;
67 typedef void (*FreeBoxCallbackProcPtr)(ScreenPtr, RegionPtr, pointer);
68 typedef void (*MoveAreaCallbackProcPtr)(FBAreaPtr, FBAreaPtr);
69 typedef void (*RemoveAreaCallbackProcPtr)(FBAreaPtr);
71 typedef void (*MoveLinearCallbackProcPtr)(FBLinearPtr, FBLinearPtr);
72 typedef void (*RemoveLinearCallbackProcPtr)(FBLinearPtr);
76 FBAreaPtr (*AllocateOffscreenArea)(
80 MoveAreaCallbackProcPtr moveCB,
81 RemoveAreaCallbackProcPtr removeCB,
83 void (*FreeOffscreenArea)(FBAreaPtr area);
84 Bool (*ResizeOffscreenArea)(FBAreaPtr area, int w, int h);
85 Bool (*QueryLargestOffscreenArea)(
87 int *width, int *height,
91 Bool (*RegisterFreeBoxCallback)(
93 FreeBoxCallbackProcPtr FreeBoxCallback,
95 /* linear functions */
96 FBLinearPtr (*AllocateOffscreenLinear)(
100 MoveLinearCallbackProcPtr moveCB,
101 RemoveLinearCallbackProcPtr removeCB,
103 void (*FreeOffscreenLinear)(FBLinearPtr area);
104 Bool (*ResizeOffscreenLinear)(FBLinearPtr area, int size);
105 Bool (*QueryLargestOffscreenLinear)(
110 Bool (*PurgeOffscreenAreas) (ScreenPtr);
111 } FBManagerFuncs, *FBManagerFuncsPtr;
114 Bool xf86RegisterOffscreenManager(
116 FBManagerFuncsPtr funcs
120 xf86InitFBManagerRegion(
122 RegionPtr ScreenRegion
126 xf86InitFBManagerArea(
139 xf86InitFBManagerLinear(
146 xf86FBManagerRunning(
151 xf86AllocateOffscreenArea (
155 MoveAreaCallbackProcPtr moveCB,
156 RemoveAreaCallbackProcPtr removeCB,
161 xf86AllocateLinearOffscreenArea (
165 MoveAreaCallbackProcPtr moveCB,
166 RemoveAreaCallbackProcPtr removeCB,
171 xf86AllocateOffscreenLinear (
175 MoveLinearCallbackProcPtr moveCB,
176 RemoveLinearCallbackProcPtr removeCB,
180 void xf86FreeOffscreenArea(FBAreaPtr area);
181 void xf86FreeOffscreenLinear(FBLinearPtr area);
184 xf86ResizeOffscreenArea(
190 xf86ResizeOffscreenLinear(
197 xf86RegisterFreeBoxCallback(
199 FreeBoxCallbackProcPtr FreeBoxCallback,
204 xf86PurgeUnlockedOffscreenAreas(
210 xf86QueryLargestOffscreenArea(
212 int *width, int *height,
219 xf86QueryLargestOffscreenLinear(
227 #endif /* _XF86FBMAN_H */