3 * Copyright (c) 1998-2001 by The XFree86 Project, Inc.
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
19 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21 * OTHER DEALINGS IN THE SOFTWARE.
23 * Except as contained in this notice, the name of the copyright holder(s)
24 * and author(s) shall not be used in advertising or otherwise to promote
25 * the sale, use or other dealings in this Software without prior written
26 * authorization from the copyright holder(s) and author(s).
32 #include "scrnintstr.h"
33 #include "regionstr.h"
35 #define FAVOR_AREA_THEN_WIDTH 0
36 #define FAVOR_AREA_THEN_HEIGHT 1
37 #define FAVOR_WIDTH_THEN_AREA 2
38 #define FAVOR_HEIGHT_THEN_AREA 3
40 #define PRIORITY_LOW 0
41 #define PRIORITY_NORMAL 1
42 #define PRIORITY_EXTREME 2
44 typedef struct _FBArea
{
48 void (*MoveAreaCallback
) (struct _FBArea
*, struct _FBArea
*);
49 void (*RemoveAreaCallback
) (struct _FBArea
*);
53 typedef struct _FBLinear
{
58 void (*MoveLinearCallback
) (struct _FBLinear
*, struct _FBLinear
*);
59 void (*RemoveLinearCallback
) (struct _FBLinear
*);
61 } FBLinear
, *FBLinearPtr
;
63 typedef void (*FreeBoxCallbackProcPtr
) (ScreenPtr
, RegionPtr
, pointer
);
64 typedef void (*MoveAreaCallbackProcPtr
) (FBAreaPtr
, FBAreaPtr
);
65 typedef void (*RemoveAreaCallbackProcPtr
) (FBAreaPtr
);
67 typedef void (*MoveLinearCallbackProcPtr
) (FBLinearPtr
, FBLinearPtr
);
68 typedef void (*RemoveLinearCallbackProcPtr
) (FBLinearPtr
);
71 FBAreaPtr(*AllocateOffscreenArea
) (ScreenPtr pScreen
,
74 MoveAreaCallbackProcPtr moveCB
,
75 RemoveAreaCallbackProcPtr removeCB
,
77 void (*FreeOffscreenArea
) (FBAreaPtr area
);
78 Bool (*ResizeOffscreenArea
) (FBAreaPtr area
, int w
, int h
);
79 Bool (*QueryLargestOffscreenArea
) (ScreenPtr pScreen
,
80 int *width
, int *height
,
82 int preferences
, int priority
);
83 Bool (*RegisterFreeBoxCallback
) (ScreenPtr pScreen
,
84 FreeBoxCallbackProcPtr FreeBoxCallback
,
86 /* linear functions */
87 FBLinearPtr(*AllocateOffscreenLinear
) (ScreenPtr pScreen
,
90 MoveLinearCallbackProcPtr moveCB
,
91 RemoveLinearCallbackProcPtr
92 removeCB
, pointer privData
);
93 void (*FreeOffscreenLinear
) (FBLinearPtr area
);
94 Bool (*ResizeOffscreenLinear
) (FBLinearPtr area
, int size
);
95 Bool (*QueryLargestOffscreenLinear
) (ScreenPtr pScreen
,
97 int granularity
, int priority
);
98 Bool (*PurgeOffscreenAreas
) (ScreenPtr
);
99 } FBManagerFuncs
, *FBManagerFuncsPtr
;
101 extern _X_EXPORT Bool
xf86RegisterOffscreenManager(ScreenPtr pScreen
,
102 FBManagerFuncsPtr funcs
);
104 extern _X_EXPORT Bool
105 xf86InitFBManagerRegion(ScreenPtr pScreen
, RegionPtr ScreenRegion
);
107 extern _X_EXPORT Bool
108 xf86InitFBManagerArea(ScreenPtr pScreen
, int PixalArea
, int Verbosity
);
110 extern _X_EXPORT Bool
111 xf86InitFBManager(ScreenPtr pScreen
, BoxPtr FullBox
);
113 extern _X_EXPORT Bool
114 xf86InitFBManagerLinear(ScreenPtr pScreen
, int offset
, int size
);
116 extern _X_EXPORT Bool
117 xf86FBManagerRunning(ScreenPtr pScreen
);
119 extern _X_EXPORT FBAreaPtr
120 xf86AllocateOffscreenArea(ScreenPtr pScreen
,
123 MoveAreaCallbackProcPtr moveCB
,
124 RemoveAreaCallbackProcPtr removeCB
, pointer privData
);
126 extern _X_EXPORT FBAreaPtr
127 xf86AllocateLinearOffscreenArea(ScreenPtr pScreen
,
130 MoveAreaCallbackProcPtr moveCB
,
131 RemoveAreaCallbackProcPtr removeCB
,
134 extern _X_EXPORT FBLinearPtr
135 xf86AllocateOffscreenLinear(ScreenPtr pScreen
,
138 MoveLinearCallbackProcPtr moveCB
,
139 RemoveLinearCallbackProcPtr removeCB
,
142 extern _X_EXPORT
void xf86FreeOffscreenArea(FBAreaPtr area
);
143 extern _X_EXPORT
void xf86FreeOffscreenLinear(FBLinearPtr area
);
145 extern _X_EXPORT Bool
146 xf86ResizeOffscreenArea(FBAreaPtr resize
, int w
, int h
);
148 extern _X_EXPORT Bool
149 xf86ResizeOffscreenLinear(FBLinearPtr resize
, int size
);
151 extern _X_EXPORT Bool
153 xf86RegisterFreeBoxCallback(ScreenPtr pScreen
,
154 FreeBoxCallbackProcPtr FreeBoxCallback
,
157 extern _X_EXPORT Bool
158 xf86PurgeUnlockedOffscreenAreas(ScreenPtr pScreen
);
160 extern _X_EXPORT Bool
162 xf86QueryLargestOffscreenArea(ScreenPtr pScreen
,
163 int *width
, int *height
,
164 int granularity
, int preferences
, int priority
);
166 extern _X_EXPORT Bool
168 xf86QueryLargestOffscreenLinear(ScreenPtr pScreen
,
169 int *size
, int granularity
, int priority
);
171 #endif /* _XF86FBMAN_H */