xserver: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Nov 19 10:05:39 UTC 2019


 hw/xwayland/xwayland.c |   13 -------------
 1 file changed, 13 deletions(-)

New commits:
commit 66da95a172c4941b75ffedcdaa0138c0a48f11fb
Author: Olivier Fourdan <ofourdan at redhat.com>
Date:   Tue Nov 12 10:03:55 2019 +0100

    xwayland: Do not discard frame callbacks on allow commits
    
    Currently, when a X11 client (usually the X11 window manager from a
    Wayland compositor) changes the value of the X11 property
    `_XWAYLAND_ALLOW_COMMITS` from `false` to `true`, all pending frame
    callbacks on the window are discarded so that the commit occurs
    immediately.
    
    Weston uses that mechanism to prevent the content of the window from
    showing before it's ready when mapping the window initially, but
    discarding the pending frame callbacks has no effect on the initial
    mapping of the X11 window since at that point there cannot be any frame
    callback on a surface which hasn't been committed yet anyway.
    
    However, discarding pending frame callbacks can be problematic if we
    were to use the same `_XWAYLAND_ALLOW_COMMITS` mechanism to prevent
    damages to be posted before the X11 toplevel is updated completely
    (including the window decorations from the X11 window manager).
    
    Remove the portion of code discarding the pending frame callback,
    Xwayland should always wait for a pending frame callback if there's one
    before posting new damages.
    
    Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
    Reviewed-by: Pekka Paalanen <pekka.paalanen at collabora.com>
    Reviewed-by: Michel Dänzer <mdaenzer at redhat.com>
    https://gitlab.freedesktop.org/xorg/xserver/merge_requests/333

diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
index 97afce0b8..acb77a638 100644
--- a/hw/xwayland/xwayland.c
+++ b/hw/xwayland/xwayland.c
@@ -262,8 +262,6 @@ static void
 xwl_window_property_allow_commits(struct xwl_window *xwl_window,
                                   PropertyStateRec *propstate)
 {
-    Bool old_allow_commits = xwl_window->allow_commits;
-
     switch (propstate->state) {
     case PropertyNewValue:
         xwl_window_set_allow_commits_from_property(xwl_window, propstate->prop);
@@ -276,17 +274,6 @@ xwl_window_property_allow_commits(struct xwl_window *xwl_window,
     default:
         break;
     }
-
-    /* If allow_commits turned from off to on, discard any frame
-     * callback we might be waiting for so that a new buffer is posted
-     * immediately through block_handler() if there is damage to post.
-     */
-    if (!old_allow_commits && xwl_window->allow_commits) {
-        if (xwl_window->frame_callback) {
-            wl_callback_destroy(xwl_window->frame_callback);
-            xwl_window->frame_callback = NULL;
-        }
-    }
 }
 
 static void


More information about the xorg-commit mailing list