diff options
Diffstat (limited to 'xorg-server/composite/compint.h')
-rw-r--r-- | xorg-server/composite/compint.h | 633 |
1 files changed, 314 insertions, 319 deletions
diff --git a/xorg-server/composite/compint.h b/xorg-server/composite/compint.h index 845a196f6..e02d22c6b 100644 --- a/xorg-server/composite/compint.h +++ b/xorg-server/composite/compint.h @@ -1,319 +1,314 @@ -/* - * Copyright © 2006 Sun Microsystems, Inc. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Copyright © 2003 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#ifndef _COMPINT_H_ -#define _COMPINT_H_ - -#include "misc.h" -#include "scrnintstr.h" -#include "os.h" -#include "regionstr.h" -#include "validate.h" -#include "windowstr.h" -#include "input.h" -#include "resource.h" -#include "colormapst.h" -#include "cursorstr.h" -#include "dixstruct.h" -#include "gcstruct.h" -#include "servermd.h" -#include "dixevents.h" -#include "globals.h" -#include "picturestr.h" -#include "extnsionst.h" -#include "privates.h" -#include "mi.h" -#include "damage.h" -#include "damageextint.h" -#include "xfixes.h" -#include <X11/extensions/compositeproto.h> -#include <assert.h> - -/* - * enable this for debugging - - #define COMPOSITE_DEBUG - */ - -typedef struct _CompClientWindow { - struct _CompClientWindow *next; - XID id; - int update; -} CompClientWindowRec, *CompClientWindowPtr; - -typedef struct _CompWindow { - RegionRec borderClip; - DamagePtr damage; /* for automatic update mode */ - Bool damageRegistered; - Bool damaged; - int update; - CompClientWindowPtr clients; - int oldx; - int oldy; - PixmapPtr pOldPixmap; - int borderClipX, borderClipY; -} CompWindowRec, *CompWindowPtr; - -#define COMP_ORIGIN_INVALID 0x80000000 - -typedef struct _CompSubwindows { - int update; - CompClientWindowPtr clients; -} CompSubwindowsRec, *CompSubwindowsPtr; - -#ifndef COMP_INCLUDE_RGB24_VISUAL -#define COMP_INCLUDE_RGB24_VISUAL 0 -#endif - -typedef struct _CompOverlayClientRec *CompOverlayClientPtr; - -typedef struct _CompOverlayClientRec { - CompOverlayClientPtr pNext; - ClientPtr pClient; - ScreenPtr pScreen; - XID resource; -} CompOverlayClientRec; - -typedef struct _CompScreen { - PositionWindowProcPtr PositionWindow; - CopyWindowProcPtr CopyWindow; - CreateWindowProcPtr CreateWindow; - DestroyWindowProcPtr DestroyWindow; - RealizeWindowProcPtr RealizeWindow; - UnrealizeWindowProcPtr UnrealizeWindow; - ClipNotifyProcPtr ClipNotify; - /* - * Called from ConfigureWindow, these - * three track changes to the offscreen storage - * geometry - */ - MoveWindowProcPtr MoveWindow; - ResizeWindowProcPtr ResizeWindow; - ChangeBorderWidthProcPtr ChangeBorderWidth; - /* - * Reparenting has an effect on Subwindows redirect - */ - ReparentWindowProcPtr ReparentWindow; - - /* - * Colormaps for new visuals better not get installed - */ - InstallColormapProcPtr InstallColormap; - - /* - * Fake backing store via automatic redirection - */ - ChangeWindowAttributesProcPtr ChangeWindowAttributes; - - ScreenBlockHandlerProcPtr BlockHandler; - CloseScreenProcPtr CloseScreen; - Bool damaged; - int numAlternateVisuals; - VisualID *alternateVisuals; - - WindowPtr pOverlayWin; - Window overlayWid; - CompOverlayClientPtr pOverlayClients; - -} CompScreenRec, *CompScreenPtr; - -extern DevPrivateKey CompScreenPrivateKey; -extern DevPrivateKey CompWindowPrivateKey; -extern DevPrivateKey CompSubwindowsPrivateKey; - -#define GetCompScreen(s) ((CompScreenPtr) \ - dixLookupPrivate(&(s)->devPrivates, CompScreenPrivateKey)) -#define GetCompWindow(w) ((CompWindowPtr) \ - dixLookupPrivate(&(w)->devPrivates, CompWindowPrivateKey)) -#define GetCompSubwindows(w) ((CompSubwindowsPtr) \ - dixLookupPrivate(&(w)->devPrivates, CompSubwindowsPrivateKey)) - -extern RESTYPE CompositeClientWindowType; -extern RESTYPE CompositeClientSubwindowsType; -extern RESTYPE CompositeClientOverlayType; - -/* - * compalloc.c - */ - -Bool -compRedirectWindow (ClientPtr pClient, WindowPtr pWin, int update); - -void -compFreeClientWindow (WindowPtr pWin, XID id); - -int -compUnredirectWindow (ClientPtr pClient, WindowPtr pWin, int update); - -int -compRedirectSubwindows (ClientPtr pClient, WindowPtr pWin, int update); - -void -compFreeClientSubwindows (WindowPtr pWin, XID id); - -int -compUnredirectSubwindows (ClientPtr pClient, WindowPtr pWin, int update); - -int -compRedirectOneSubwindow (WindowPtr pParent, WindowPtr pWin); - -int -compUnredirectOneSubwindow (WindowPtr pParent, WindowPtr pWin); - -Bool -compAllocPixmap (WindowPtr pWin); - -void -compFreePixmap (WindowPtr pWin); - -Bool -compReallocPixmap (WindowPtr pWin, int x, int y, - unsigned int w, unsigned int h, int bw); - -/* - * compext.c - */ - -void -CompositeExtensionInit (void); - -/* - * compinit.c - */ - -Bool -compScreenInit (ScreenPtr pScreen); - -/* - * compoverlay.c - */ - -void -compFreeOverlayClient (CompOverlayClientPtr pOcToDel); - -CompOverlayClientPtr -compFindOverlayClient (ScreenPtr pScreen, ClientPtr pClient); - -CompOverlayClientPtr -compCreateOverlayClient (ScreenPtr pScreen, ClientPtr pClient); - -Bool -compCreateOverlayWindow (ScreenPtr pScreen); - -void -compDestroyOverlayWindow (ScreenPtr pScreen); - -/* - * compwindow.c - */ - -#ifdef COMPOSITE_DEBUG -void -compCheckTree (ScreenPtr pScreen); -#else -#define compCheckTree(s) -#endif - -PictFormatPtr -compWindowFormat (WindowPtr pWin); - -void -compSetPixmap (WindowPtr pWin, PixmapPtr pPixmap); - -Bool -compCheckRedirect (WindowPtr pWin); - -Bool -compPositionWindow (WindowPtr pWin, int x, int y); - -Bool -compRealizeWindow (WindowPtr pWin); - -Bool -compUnrealizeWindow (WindowPtr pWin); - -void -compClipNotify (WindowPtr pWin, int dx, int dy); - -void -compMoveWindow (WindowPtr pWin, int x, int y, WindowPtr pSib, VTKind kind); - -void -compResizeWindow (WindowPtr pWin, int x, int y, - unsigned int w, unsigned int h, WindowPtr pSib); - -void -compChangeBorderWidth (WindowPtr pWin, unsigned int border_width); - -void -compReparentWindow (WindowPtr pWin, WindowPtr pPriorParent); - -Bool -compCreateWindow (WindowPtr pWin); - -Bool -compDestroyWindow (WindowPtr pWin); - -void -compSetRedirectBorderClip (WindowPtr pWin, RegionPtr pRegion); - -RegionPtr -compGetRedirectBorderClip (WindowPtr pWin); - -void -compCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc); - -void -compWindowUpdate (WindowPtr pWin); - -WindowPtr -CompositeRealChildHead (WindowPtr pWin); - -int -DeleteWindowNoInputDevices(pointer value, XID wid); - -#endif /* _COMPINT_H_ */ +/*
+ * Copyright © 2006 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Copyright © 2003 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#ifndef _COMPINT_H_
+#define _COMPINT_H_
+
+#include "misc.h"
+#include "scrnintstr.h"
+#include "os.h"
+#include "regionstr.h"
+#include "validate.h"
+#include "windowstr.h"
+#include "input.h"
+#include "resource.h"
+#include "colormapst.h"
+#include "cursorstr.h"
+#include "dixstruct.h"
+#include "gcstruct.h"
+#include "servermd.h"
+#include "dixevents.h"
+#include "globals.h"
+#include "picturestr.h"
+#include "extnsionst.h"
+#include "privates.h"
+#include "mi.h"
+#include "damage.h"
+#include "damageextint.h"
+#include "xfixes.h"
+#include <X11/extensions/compositeproto.h>
+#include <assert.h>
+
+/*
+ * enable this for debugging
+
+ #define COMPOSITE_DEBUG
+ */
+
+typedef struct _CompClientWindow {
+ struct _CompClientWindow *next;
+ XID id;
+ int update;
+} CompClientWindowRec, *CompClientWindowPtr;
+
+typedef struct _CompWindow {
+ RegionRec borderClip;
+ DamagePtr damage; /* for automatic update mode */
+ Bool damageRegistered;
+ Bool damaged;
+ int update;
+ CompClientWindowPtr clients;
+ int oldx;
+ int oldy;
+ PixmapPtr pOldPixmap;
+ int borderClipX, borderClipY;
+} CompWindowRec, *CompWindowPtr;
+
+#define COMP_ORIGIN_INVALID 0x80000000
+
+typedef struct _CompSubwindows {
+ int update;
+ CompClientWindowPtr clients;
+} CompSubwindowsRec, *CompSubwindowsPtr;
+
+#ifndef COMP_INCLUDE_RGB24_VISUAL
+#define COMP_INCLUDE_RGB24_VISUAL 0
+#endif
+
+typedef struct _CompOverlayClientRec *CompOverlayClientPtr;
+
+typedef struct _CompOverlayClientRec {
+ CompOverlayClientPtr pNext;
+ ClientPtr pClient;
+ ScreenPtr pScreen;
+ XID resource;
+} CompOverlayClientRec;
+
+typedef struct _CompScreen {
+ PositionWindowProcPtr PositionWindow;
+ CopyWindowProcPtr CopyWindow;
+ CreateWindowProcPtr CreateWindow;
+ DestroyWindowProcPtr DestroyWindow;
+ RealizeWindowProcPtr RealizeWindow;
+ UnrealizeWindowProcPtr UnrealizeWindow;
+ ClipNotifyProcPtr ClipNotify;
+ /*
+ * Called from ConfigureWindow.
+ */
+ ConfigNotifyProcPtr ConfigNotify;
+ /*
+ * Reparenting has an effect on Subwindows redirect
+ */
+ ReparentWindowProcPtr ReparentWindow;
+
+ /*
+ * Colormaps for new visuals better not get installed
+ */
+ InstallColormapProcPtr InstallColormap;
+
+ /*
+ * Fake backing store via automatic redirection
+ */
+ ChangeWindowAttributesProcPtr ChangeWindowAttributes;
+
+ ScreenBlockHandlerProcPtr BlockHandler;
+ CloseScreenProcPtr CloseScreen;
+ Bool damaged;
+ int numAlternateVisuals;
+ VisualID *alternateVisuals;
+
+ WindowPtr pOverlayWin;
+ Window overlayWid;
+ CompOverlayClientPtr pOverlayClients;
+
+} CompScreenRec, *CompScreenPtr;
+
+extern DevPrivateKeyRec CompScreenPrivateKeyRec;
+#define CompScreenPrivateKey (&CompScreenPrivateKeyRec)
+
+extern DevPrivateKeyRec CompWindowPrivateKeyRec;
+#define CompWindowPrivateKey (&CompWindowPrivateKeyRec)
+
+extern DevPrivateKeyRec CompSubwindowsPrivateKeyRec;
+#define CompSubwindowsPrivateKey (&CompSubwindowsPrivateKeyRec)
+
+#define GetCompScreen(s) ((CompScreenPtr) \
+ dixLookupPrivate(&(s)->devPrivates, CompScreenPrivateKey))
+#define GetCompWindow(w) ((CompWindowPtr) \
+ dixLookupPrivate(&(w)->devPrivates, CompWindowPrivateKey))
+#define GetCompSubwindows(w) ((CompSubwindowsPtr) \
+ dixLookupPrivate(&(w)->devPrivates, CompSubwindowsPrivateKey))
+
+extern RESTYPE CompositeClientWindowType;
+extern RESTYPE CompositeClientSubwindowsType;
+extern RESTYPE CompositeClientOverlayType;
+
+/*
+ * compalloc.c
+ */
+
+Bool
+compRedirectWindow (ClientPtr pClient, WindowPtr pWin, int update);
+
+void
+compFreeClientWindow (WindowPtr pWin, XID id);
+
+int
+compUnredirectWindow (ClientPtr pClient, WindowPtr pWin, int update);
+
+int
+compRedirectSubwindows (ClientPtr pClient, WindowPtr pWin, int update);
+
+void
+compFreeClientSubwindows (WindowPtr pWin, XID id);
+
+int
+compUnredirectSubwindows (ClientPtr pClient, WindowPtr pWin, int update);
+
+int
+compRedirectOneSubwindow (WindowPtr pParent, WindowPtr pWin);
+
+int
+compUnredirectOneSubwindow (WindowPtr pParent, WindowPtr pWin);
+
+Bool
+compAllocPixmap (WindowPtr pWin);
+
+void
+compFreePixmap (WindowPtr pWin);
+
+Bool
+compReallocPixmap (WindowPtr pWin, int x, int y,
+ unsigned int w, unsigned int h, int bw);
+
+/*
+ * compext.c
+ */
+
+void
+CompositeExtensionInit (void);
+
+/*
+ * compinit.c
+ */
+
+Bool
+compScreenInit (ScreenPtr pScreen);
+
+/*
+ * compoverlay.c
+ */
+
+void
+compFreeOverlayClient (CompOverlayClientPtr pOcToDel);
+
+CompOverlayClientPtr
+compFindOverlayClient (ScreenPtr pScreen, ClientPtr pClient);
+
+CompOverlayClientPtr
+compCreateOverlayClient (ScreenPtr pScreen, ClientPtr pClient);
+
+Bool
+compCreateOverlayWindow (ScreenPtr pScreen);
+
+void
+compDestroyOverlayWindow (ScreenPtr pScreen);
+
+/*
+ * compwindow.c
+ */
+
+#ifdef COMPOSITE_DEBUG
+void
+compCheckTree (ScreenPtr pScreen);
+#else
+#define compCheckTree(s)
+#endif
+
+PictFormatPtr
+compWindowFormat (WindowPtr pWin);
+
+void
+compSetPixmap (WindowPtr pWin, PixmapPtr pPixmap);
+
+Bool
+compCheckRedirect (WindowPtr pWin);
+
+Bool
+compPositionWindow (WindowPtr pWin, int x, int y);
+
+Bool
+compRealizeWindow (WindowPtr pWin);
+
+Bool
+compUnrealizeWindow (WindowPtr pWin);
+
+void
+compClipNotify (WindowPtr pWin, int dx, int dy);
+
+void
+compReparentWindow (WindowPtr pWin, WindowPtr pPriorParent);
+
+Bool
+compCreateWindow (WindowPtr pWin);
+
+Bool
+compDestroyWindow (WindowPtr pWin);
+
+void
+compSetRedirectBorderClip (WindowPtr pWin, RegionPtr pRegion);
+
+RegionPtr
+compGetRedirectBorderClip (WindowPtr pWin);
+
+void
+compCopyWindow (WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
+
+void
+compWindowUpdate (WindowPtr pWin);
+
+WindowPtr
+CompositeRealChildHead (WindowPtr pWin);
+
+int
+DeleteWindowNoInputDevices(pointer value, XID wid);
+
+int
+compConfigNotify(WindowPtr pWin, int x, int y, int w, int h,
+ int bw, WindowPtr pSib);
+
+#endif /* _COMPINT_H_ */
|