Change /opt/etc/X11/xkb to /etc/X11/xkb
[profile/ivi/xorg-x11-server.git] / composite / compint.h
1 /*
2  * Copyright © 2006 Sun Microsystems, Inc.  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 <assert.h>
75
76 /*
77  *  enable this for debugging
78  
79     #define COMPOSITE_DEBUG
80  */
81
82 typedef struct _CompClientWindow {
83     struct _CompClientWindow    *next;
84     XID                         id;
85     int                         update;
86 }  CompClientWindowRec, *CompClientWindowPtr;
87
88 typedef struct _CompWindow {
89     RegionRec               borderClip;
90     DamagePtr               damage;     /* for automatic update mode */
91     Bool                    damageRegistered;
92     Bool                    damaged;
93     int                     update;
94     CompClientWindowPtr     clients;
95     int                     oldx;
96     int                     oldy;
97     PixmapPtr               pOldPixmap;
98     int                     borderClipX, borderClipY;
99 } CompWindowRec, *CompWindowPtr;
100
101 #define COMP_ORIGIN_INVALID         0x80000000
102
103 typedef struct _CompSubwindows {
104     int                     update;
105     CompClientWindowPtr     clients;
106 } CompSubwindowsRec, *CompSubwindowsPtr;
107
108 #ifndef COMP_INCLUDE_RGB24_VISUAL
109 #define COMP_INCLUDE_RGB24_VISUAL 0
110 #endif
111
112 typedef struct _CompOverlayClientRec *CompOverlayClientPtr;
113
114 typedef struct _CompOverlayClientRec {
115     CompOverlayClientPtr pNext;  
116     ClientPtr            pClient;
117     ScreenPtr            pScreen;
118     XID                  resource;
119 } CompOverlayClientRec;
120
121 typedef struct _CompScreen {
122     PositionWindowProcPtr       PositionWindow;
123     CopyWindowProcPtr           CopyWindow;
124     CreateWindowProcPtr         CreateWindow;
125     DestroyWindowProcPtr        DestroyWindow;
126     RealizeWindowProcPtr        RealizeWindow;
127     UnrealizeWindowProcPtr      UnrealizeWindow;
128     ClipNotifyProcPtr           ClipNotify;
129     /*
130      * Called from ConfigureWindow, these
131      * three track changes to the offscreen storage
132      * geometry
133      */
134     ConfigNotifyProcPtr         ConfigNotify;
135     MoveWindowProcPtr           MoveWindow;
136     ResizeWindowProcPtr         ResizeWindow;
137     ChangeBorderWidthProcPtr    ChangeBorderWidth;
138     /*
139      * Reparenting has an effect on Subwindows redirect
140      */
141     ReparentWindowProcPtr       ReparentWindow;
142     
143     /*
144      * Colormaps for new visuals better not get installed
145      */
146     InstallColormapProcPtr      InstallColormap;
147
148     /*
149      * Fake backing store via automatic redirection
150      */
151     ChangeWindowAttributesProcPtr ChangeWindowAttributes;
152
153     ScreenBlockHandlerProcPtr   BlockHandler;
154     CloseScreenProcPtr          CloseScreen;
155     Bool                        damaged;
156     int                         numAlternateVisuals;
157     VisualID                    *alternateVisuals;
158
159     WindowPtr                   pOverlayWin;
160     Window                      overlayWid;
161     CompOverlayClientPtr        pOverlayClients;
162     
163 } CompScreenRec, *CompScreenPtr;
164
165 extern DevPrivateKeyRec CompScreenPrivateKeyRec;
166 #define CompScreenPrivateKey (&CompScreenPrivateKeyRec)
167
168 extern DevPrivateKeyRec CompWindowPrivateKeyRec;
169 #define CompWindowPrivateKey (&CompWindowPrivateKeyRec)
170
171 extern DevPrivateKeyRec CompSubwindowsPrivateKeyRec;
172 #define CompSubwindowsPrivateKey (&CompSubwindowsPrivateKeyRec)
173
174 #define GetCompScreen(s) ((CompScreenPtr) \
175     dixLookupPrivate(&(s)->devPrivates, CompScreenPrivateKey))
176 #define GetCompWindow(w) ((CompWindowPtr) \
177     dixLookupPrivate(&(w)->devPrivates, CompWindowPrivateKey))
178 #define GetCompSubwindows(w) ((CompSubwindowsPtr) \
179     dixLookupPrivate(&(w)->devPrivates, CompSubwindowsPrivateKey))
180
181 extern RESTYPE          CompositeClientWindowType;
182 extern RESTYPE          CompositeClientSubwindowsType;
183 extern RESTYPE          CompositeClientOverlayType;
184
185 /*
186  * compalloc.c
187  */
188
189 Bool
190 compRedirectWindow (ClientPtr pClient, WindowPtr pWin, int update);
191
192 void
193 compFreeClientWindow (WindowPtr pWin, XID id);
194
195 int
196 compUnredirectWindow (ClientPtr pClient, WindowPtr pWin, int update);
197
198 int
199 compRedirectSubwindows (ClientPtr pClient, WindowPtr pWin, int update);
200
201 void
202 compFreeClientSubwindows (WindowPtr pWin, XID id);
203
204 int
205 compUnredirectSubwindows (ClientPtr pClient, WindowPtr pWin, int update);
206
207 int
208 compRedirectOneSubwindow (WindowPtr pParent, WindowPtr pWin);
209
210 int
211 compUnredirectOneSubwindow (WindowPtr pParent, WindowPtr pWin);
212
213 Bool
214 compAllocPixmap (WindowPtr pWin);
215
216 void
217 compFreePixmap (WindowPtr pWin);
218
219 Bool
220 compReallocPixmap (WindowPtr pWin, int x, int y,
221                    unsigned int w, unsigned int h, int bw);
222
223 /*
224  * compext.c
225  */
226
227 void
228 CompositeExtensionInit (void);
229
230 /*
231  * compinit.c
232  */
233
234 Bool
235 compScreenInit (ScreenPtr pScreen);
236
237 /*
238  * compoverlay.c
239  */
240
241 void
242 compFreeOverlayClient (CompOverlayClientPtr pOcToDel);
243
244 CompOverlayClientPtr
245 compFindOverlayClient (ScreenPtr pScreen, ClientPtr pClient);
246     
247 CompOverlayClientPtr
248 compCreateOverlayClient (ScreenPtr pScreen, ClientPtr pClient);
249
250 Bool
251 compCreateOverlayWindow (ScreenPtr pScreen);
252
253 void
254 compDestroyOverlayWindow (ScreenPtr pScreen);
255
256 /*
257  * compwindow.c
258  */
259
260 #ifdef COMPOSITE_DEBUG
261 void
262 compCheckTree (ScreenPtr pScreen);
263 #else
264 #define compCheckTree(s)
265 #endif
266
267 PictFormatPtr
268 compWindowFormat (WindowPtr pWin);
269
270 void
271 compSetPixmap (WindowPtr pWin, PixmapPtr pPixmap);
272
273 Bool
274 compCheckRedirect (WindowPtr pWin);
275
276 Bool
277 compPositionWindow (WindowPtr pWin, int x, int y);
278
279 Bool
280 compRealizeWindow (WindowPtr pWin);
281
282 Bool
283 compUnrealizeWindow (WindowPtr pWin);
284
285 void
286 compClipNotify (WindowPtr pWin, int dx, int dy);
287
288 void
289 compMoveWindow (WindowPtr pWin, int x, int y, WindowPtr pSib, VTKind kind);
290
291 void
292 compResizeWindow (WindowPtr pWin, int x, int y,
293                   unsigned int w, unsigned int h, WindowPtr pSib);
294
295 void
296 compChangeBorderWidth (WindowPtr pWin, unsigned int border_width);
297
298 void
299 compReparentWindow (WindowPtr pWin, WindowPtr pPriorParent);
300
301 Bool
302 compCreateWindow (WindowPtr pWin);
303
304 Bool
305 compDestroyWindow (WindowPtr pWin);
306
307 void
308 compSetRedirectBorderClip (WindowPtr pWin, RegionPtr pRegion);
309
310 RegionPtr
311 compGetRedirectBorderClip (WindowPtr pWin);
312
313 void
314 compCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
315
316 void
317 compWindowUpdate (WindowPtr pWin);
318
319 WindowPtr
320 CompositeRealChildHead (WindowPtr pWin);
321
322 int
323 DeleteWindowNoInputDevices(pointer value, XID wid);
324
325 int
326 compConfigNotify(WindowPtr pWin, int x, int y, int w, int h,
327                  int bw, WindowPtr pSib);
328
329 #endif /* _COMPINT_H_ */