VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/xorg-server-1.17.1/compint.h@ 87454

Last change on this file since 87454 was 54163, checked in by vboxsync, 10 years ago

Additions/x11/vboxvideo: support X.Org Server 1.17 (still untested).

  • Property svn:eol-style set to native
File size: 8.8 KB
Line 
1/*
2 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
22 *
23 * Copyright © 2003 Keith Packard
24 *
25 * Permission to use, copy, modify, distribute, and sell this software and its
26 * documentation for any purpose is hereby granted without fee, provided that
27 * the above copyright notice appear in all copies and that both that
28 * copyright notice and this permission notice appear in supporting
29 * documentation, and that the name of Keith Packard not be used in
30 * advertising or publicity pertaining to distribution of the software without
31 * specific, written prior permission. Keith Packard makes no
32 * representations about the suitability of this software for any purpose. It
33 * is provided "as is" without express or implied warranty.
34 *
35 * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
36 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
37 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
38 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
39 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
40 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
41 * PERFORMANCE OF THIS SOFTWARE.
42 */
43
44#ifdef HAVE_DIX_CONFIG_H
45#include <dix-config.h>
46#endif
47
48#ifndef _COMPINT_H_
49#define _COMPINT_H_
50
51#include "misc.h"
52#include "scrnintstr.h"
53#include "os.h"
54#include "regionstr.h"
55#include "validate.h"
56#include "windowstr.h"
57#include "input.h"
58#include "resource.h"
59#include "colormapst.h"
60#include "cursorstr.h"
61#include "dixstruct.h"
62#include "gcstruct.h"
63#include "servermd.h"
64#include "dixevents.h"
65#include "globals.h"
66#include "picturestr.h"
67#include "extnsionst.h"
68#include "privates.h"
69#include "mi.h"
70#include "damage.h"
71#include "damageextint.h"
72#include "xfixes.h"
73#include <X11/extensions/compositeproto.h>
74#include "compositeext.h"
75#include <assert.h>
76
77/*
78 * enable this for debugging
79
80 #define COMPOSITE_DEBUG
81 */
82
83typedef struct _CompClientWindow {
84 struct _CompClientWindow *next;
85 XID id;
86 int update;
87} CompClientWindowRec, *CompClientWindowPtr;
88
89typedef struct _CompWindow {
90 RegionRec borderClip;
91 DamagePtr damage; /* for automatic update mode */
92 Bool damageRegistered;
93 Bool damaged;
94 int update;
95 CompClientWindowPtr clients;
96 int oldx;
97 int oldy;
98 PixmapPtr pOldPixmap;
99 int borderClipX, borderClipY;
100} CompWindowRec, *CompWindowPtr;
101
102#define COMP_ORIGIN_INVALID 0x80000000
103
104typedef struct _CompSubwindows {
105 int update;
106 CompClientWindowPtr clients;
107} CompSubwindowsRec, *CompSubwindowsPtr;
108
109#ifndef COMP_INCLUDE_RGB24_VISUAL
110#define COMP_INCLUDE_RGB24_VISUAL 0
111#endif
112
113typedef struct _CompOverlayClientRec *CompOverlayClientPtr;
114
115typedef struct _CompOverlayClientRec {
116 CompOverlayClientPtr pNext;
117 ClientPtr pClient;
118 ScreenPtr pScreen;
119 XID resource;
120} CompOverlayClientRec;
121
122typedef struct _CompImplicitRedirectException {
123 XID parentVisual;
124 XID winVisual;
125} CompImplicitRedirectException;
126
127typedef struct _CompScreen {
128 PositionWindowProcPtr PositionWindow;
129 CopyWindowProcPtr CopyWindow;
130 CreateWindowProcPtr CreateWindow;
131 DestroyWindowProcPtr DestroyWindow;
132 RealizeWindowProcPtr RealizeWindow;
133 UnrealizeWindowProcPtr UnrealizeWindow;
134 ClipNotifyProcPtr ClipNotify;
135 /*
136 * Called from ConfigureWindow, these
137 * three track changes to the offscreen storage
138 * geometry
139 */
140 ConfigNotifyProcPtr ConfigNotify;
141 MoveWindowProcPtr MoveWindow;
142 ResizeWindowProcPtr ResizeWindow;
143 ChangeBorderWidthProcPtr ChangeBorderWidth;
144 /*
145 * Reparenting has an effect on Subwindows redirect
146 */
147 ReparentWindowProcPtr ReparentWindow;
148
149 /*
150 * Colormaps for new visuals better not get installed
151 */
152 InstallColormapProcPtr InstallColormap;
153
154 /*
155 * Fake backing store via automatic redirection
156 */
157 ChangeWindowAttributesProcPtr ChangeWindowAttributes;
158
159 ScreenBlockHandlerProcPtr BlockHandler;
160 CloseScreenProcPtr CloseScreen;
161 int numAlternateVisuals;
162 VisualID *alternateVisuals;
163 int numImplicitRedirectExceptions;
164 CompImplicitRedirectException *implicitRedirectExceptions;
165
166 WindowPtr pOverlayWin;
167 Window overlayWid;
168 CompOverlayClientPtr pOverlayClients;
169
170 GetImageProcPtr GetImage;
171 GetSpansProcPtr GetSpans;
172 SourceValidateProcPtr SourceValidate;
173} CompScreenRec, *CompScreenPtr;
174
175extern DevPrivateKeyRec CompScreenPrivateKeyRec;
176
177#define CompScreenPrivateKey (&CompScreenPrivateKeyRec)
178
179extern DevPrivateKeyRec CompWindowPrivateKeyRec;
180
181#define CompWindowPrivateKey (&CompWindowPrivateKeyRec)
182
183extern DevPrivateKeyRec CompSubwindowsPrivateKeyRec;
184
185#define CompSubwindowsPrivateKey (&CompSubwindowsPrivateKeyRec)
186
187#define GetCompScreen(s) ((CompScreenPtr) \
188 dixLookupPrivate(&(s)->devPrivates, CompScreenPrivateKey))
189#define GetCompWindow(w) ((CompWindowPtr) \
190 dixLookupPrivate(&(w)->devPrivates, CompWindowPrivateKey))
191#define GetCompSubwindows(w) ((CompSubwindowsPtr) \
192 dixLookupPrivate(&(w)->devPrivates, CompSubwindowsPrivateKey))
193
194extern RESTYPE CompositeClientSubwindowsType;
195extern RESTYPE CompositeClientOverlayType;
196
197/*
198 * compalloc.c
199 */
200
201Bool
202 compRedirectWindow(ClientPtr pClient, WindowPtr pWin, int update);
203
204void
205 compFreeClientWindow(WindowPtr pWin, XID id);
206
207int
208 compUnredirectWindow(ClientPtr pClient, WindowPtr pWin, int update);
209
210int
211 compRedirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update);
212
213void
214 compFreeClientSubwindows(WindowPtr pWin, XID id);
215
216int
217 compUnredirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update);
218
219int
220 compRedirectOneSubwindow(WindowPtr pParent, WindowPtr pWin);
221
222int
223 compUnredirectOneSubwindow(WindowPtr pParent, WindowPtr pWin);
224
225Bool
226 compAllocPixmap(WindowPtr pWin);
227
228void
229 compSetParentPixmap(WindowPtr pWin);
230
231void
232 compRestoreWindow(WindowPtr pWin, PixmapPtr pPixmap);
233
234Bool
235
236compReallocPixmap(WindowPtr pWin, int x, int y,
237 unsigned int w, unsigned int h, int bw);
238
239/*
240 * compinit.c
241 */
242
243Bool
244 compScreenInit(ScreenPtr pScreen);
245
246/*
247 * compoverlay.c
248 */
249
250void
251 compFreeOverlayClient(CompOverlayClientPtr pOcToDel);
252
253CompOverlayClientPtr
254compFindOverlayClient(ScreenPtr pScreen, ClientPtr pClient);
255
256CompOverlayClientPtr
257compCreateOverlayClient(ScreenPtr pScreen, ClientPtr pClient);
258
259Bool
260 compCreateOverlayWindow(ScreenPtr pScreen);
261
262void
263 compDestroyOverlayWindow(ScreenPtr pScreen);
264
265/*
266 * compwindow.c
267 */
268
269#ifdef COMPOSITE_DEBUG
270void
271 compCheckTree(ScreenPtr pScreen);
272#else
273#define compCheckTree(s)
274#endif
275
276void
277 compSetPixmap(WindowPtr pWin, PixmapPtr pPixmap);
278
279Bool
280 compCheckRedirect(WindowPtr pWin);
281
282Bool
283 compPositionWindow(WindowPtr pWin, int x, int y);
284
285Bool
286 compRealizeWindow(WindowPtr pWin);
287
288Bool
289 compUnrealizeWindow(WindowPtr pWin);
290
291void
292 compClipNotify(WindowPtr pWin, int dx, int dy);
293
294void
295 compMoveWindow(WindowPtr pWin, int x, int y, WindowPtr pSib, VTKind kind);
296
297void
298
299compResizeWindow(WindowPtr pWin, int x, int y,
300 unsigned int w, unsigned int h, WindowPtr pSib);
301
302void
303 compChangeBorderWidth(WindowPtr pWin, unsigned int border_width);
304
305void
306 compReparentWindow(WindowPtr pWin, WindowPtr pPriorParent);
307
308Bool
309 compCreateWindow(WindowPtr pWin);
310
311Bool
312 compDestroyWindow(WindowPtr pWin);
313
314void
315 compSetRedirectBorderClip(WindowPtr pWin, RegionPtr pRegion);
316
317RegionPtr
318 compGetRedirectBorderClip(WindowPtr pWin);
319
320void
321 compCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
322
323void
324 compPaintChildrenToWindow(WindowPtr pWin);
325
326WindowPtr
327 CompositeRealChildHead(WindowPtr pWin);
328
329int
330 DeleteWindowNoInputDevices(void *value, XID wid);
331
332int
333
334compConfigNotify(WindowPtr pWin, int x, int y, int w, int h,
335 int bw, WindowPtr pSib);
336
337void PanoramiXCompositeInit(void);
338void PanoramiXCompositeReset(void);
339
340#endif /* _COMPINT_H_ */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette