xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

compint.h (8993B)


      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 
     83 typedef struct _CompClientWindow {
     84     struct _CompClientWindow *next;
     85     XID id;
     86     int update;
     87 } CompClientWindowRec, *CompClientWindowPtr;
     88 
     89 typedef 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 
    104 typedef 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 
    113 typedef struct _CompOverlayClientRec *CompOverlayClientPtr;
    114 
    115 typedef struct _CompOverlayClientRec {
    116     CompOverlayClientPtr pNext;
    117     ClientPtr pClient;
    118     ScreenPtr pScreen;
    119     XID resource;
    120 } CompOverlayClientRec;
    121 
    122 typedef struct _CompImplicitRedirectException {
    123     XID parentVisual;
    124     XID winVisual;
    125 } CompImplicitRedirectException;
    126 
    127 typedef 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     Bool pendingScreenUpdate;
    160 
    161     CloseScreenProcPtr CloseScreen;
    162     int numAlternateVisuals;
    163     VisualID *alternateVisuals;
    164     int numImplicitRedirectExceptions;
    165     CompImplicitRedirectException *implicitRedirectExceptions;
    166 
    167     WindowPtr pOverlayWin;
    168     Window overlayWid;
    169     CompOverlayClientPtr pOverlayClients;
    170 
    171     SourceValidateProcPtr SourceValidate;
    172 } CompScreenRec, *CompScreenPtr;
    173 
    174 extern DevPrivateKeyRec CompScreenPrivateKeyRec;
    175 
    176 #define CompScreenPrivateKey (&CompScreenPrivateKeyRec)
    177 
    178 extern DevPrivateKeyRec CompWindowPrivateKeyRec;
    179 
    180 #define CompWindowPrivateKey (&CompWindowPrivateKeyRec)
    181 
    182 extern DevPrivateKeyRec CompSubwindowsPrivateKeyRec;
    183 
    184 #define CompSubwindowsPrivateKey (&CompSubwindowsPrivateKeyRec)
    185 
    186 #define GetCompScreen(s) ((CompScreenPtr) \
    187     dixLookupPrivate(&(s)->devPrivates, CompScreenPrivateKey))
    188 #define GetCompWindow(w) ((CompWindowPtr) \
    189     dixLookupPrivate(&(w)->devPrivates, CompWindowPrivateKey))
    190 #define GetCompSubwindows(w) ((CompSubwindowsPtr) \
    191     dixLookupPrivate(&(w)->devPrivates, CompSubwindowsPrivateKey))
    192 
    193 extern RESTYPE CompositeClientSubwindowsType;
    194 extern RESTYPE CompositeClientOverlayType;
    195 
    196 /*
    197  * compalloc.c
    198  */
    199 
    200 Bool
    201  compRedirectWindow(ClientPtr pClient, WindowPtr pWin, int update);
    202 
    203 void
    204  compFreeClientWindow(WindowPtr pWin, XID id);
    205 
    206 int
    207  compUnredirectWindow(ClientPtr pClient, WindowPtr pWin, int update);
    208 
    209 int
    210  compRedirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update);
    211 
    212 void
    213  compFreeClientSubwindows(WindowPtr pWin, XID id);
    214 
    215 int
    216  compUnredirectSubwindows(ClientPtr pClient, WindowPtr pWin, int update);
    217 
    218 int
    219  compRedirectOneSubwindow(WindowPtr pParent, WindowPtr pWin);
    220 
    221 int
    222  compUnredirectOneSubwindow(WindowPtr pParent, WindowPtr pWin);
    223 
    224 Bool
    225  compAllocPixmap(WindowPtr pWin);
    226 
    227 void
    228  compSetParentPixmap(WindowPtr pWin);
    229 
    230 void
    231  compRestoreWindow(WindowPtr pWin, PixmapPtr pPixmap);
    232 
    233 Bool
    234 
    235 compReallocPixmap(WindowPtr pWin, int x, int y,
    236                   unsigned int w, unsigned int h, int bw);
    237 
    238 void compMarkAncestors(WindowPtr pWin);
    239 
    240 /*
    241  * compinit.c
    242  */
    243 
    244 Bool
    245  compScreenInit(ScreenPtr pScreen);
    246 
    247 /*
    248  * compoverlay.c
    249  */
    250 
    251 void
    252  compFreeOverlayClient(CompOverlayClientPtr pOcToDel);
    253 
    254 CompOverlayClientPtr
    255 compFindOverlayClient(ScreenPtr pScreen, ClientPtr pClient);
    256 
    257 CompOverlayClientPtr
    258 compCreateOverlayClient(ScreenPtr pScreen, ClientPtr pClient);
    259 
    260 Bool
    261  compCreateOverlayWindow(ScreenPtr pScreen);
    262 
    263 void
    264  compDestroyOverlayWindow(ScreenPtr pScreen);
    265 
    266 /*
    267  * compwindow.c
    268  */
    269 
    270 #ifdef COMPOSITE_DEBUG
    271 void
    272  compCheckTree(ScreenPtr pScreen);
    273 #else
    274 #define compCheckTree(s)
    275 #endif
    276 
    277 void
    278  compSetPixmap(WindowPtr pWin, PixmapPtr pPixmap, int bw);
    279 
    280 Bool
    281  compCheckRedirect(WindowPtr pWin);
    282 
    283 Bool
    284  compPositionWindow(WindowPtr pWin, int x, int y);
    285 
    286 Bool
    287  compRealizeWindow(WindowPtr pWin);
    288 
    289 Bool
    290  compUnrealizeWindow(WindowPtr pWin);
    291 
    292 void
    293  compClipNotify(WindowPtr pWin, int dx, int dy);
    294 
    295 void
    296  compMoveWindow(WindowPtr pWin, int x, int y, WindowPtr pSib, VTKind kind);
    297 
    298 void
    299 
    300 compResizeWindow(WindowPtr pWin, int x, int y,
    301                  unsigned int w, unsigned int h, WindowPtr pSib);
    302 
    303 void
    304  compChangeBorderWidth(WindowPtr pWin, unsigned int border_width);
    305 
    306 void
    307  compReparentWindow(WindowPtr pWin, WindowPtr pPriorParent);
    308 
    309 Bool
    310  compCreateWindow(WindowPtr pWin);
    311 
    312 Bool
    313  compDestroyWindow(WindowPtr pWin);
    314 
    315 void
    316  compSetRedirectBorderClip(WindowPtr pWin, RegionPtr pRegion);
    317 
    318 RegionPtr
    319  compGetRedirectBorderClip(WindowPtr pWin);
    320 
    321 void
    322  compCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
    323 
    324 void
    325  compPaintChildrenToWindow(WindowPtr pWin);
    326 
    327 WindowPtr
    328  CompositeRealChildHead(WindowPtr pWin);
    329 
    330 int
    331  DeleteWindowNoInputDevices(void *value, XID wid);
    332 
    333 int
    334 
    335 compConfigNotify(WindowPtr pWin, int x, int y, int w, int h,
    336                  int bw, WindowPtr pSib);
    337 
    338 void PanoramiXCompositeInit(void);
    339 void PanoramiXCompositeReset(void);
    340 
    341 #endif                          /* _COMPINT_H_ */