[PATCH xserver v2] damage: Validate source pictures bound to windows before unwrapping

Alex Deucher alexdeucher at gmail.com
Tue Feb 7 16:57:21 UTC 2017


On Tue, Feb 7, 2017 at 3:38 AM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> The lower layers also do this, but no damage may be reported there,
> since we unwrap before calling down.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99220
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

Makes sense to me.
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>
> v2: Update code comment
>
> This is an alternative to https://patchwork.freedesktop.org/patch/136721/ .
>
>  configure.ac          |  2 +-
>  miext/damage/damage.c | 10 ++++++++++
>  2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/configure.ac b/configure.ac
> index 95aa297da..4dcf8b5c2 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1847,7 +1847,7 @@ if test "x$XNEST" = xyes; then
>         if test "x$have_xnest" = xno; then
>                 AC_MSG_ERROR([Xnest build explicitly requested, but required modules not found.])
>         fi
> -       XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB  $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB"
> +       XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $DAMAGE_LIB  $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $RENDER_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB"
>         XNEST_SYS_LIBS="$XNESTMODULES_LIBS $GLX_SYS_LIBS"
>         AC_SUBST([XNEST_LIBS])
>         AC_SUBST([XNEST_SYS_LIBS])
> diff --git a/miext/damage/damage.c b/miext/damage/damage.c
> index d6a36142d..2fae03fc2 100644
> --- a/miext/damage/damage.c
> +++ b/miext/damage/damage.c
> @@ -34,6 +34,7 @@
>  #include    <X11/fonts/fontstruct.h>
>  #include    <X11/fonts/libxfont2.h>
>  #include    "mi.h"
> +#include    "mipict.h"
>  #include    "regionstr.h"
>  #include    "globals.h"
>  #include    "gcstruct.h"
> @@ -499,6 +500,15 @@ damageComposite(CARD8 op,
>          if (BOX_NOT_EMPTY(box))
>              damageDamageBox(pDst->pDrawable, &box, pDst->subWindowMode);
>      }
> +    /*
> +     * Validating a source picture bound to a window may trigger other
> +     * composite operations. Do it before unwrapping to make sure damage
> +     * is reported correctly.
> +     */
> +    if (pSrc->pDrawable && WindowDrawable(pSrc->pDrawable->type))
> +        miCompositeSourceValidate(pSrc);
> +    if (pMask && pMask->pDrawable && WindowDrawable(pMask->pDrawable->type))
> +        miCompositeSourceValidate(pMask);
>      unwrap(pScrPriv, ps, Composite);
>      (*ps->Composite) (op,
>                        pSrc,
> --
> 2.11.0
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list