[Libreoffice-commits] core.git: sw/source

Miklos Vajna vmiklos at collabora.co.uk
Fri Jul 3 08:54:07 PDT 2015


 sw/source/core/view/viewsh.cxx |   15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

New commits:
commit c9175a1bd3249ad573ae6827bf19963a3ebe2fbc
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Jul 3 17:52:44 2015 +0200

    SwViewShell::ImplEndAction: avoid direct PaintDesktop()
    
    With double-buffering enabled and typing quickly, one saw blinks in the
    text sometimes. The reason was that PaintDesktop() painted directly
    outside SwViewShell::Paint().
    
    The problem is more visible with VCL_DOUBLEBUFFERING_AVOID_PAINT=1,
    loading a simple document + pressing a key draw an unexpected white
    rectangle.
    
    Given that InvalidateWindows() already calls PaintDesktop() inside
    Paint() implicitly (via SwViewShell::Paint()), fix the problem by just
    avoiding the DLPrePaint2() + PaintDesktop() + DLPostPaint2() calls.
    
    Change-Id: Ib8ce26a0bdd526bf85d362f0e865dd61d29f6d11

diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 0f27fc5..9462b8f 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -405,20 +405,7 @@ void SwViewShell::ImplEndAction( const bool bIdleEnd )
                     }
                     if ( bPaint )
                     {
-                        // #i75172# begin DrawingLayer paint
-                        // need to do begin/end DrawingLayer preparation for each single rectangle of the
-                        // repaint region. I already tried to prepare only once for the whole Region. This
-                        // seems to work (and does technically) but fails with transparent objects. Since the
-                        // region given to BeginDarwLayers() defines the clip region for DrawingLayer paint,
-                        // transparent objects in the single rectangles will indeed be painted multiple times.
-                        DLPrePaint2(vcl::Region(aRect.SVRect()));
-
-                        if ( bPaintsFromSystem )
-                            PaintDesktop(*GetOut(), aRect);
-                        pCurrentLayout->GetCurrShell()->InvalidateWindows(aRect.SVRect());
-
-                        // #i75172# end DrawingLayer paint
-                        DLPostPaint2(true);
+                        InvalidateWindows(aRect.SVRect());
                     }
 
                     lcl_PaintTransparentFormControls(*this, aRect); // i#107365


More information about the Libreoffice-commits mailing list