xserver: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Dec 1 09:24:29 UTC 2020


 present/present_wnmd.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

New commits:
commit 11652706b0aa7d2609b710db0bd1262c5f6ed596
Author: Michel Dänzer <mdaenzer at redhat.com>
Date:   Fri Nov 20 16:54:02 2020 +0100

    present/wnmd: Translate update region to screen space
    
    The region as passed in is in the source pixmap's coordinate space, so
    intersecting it with the clipList (which is in screen space) resulted in
    disappointment.
    
    Fixes Firefox popups such as the hamburger menu when using the EGL
    backend.
    
    v2:
    * Drop vblank->x/y_off from RegionTranslate call, since they're always
      0 here (present_wnmd_check_flip rejects flips for x/y_off != 0).
    
    Reported-by: Robert Mader <robert.mader at posteo.de>
    Tested-by: Robert Mader <robert.mader at posteo.de>
    Reviewed-by: Olivier Fourdan <ofourdan at redhat.com>
    Tested-by: Joakim Tjernlund <joakim.tjernlund at infinera.com> # v1

diff --git a/present/present_wnmd.c b/present/present_wnmd.c
index 7d1000a01..aed10dae3 100644
--- a/present/present_wnmd.c
+++ b/present/present_wnmd.c
@@ -459,10 +459,13 @@ present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
 
             /* Set update region as damaged */
             if (vblank->update) {
-                damage = vblank->update;
+                damage = RegionDuplicate(vblank->update);
+                /* Translate update region to screen space */
+                assert(vblank->x_off == 0 && vblank->y_off == 0);
+                RegionTranslate(damage, window->drawable.x, window->drawable.y);
                 RegionIntersect(damage, damage, &window->clipList);
             } else
-                damage = &window->clipList;
+                damage = RegionDuplicate(&window->clipList);
 
             /* Try to flip - the vblank is now pending
              */
@@ -484,6 +487,7 @@ present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
 
                 /* Report damage */
                 DamageDamageRegion(&vblank->window->drawable, damage);
+                RegionDestroy(damage);
                 return;
             }
 


More information about the xorg-commit mailing list