xserver: Branch 'server-1.20-branch' - 3 commits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Mar 25 17:48:31 UTC 2019


 .gitlab-ci.yml                 |    4 ----
 hw/xwayland/xwayland-present.c |    5 +++++
 present/present_scmd.c         |    8 +++++---
 3 files changed, 10 insertions(+), 7 deletions(-)

New commits:
commit 87491ced98705a14be2bb5a3ce7e41cb5ffc11d0
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Mon Mar 25 12:32:48 2019 +0100

    present/scmd: Check that the flip and screen pixmap pitches match
    
    If they don't, flipping will result in corrupted display.
    
    Test case:
    
    * Run Xorg at 1920x1080 with no window manager
    * glxgears -geometry 2048x1080
    (Cherry picked from commit ef91da2757050652c724f6e674e8b1acf5d0cb31)

diff --git a/present/present_scmd.c b/present/present_scmd.c
index 6a580cb7a..3b7fbd832 100644
--- a/present/present_scmd.c
+++ b/present/present_scmd.c
@@ -78,7 +78,7 @@ present_check_flip(RRCrtcPtr            crtc,
                    PresentFlipReason   *reason)
 {
     ScreenPtr                   screen = window->drawable.pScreen;
-    PixmapPtr                   window_pixmap;
+    PixmapPtr                   screen_pixmap, window_pixmap;
     WindowPtr                   root = screen->root;
     present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
 
@@ -99,8 +99,9 @@ present_check_flip(RRCrtcPtr            crtc,
         return FALSE;
 
     /* Make sure the window hasn't been redirected with Composite */
+    screen_pixmap = screen->GetScreenPixmap(screen);
     window_pixmap = screen->GetWindowPixmap(window);
-    if (window_pixmap != screen->GetScreenPixmap(screen) &&
+    if (window_pixmap != screen_pixmap &&
         window_pixmap != screen_priv->flip_pixmap &&
         window_pixmap != present_flip_pending_pixmap(screen))
         return FALSE;
@@ -126,7 +127,8 @@ present_check_flip(RRCrtcPtr            crtc,
         window->drawable.x != pixmap->screen_x || window->drawable.y != pixmap->screen_y ||
 #endif
         window->drawable.width != pixmap->drawable.width ||
-        window->drawable.height != pixmap->drawable.height) {
+        window->drawable.height != pixmap->drawable.height ||
+        pixmap->devKind != screen_pixmap->devKind) {
         return FALSE;
     }
 
commit 578156337176bf759dace40fb5a81919f65562f1
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Mon Mar 25 12:32:04 2019 +0100

    xwayland/present: Destroy sync_callback in xwl_present_cleanup
    
    xwl_present_cleanup frees the struct xwl_present_window memory,
    so if there's a pending callback, we have to destroy it to prevent
    use-after-free in xwl_present_sync_callback.
    
    Should fix issue #645.
    
    Reviewed-by: Olivier Fourdan <ofourdan at redhat.com>
    (Cherry picked from commit 2e18eec6f03cc4d9d5bf62853c65d341b363f4b3)

diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
index 74fe84672..2937d9c97 100644
--- a/hw/xwayland/xwayland-present.c
+++ b/hw/xwayland/xwayland-present.c
@@ -123,6 +123,11 @@ xwl_present_cleanup(WindowPtr window)
         xwl_present_window->frame_callback = NULL;
     }
 
+    if (xwl_present_window->sync_callback) {
+        wl_callback_destroy(xwl_present_window->sync_callback);
+        xwl_present_window->sync_callback = NULL;
+    }
+
     /* Clear remaining events */
     xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list) {
         xorg_list_del(&event->list);
commit 8e2f5410cec5b052fb4da9d1b774a5858903dc35
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Mon Mar 25 12:29:23 2019 +0100

    Revert "gitlab-ci: Only run docker-image stage if relevant source files change"
    
    This reverts commit 8694395fcfd407190db74f31064960e484747377.
    
    Some scenarios have come to light where this failed to ensure the docker
    image exists:
    
    * If the master branch of a forked repository is used for an MR which
      doesn't modify .gitlab-ci.yml, the docker-image job may not run.
    * If the docker-image job of the first pipeline in a forked repository
      is cancelled or fails for any reason, and .gitlab-ci.yml isn't
      modified for the next pipeline run.
    (Cherry picked from commit 0ec9a13c2a207e98e2dd6b352552c0e069af0727)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4cb5e7d33..117744496 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -23,10 +23,6 @@ stages:
 
 debian-testing:
     stage: docker-image
-    only:
-        changes:
-            - .gitlab-ci.yml
-            - .gitlab-ci/Dockerfile
     image:
         name: gcr.io/kaniko-project/executor:debug
         entrypoint: [""]


More information about the xorg-commit mailing list