[PATCH] dix/render: consolidate window format matching code.

Alex Deucher alexdeucher at gmail.com
Wed Jun 27 06:59:09 PDT 2012


On Wed, Jun 27, 2012 at 9:36 AM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> This code existed in 3 different forms, perhaps it should be
> consolidated.
>
> Reviewed-by: Keith Packard <keithp at keithp.com>
> Signed-off-by: Dave Airlie <airlied at redhat.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  composite/compalloc.c         |    4 ++--
>  composite/compint.h           |    2 --
>  composite/compwindow.c        |   26 ++------------------------
>  dix/window.c                  |   13 +++++++++++++
>  hw/xfree86/modes/xf86Rotate.c |   24 +-----------------------
>  include/window.h              |    1 +
>  mi/midispcur.c                |   18 +-----------------
>  render/picture.c              |    8 ++++++++
>  render/picturestr.h           |    3 +++
>  9 files changed, 31 insertions(+), 68 deletions(-)
>
> diff --git a/composite/compalloc.c b/composite/compalloc.c
> index b958b09..cc69c68 100644
> --- a/composite/compalloc.c
> +++ b/composite/compalloc.c
> @@ -560,8 +560,8 @@ compNewPixmap(WindowPtr pWin, int x, int y, int w, int h)
>         }
>     }
>     else {
> -        PictFormatPtr pSrcFormat = compWindowFormat(pParent);
> -        PictFormatPtr pDstFormat = compWindowFormat(pWin);
> +        PictFormatPtr pSrcFormat = PictureWindowFormat(pParent);
> +        PictFormatPtr pDstFormat = PictureWindowFormat(pWin);
>         XID inferiors = IncludeInferiors;
>         int error;
>
> diff --git a/composite/compint.h b/composite/compint.h
> index 9e2713e..30b724e 100644
> --- a/composite/compint.h
> +++ b/composite/compint.h
> @@ -272,8 +272,6 @@ void
>  #define compCheckTree(s)
>  #endif
>
> -PictFormatPtr compWindowFormat(WindowPtr pWin);
> -
>  void
>  compSetPixmap(WindowPtr pWin, PixmapPtr pPixmap);
>
> diff --git a/composite/compwindow.c b/composite/compwindow.c
> index 6eb624b..d0bcd18 100644
> --- a/composite/compwindow.c
> +++ b/composite/compwindow.c
> @@ -631,28 +631,6 @@ compGetRedirectBorderClip(WindowPtr pWin)
>     return &cw->borderClip;
>  }
>
> -static VisualPtr
> -compGetWindowVisual(WindowPtr pWin)
> -{
> -    ScreenPtr pScreen = pWin->drawable.pScreen;
> -    VisualID vid = wVisual(pWin);
> -    int i;
> -
> -    for (i = 0; i < pScreen->numVisuals; i++)
> -        if (pScreen->visuals[i].vid == vid)
> -            return &pScreen->visuals[i];
> -    return 0;
> -}
> -
> -PictFormatPtr
> -compWindowFormat(WindowPtr pWin)
> -{
> -    ScreenPtr pScreen = pWin->drawable.pScreen;
> -
> -    return PictureMatchVisual(pScreen, pWin->drawable.depth,
> -                              compGetWindowVisual(pWin));
> -}
> -
>  static void
>  compWindowUpdateAutomatic(WindowPtr pWin)
>  {
> @@ -660,8 +638,8 @@ compWindowUpdateAutomatic(WindowPtr pWin)
>     ScreenPtr pScreen = pWin->drawable.pScreen;
>     WindowPtr pParent = pWin->parent;
>     PixmapPtr pSrcPixmap = (*pScreen->GetWindowPixmap) (pWin);
> -    PictFormatPtr pSrcFormat = compWindowFormat(pWin);
> -    PictFormatPtr pDstFormat = compWindowFormat(pWin->parent);
> +    PictFormatPtr pSrcFormat = PictureWindowFormat(pWin);
> +    PictFormatPtr pDstFormat = PictureWindowFormat(pWin->parent);
>     int error;
>     RegionPtr pRegion = DamageRegion(cw->damage);
>     PicturePtr pSrcPicture = CreatePicture(0, &pSrcPixmap->drawable,
> diff --git a/dix/window.c b/dix/window.c
> index 98f5604..5cc3a50 100644
> --- a/dix/window.c
> +++ b/dix/window.c
> @@ -3660,3 +3660,16 @@ SetRootClip(ScreenPtr pScreen, Bool enable)
>         WindowsRestructured();
>     FlushAllOutput();
>  }
> +
> +VisualPtr
> +WindowGetVisual(WindowPtr pWin)
> +{
> +    ScreenPtr pScreen = pWin->drawable.pScreen;
> +    VisualID vid = wVisual(pWin);
> +    int i;
> +
> +    for (i = 0; i < pScreen->numVisuals; i++)
> +        if (pScreen->visuals[i].vid == vid)
> +            return &pScreen->visuals[i];
> +    return 0;
> +}
> diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
> index 6a661e1..31e0372 100644
> --- a/hw/xfree86/modes/xf86Rotate.c
> +++ b/hw/xfree86/modes/xf86Rotate.c
> @@ -46,28 +46,6 @@
>
>  /* borrowed from composite extension, move to Render and publish? */
>
> -static VisualPtr
> -compGetWindowVisual(WindowPtr pWin)
> -{
> -    ScreenPtr pScreen = pWin->drawable.pScreen;
> -    VisualID vid = wVisual(pWin);
> -    int i;
> -
> -    for (i = 0; i < pScreen->numVisuals; i++)
> -        if (pScreen->visuals[i].vid == vid)
> -            return &pScreen->visuals[i];
> -    return 0;
> -}
> -
> -static PictFormatPtr
> -compWindowFormat(WindowPtr pWin)
> -{
> -    ScreenPtr pScreen = pWin->drawable.pScreen;
> -
> -    return PictureMatchVisual(pScreen, pWin->drawable.depth,
> -                              compGetWindowVisual(pWin));
> -}
> -
>  #define F(x)   IntToxFixed(x)
>
>  #define toF(x) ((float) (x) / 65536.0f)
> @@ -79,7 +57,7 @@ xf86RotateCrtcRedisplay(xf86CrtcPtr crtc, RegionPtr region)
>     ScreenPtr screen = scrn->pScreen;
>     WindowPtr root = screen->root;
>     PixmapPtr dst_pixmap = crtc->rotatedPixmap;
> -    PictFormatPtr format = compWindowFormat(screen->root);
> +    PictFormatPtr format = PictureWindowFormat(screen->root);
>     int error;
>     PicturePtr src, dst;
>     int n = RegionNumRects(region);
> diff --git a/include/window.h b/include/window.h
> index 64c56ae..7842b4d 100644
> --- a/include/window.h
> +++ b/include/window.h
> @@ -229,4 +229,5 @@ extern _X_EXPORT void EnableMapUnmapEvents(WindowPtr /* pWin */ );
>  extern _X_EXPORT void SetRootClip(ScreenPtr pScreen, Bool enable);
>  extern _X_EXPORT void PrintWindowTree(void);
>
> +extern _X_EXPORT VisualPtr WindowGetVisual(WindowPtr /*pWin*/);
>  #endif                          /* WINDOW_H */
> diff --git a/mi/midispcur.c b/mi/midispcur.c
> index 9ee8242..df141cd 100644
> --- a/mi/midispcur.c
> +++ b/mi/midispcur.c
> @@ -151,19 +151,6 @@ miDCRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
>  #ifdef ARGB_CURSOR
>  #define EnsurePicture(picture,draw,win) (picture || miDCMakePicture(&picture,draw,win))
>
> -static VisualPtr
> -miDCGetWindowVisual(WindowPtr pWin)
> -{
> -    ScreenPtr pScreen = pWin->drawable.pScreen;
> -    VisualID vid = wVisual(pWin);
> -    int i;
> -
> -    for (i = 0; i < pScreen->numVisuals; i++)
> -        if (pScreen->visuals[i].vid == vid)
> -            return &pScreen->visuals[i];
> -    return 0;
> -}
> -
>  static PicturePtr
>  miDCMakePicture(PicturePtr * ppPicture, DrawablePtr pDraw, WindowPtr pWin)
>  {
> @@ -174,10 +161,7 @@ miDCMakePicture(PicturePtr * ppPicture, DrawablePtr pDraw, WindowPtr pWin)
>     PicturePtr pPicture;
>     int error;
>
> -    pVisual = miDCGetWindowVisual(pWin);
> -    if (!pVisual)
> -        return 0;
> -    pFormat = PictureMatchVisual(pScreen, pDraw->depth, pVisual);
> +    pFormat = PictureWindowFormat(pWin);
>     if (!pFormat)
>         return 0;
>     pPicture = CreatePicture(0, pDraw, pFormat,
> diff --git a/render/picture.c b/render/picture.c
> index 7887853..ebbfa29 100644
> --- a/render/picture.c
> +++ b/render/picture.c
> @@ -50,6 +50,14 @@ RESTYPE PictFormatType;
>  RESTYPE GlyphSetType;
>  int PictureCmapPolicy = PictureCmapPolicyDefault;
>
> +PictFormatPtr
> +PictureWindowFormat(WindowPtr pWindow)
> +{
> +    ScreenPtr pScreen = pWindow->drawable.pScreen;
> +    return PictureMatchVisual(pScreen, pWindow->drawable.depth,
> +                              WindowGetVisual(pWindow));
> +}
> +
>  Bool
>  PictureDestroyWindow(WindowPtr pWindow)
>  {
> diff --git a/render/picturestr.h b/render/picturestr.h
> index 6da5656..1cda88a 100644
> --- a/render/picturestr.h
> +++ b/render/picturestr.h
> @@ -377,6 +377,9 @@ extern _X_EXPORT RESTYPE GlyphSetType;
>     } \
>  } \
>
> +extern _X_EXPORT PictFormatPtr
> + PictureWindowFormat(WindowPtr pWindow);
> +
>  extern _X_EXPORT Bool
>  PictureDestroyWindow(WindowPtr pWindow);
>
> --
> 1.7.10.2
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list