mi: Simplify composite border clip redirection interface

There's not really a good reason for mi to not just call the composite
code directly.

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Adam Jackson 2014-08-05 14:07:17 -04:00
parent 7b35dc9b15
commit 7eddc80bc4
3 changed files with 19 additions and 47 deletions

View File

@ -594,9 +594,6 @@ CompositeExtensionInit(void)
return; return;
CompositeReqCode = (CARD8) extEntry->base; CompositeReqCode = (CARD8) extEntry->base;
miRegisterRedirectBorderClipProc(compSetRedirectBorderClip,
compGetRedirectBorderClip);
/* Initialization succeeded */ /* Initialization succeeded */
noCompositeExtension = FALSE; noCompositeExtension = FALSE;
} }

11
mi/mi.h
View File

@ -425,17 +425,6 @@ extern _X_EXPORT int miShapedWindowIn(RegionPtr /*universe */ ,
int /*y */ int /*y */
); );
typedef void
(*SetRedirectBorderClipProcPtr) (WindowPtr pWindow, RegionPtr pRegion);
typedef RegionPtr
(*GetRedirectBorderClipProcPtr) (WindowPtr pWindow);
extern _X_EXPORT void
miRegisterRedirectBorderClipProc(SetRedirectBorderClipProcPtr setBorderClip,
GetRedirectBorderClipProcPtr getBorderClip);
extern _X_EXPORT int miValidateTree(WindowPtr /*pParent */ , extern _X_EXPORT int miValidateTree(WindowPtr /*pParent */ ,
WindowPtr /*pChild */ , WindowPtr /*pChild */ ,
VTKind /*kind */ VTKind /*kind */

View File

@ -99,8 +99,10 @@ Equipment Corporation.
#include "mi.h" #include "mi.h"
#include "regionstr.h" #include "regionstr.h"
#include "mivalidate.h" #include "mivalidate.h"
#include "globals.h" #include "globals.h"
#ifdef COMPOSITE
#include "compint.h"
#endif
/* /*
* Compute the visibility of a shaped window * Compute the visibility of a shaped window
@ -160,17 +162,6 @@ miShapedWindowIn(RegionPtr universe, RegionPtr bounding,
return rgnOUT; return rgnOUT;
} }
static GetRedirectBorderClipProcPtr miGetRedirectBorderClipProc;
static SetRedirectBorderClipProcPtr miSetRedirectBorderClipProc;
void
miRegisterRedirectBorderClipProc(SetRedirectBorderClipProcPtr setBorderClip,
GetRedirectBorderClipProcPtr getBorderClip)
{
miSetRedirectBorderClipProc = setBorderClip;
miGetRedirectBorderClipProc = getBorderClip;
}
/* /*
* Manual redirected windows are treated as transparent; they do not obscure * Manual redirected windows are treated as transparent; they do not obscure
* siblings or parent windows * siblings or parent windows
@ -242,11 +233,9 @@ miComputeClips(WindowPtr pParent,
* In redirected drawing case, reset universe to borderSize * In redirected drawing case, reset universe to borderSize
*/ */
if (pParent->redirectDraw != RedirectDrawNone) { if (pParent->redirectDraw != RedirectDrawNone) {
if (miSetRedirectBorderClipProc) { if (TreatAsTransparent(pParent))
if (TreatAsTransparent(pParent)) RegionEmpty(universe);
RegionEmpty(universe); compSetRedirectBorderClip (pParent, universe);
(*miSetRedirectBorderClipProc) (pParent, universe);
}
RegionCopy(universe, &pParent->borderSize); RegionCopy(universe, &pParent->borderSize);
} }
#endif #endif
@ -516,6 +505,17 @@ miTreeObscured(WindowPtr pParent)
} }
} }
static RegionPtr
getBorderClip(WindowPtr pWin)
{
#ifdef COMPOSITE
if (pWin->redirectDraw != RedirectDrawNone)
return compGetRedirectBorderClip(pWin);
else
#endif
return &pWin->borderClip;
}
/* /*
*----------------------------------------------------------------------- *-----------------------------------------------------------------------
* miValidateTree -- * miValidateTree --
@ -609,14 +609,7 @@ miValidateTree(WindowPtr pParent, /* Parent to validate */
forward = TRUE; forward = TRUE;
for (pWin = pChild; pWin; pWin = pWin->nextSib) { for (pWin = pChild; pWin; pWin = pWin->nextSib) {
if (pWin->valdata) { if (pWin->valdata) {
RegionPtr pBorderClip = &pWin->borderClip; RegionAppend(&totalClip, getBorderClip(pWin));
#ifdef COMPOSITE
if (pWin->redirectDraw != RedirectDrawNone &&
miGetRedirectBorderClipProc)
pBorderClip = (*miGetRedirectBorderClipProc) (pWin);
#endif
RegionAppend(&totalClip, pBorderClip);
if (pWin->viewable) if (pWin->viewable)
viewvals++; viewvals++;
} }
@ -627,14 +620,7 @@ miValidateTree(WindowPtr pParent, /* Parent to validate */
pWin = pParent->lastChild; pWin = pParent->lastChild;
while (1) { while (1) {
if (pWin->valdata) { if (pWin->valdata) {
RegionPtr pBorderClip = &pWin->borderClip; RegionAppend(&totalClip, getBorderClip(pWin));
#ifdef COMPOSITE
if (pWin->redirectDraw != RedirectDrawNone &&
miGetRedirectBorderClipProc)
pBorderClip = (*miGetRedirectBorderClipProc) (pWin);
#endif
RegionAppend(&totalClip, pBorderClip);
if (pWin->viewable) if (pWin->viewable)
viewvals++; viewvals++;
} }