dmxwindow.h File Reference
#include "windowstr.h"

Go to the source code of this file.

Data Structures

struct  _dmxWinPriv

Defines

#define DMX_GET_WINDOW_PRIV(_pWin)
#define DMX_WINDOW_FUNC_PROLOGUE(_pGC)
#define DMX_WINDOW_FUNC_EPILOGUE(_pGC)
#define DMX_WINDOW_X1(_pWin)   ((_pWin)->drawable.x - wBorderWidth(_pWin))
#define DMX_WINDOW_Y1(_pWin)   ((_pWin)->drawable.y - wBorderWidth(_pWin))
#define DMX_WINDOW_X2(_pWin)   ((_pWin)->drawable.x + wBorderWidth(_pWin) + (_pWin)->drawable.width)
#define DMX_WINDOW_Y2(_pWin)   ((_pWin)->drawable.y + wBorderWidth(_pWin) + (_pWin)->drawable.height)
#define DMX_WINDOW_OFFSCREEN(_pWin)

Typedefs

typedef struct _dmxWinPriv dmxWinPrivRec
typedef struct _dmxWinPrivdmxWinPrivPtr

Functions

Bool dmxInitWindow (ScreenPtr pScreen)
Window dmxCreateRootWindow (WindowPtr pWindow)
void dmxGetDefaultWindowAttributes (WindowPtr pWindow, Colormap *cmap, Visual **visual)
void dmxCreateAndRealizeWindow (WindowPtr pWindow, Bool doSync)
Bool dmxCreateWindow (WindowPtr pWindow)
Bool dmxDestroyWindow (WindowPtr pWindow)
Bool dmxPositionWindow (WindowPtr pWindow, int x, int y)
Bool dmxChangeWindowAttributes (WindowPtr pWindow, unsigned long mask)
Bool dmxRealizeWindow (WindowPtr pWindow)
Bool dmxUnrealizeWindow (WindowPtr pWindow)
void dmxRestackWindow (WindowPtr pWindow, WindowPtr pOldNextSib)
void dmxWindowExposures (WindowPtr pWindow, RegionPtr prgn, RegionPtr other_exposed)
void dmxCopyWindow (WindowPtr pWindow, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
void dmxResizeWindow (WindowPtr pWindow, int x, int y, unsigned int w, unsigned int h, WindowPtr pSib)
void dmxReparentWindow (WindowPtr pWindow, WindowPtr pPriorParent)
void dmxChangeBorderWidth (WindowPtr pWindow, unsigned int width)
void dmxResizeScreenWindow (ScreenPtr pScreen, int x, int y, int w, int h)
void dmxResizeRootWindow (WindowPtr pRoot, int x, int y, int w, int h)
Bool dmxBEDestroyWindow (WindowPtr pWindow)
void dmxSetShape (WindowPtr pWindow, int kind)

Detailed Description

Interface for window support.

See also:
dmxwindow.c

Define Documentation

#define DMX_WINDOW_FUNC_EPILOGUE (   _pGC)
Value:
do {                                                                    \
    dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(_pGC);                       \
    DMX_WRAP(funcs, &dmxGCFuncs, pGCPriv, (_pGC));                      \
    if (pGCPriv->ops)                                                   \
        DMX_WRAP(ops, &dmxGCOps, pGCPriv, (_pGC));                      \
} while (0)
#define DMX_WINDOW_FUNC_PROLOGUE (   _pGC)
Value:
do {                                                                    \
    dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(_pGC);                       \
    DMX_UNWRAP(funcs, pGCPriv, (_pGC));                                 \
    if (pGCPriv->ops)                                                   \
        DMX_UNWRAP(ops, pGCPriv, (_pGC));                               \
} while (0)
#define DMX_WINDOW_OFFSCREEN (   _pWin)
Value:
(DMX_WINDOW_X1(_pWin) >= (_pWin)->drawable.pScreen->width  ||   \
     DMX_WINDOW_Y1(_pWin) >= (_pWin)->drawable.pScreen->height ||       \
     DMX_WINDOW_X2(_pWin) <= 0                                 ||       \
     DMX_WINDOW_Y2(_pWin) <= 0)

Referenced by dmxCopyWindow(), dmxPositionWindow(), dmxRealizeWindow(), and dmxResizeWindow().

#define DMX_WINDOW_X1 (   _pWin)    ((_pWin)->drawable.x - wBorderWidth(_pWin))
#define DMX_WINDOW_X2 (   _pWin)    ((_pWin)->drawable.x + wBorderWidth(_pWin) + (_pWin)->drawable.width)
#define DMX_WINDOW_Y1 (   _pWin)    ((_pWin)->drawable.y - wBorderWidth(_pWin))
#define DMX_WINDOW_Y2 (   _pWin)    ((_pWin)->drawable.y + wBorderWidth(_pWin) + (_pWin)->drawable.height)

Typedef Documentation

typedef struct _dmxWinPriv * dmxWinPrivPtr
typedef struct _dmxWinPriv dmxWinPrivRec

Window private area.


Function Documentation

Bool dmxBEDestroyWindow ( WindowPtr  pWindow)

Destroy pWindow on the back-end server.

References _DMXScreenInfo::beDisplay, DMX_GET_WINDOW_PRIV, dmxScreens, and _dmxWinPriv::window.

Referenced by dmxBEDestroyWindowTree(), and dmxDestroyWindow().

void dmxChangeBorderWidth ( WindowPtr  pWindow,
unsigned int  width 
)
Bool dmxChangeWindowAttributes ( WindowPtr  pWindow,
unsigned long  mask 
)
void dmxCopyWindow ( WindowPtr  pWindow,
DDXPointRec  ptOldOrg,
RegionPtr  prgnSrc 
)

Move pWindow on the back-end server. Determine whether or not it is on or offscreen, and realize it if it is newly on screen and the lazy window creation optimization is enabled.

References _DMXScreenInfo::beDisplay, DMX_GET_WINDOW_PRIV, DMX_UNWRAP, DMX_UPDATE_COPY, DMX_WINDOW_OFFSCREEN, DMX_WRAP, dmxCopyWindow(), dmxCreateAndRealizeWindow(), dmxScreens, dmxSync(), dmxUpdateWindowInfo(), _dmxWinPriv::mapped, _dmxWinPriv::offscreen, and _dmxWinPriv::window.

Referenced by dmxCopyWindow(), and dmxScreenInit().

void dmxCreateAndRealizeWindow ( WindowPtr  pWindow,
Bool  doSync 
)

This function handles lazy window creation and realization. Window creation is handled by dmxCreateNonRootWindow(). It also handles any stacking changes that have occured since the window was originally created by calling dmxDoRestackWindow(). If the window is shaped, the shape is set on the back-end server by calling dmxDoSetShape(), and if the window has pictures (from RENDER) associated with it, those pictures are created on the back-end server by calling dmxCreatePictureList(). If doSync is TRUE, then dmxSync() is called.

References _DMXScreenInfo::beDisplay, DMX_GET_WINDOW_PRIV, dmxCreateNonRootWindow(), dmxCreatePictureList(), dmxDoRestackWindow(), dmxDoSetShape(), dmxScreens, dmxSync(), _dmxWinPriv::hasPict, _dmxWinPriv::isShaped, _dmxWinPriv::mapped, _dmxWinPriv::restacked, and _dmxWinPriv::window.

Referenced by dmxBECreateWindowTree(), dmxCopyWindow(), dmxCreateNonRootWindow(), dmxForceWindowCreation(), dmxPositionWindow(), dmxRealizeWindow(), dmxReparentWindow(), and dmxResizeWindow().

Bool dmxDestroyWindow ( WindowPtr  pWindow)

Destroy pWindow on the back-end server. If any RENDER pictures were created, destroy them as well.

References DMX_GET_WINDOW_PRIV, DMX_UNWRAP, DMX_WRAP, dmxBEDestroyWindow(), dmxDestroyPictureList(), dmxDestroyWindow(), dmxScreens, and dmxSync().

Referenced by dmxDestroyWindow(), and dmxScreenInit().

void dmxGetDefaultWindowAttributes ( WindowPtr  pWindow,
Colormap *  cmap,
Visual **  visual 
)
Bool dmxInitWindow ( ScreenPtr  pScreen)

Initialize the private area for the window functions.

References dmxWinPrivateKeyRec.

Referenced by dmxScreenInit().

Bool dmxPositionWindow ( WindowPtr  pWindow,
int  x,
int  y 
)
Bool dmxRealizeWindow ( WindowPtr  pWindow)

Realize pWindow on the back-end server. If the lazy window creation optimization is enabled, the window is only realized when it at least partially overlaps the screen.

References _DMXScreenInfo::beDisplay, DMX_GET_WINDOW_PRIV, DMX_UNWRAP, DMX_UPDATE_REALIZE, DMX_WINDOW_OFFSCREEN, DMX_WRAP, dmxCreateAndRealizeWindow(), dmxRealizeWindow(), dmxScreens, dmxSync(), dmxUpdateWindowInfo(), _dmxWinPriv::mapped, _dmxWinPriv::offscreen, and _dmxWinPriv::window.

Referenced by dmxRealizeWindow(), and dmxScreenInit().

void dmxReparentWindow ( WindowPtr  pWindow,
WindowPtr  pPriorParent 
)
void dmxResizeRootWindow ( WindowPtr  pRoot,
int  x,
int  y,
int  w,
int  h 
)

Change the location and size of the "root" window. Called from #dmxConfigureRootWindow.

References _DMXScreenInfo::beDisplay, DMX_GET_WINDOW_PRIV, dmxScreens, dmxSync(), _dmxWinPriv::mapped, and _dmxWinPriv::window.

Referenced by dmxCreateWindow().

void dmxResizeScreenWindow ( ScreenPtr  pScreen,
int  x,
int  y,
int  w,
int  h 
)

Change the location and size of the "screen" window. Called from #dmxConfigureScreenWindow().

References _DMXScreenInfo::beDisplay, dmxScreens, dmxSync(), and _DMXScreenInfo::scrnWin.

void dmxResizeWindow ( WindowPtr  pWindow,
int  x,
int  y,
unsigned int  w,
unsigned int  h,
WindowPtr  pSib 
)

Resize pWindow on the back-end server. Determine whether or not it is on or offscreen, and realize it if it is newly on screen and the lazy window creation optimization is enabled.

References _DMXScreenInfo::beDisplay, DMX_GET_WINDOW_PRIV, DMX_UNWRAP, DMX_UPDATE_RESIZE, DMX_WINDOW_OFFSCREEN, DMX_WRAP, dmxCreateAndRealizeWindow(), dmxResizeWindow(), dmxScreens, dmxSync(), dmxUpdateWindowInfo(), _dmxWinPriv::mapped, _dmxWinPriv::offscreen, and _dmxWinPriv::window.

Referenced by dmxResizeWindow(), and dmxScreenInit().

void dmxRestackWindow ( WindowPtr  pWindow,
WindowPtr  pOldNextSib 
)
void dmxSetShape ( WindowPtr  pWindow,
int  kind 
)
void dmxWindowExposures ( WindowPtr  pWindow,
RegionPtr  prgn,
RegionPtr  other_exposed 
)

Handle exposures on pWindow. Since window exposures are handled in DMX, the events that are generated by the back-end server are redundant, so we eat them here.

References _DMXScreenInfo::beDisplay, DMX_GET_WINDOW_PRIV, DMX_UNWRAP, DMX_WRAP, dmxScreens, dmxSync(), dmxWindowExposurePredicate(), dmxWindowExposures(), and _dmxWinPriv::window.

Referenced by dmxScreenInit(), and dmxWindowExposures().