xserver: Branch 'master'

Keith Packard keithp at kemper.freedesktop.org
Mon Oct 27 14:23:20 PDT 2014


 composite/compwindow.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

New commits:
commit 5574a0a07e83ff989c074c44d3ea9db0a819f472
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Oct 27 13:38:21 2014 -0700

    composite: Skip SetWindowPixmap when pixmap isn't changing
    
    Check the current window pixmap to see if it matches the new pixmap
    and avoid calling SetWindowPixmap in that case.
    
    x11perf -ucreate highlights an instance where compCreateWindow reassigns
    the same Pixmap to the Window. Currently this triggers an expensive
    invalidation of the entire window hierachy, making sure that DRI2
    clients are kept informed of the handle changes. However, as the backing
    Pixmap for the Window is actually unchanged, there is no need to
    do anything in this case.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
    Tested-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/composite/compwindow.c b/composite/compwindow.c
index 9a6b2da..77bdfa2 100644
--- a/composite/compwindow.c
+++ b/composite/compwindow.c
@@ -567,10 +567,11 @@ compCreateWindow(WindowPtr pWin)
     if (pWin->parent && ret) {
         CompSubwindowsPtr csw = GetCompSubwindows(pWin->parent);
         CompClientWindowPtr ccw;
+        PixmapPtr parent_pixmap = (*pScreen->GetWindowPixmap)(pWin->parent);
+        PixmapPtr window_pixmap = (*pScreen->GetWindowPixmap)(pWin);
 
-        (*pScreen->SetWindowPixmap) (pWin,
-                                     (*pScreen->GetWindowPixmap) (pWin->
-                                                                  parent));
+        if (window_pixmap != parent_pixmap)
+            (*pScreen->SetWindowPixmap) (pWin, parent_pixmap);
         if (csw)
             for (ccw = csw->clients; ccw; ccw = ccw->next)
                 compRedirectWindow(clients[CLIENT_ID(ccw->id)],


More information about the xorg-commit mailing list