Edit

IABSD.fr/xenocara/xserver/composite/compint.h

Branch :

  • Show log

    Commit

  • Author : matthieu
    Date : 2010-12-05 15:36:02
    Hash : 42826119
    Message : Upgrade to xorg-server 1.9.2. Tested by ajacoutot@, krw@, shadchin@ and jasper@ on various configurations including multihead with both zaphod and xrandr.

  • xserver/composite/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, these
         * three track changes to the offscreen storage
         * geometry
         */
        ConfigNotifyProcPtr         ConfigNotify;
        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 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
    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);
    
    int
    compConfigNotify(WindowPtr pWin, int x, int y, int w, int h,
    		 int bw, WindowPtr pSib);
    
    #endif /* _COMPINT_H_ */