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

Tor Lillqvist tml at collabora.com
Tue Mar 11 06:17:40 PDT 2014


 vcl/source/window/window.cxx |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

New commits:
commit 2c18f34e422418a18e2fe6608372f0ba0c61c0b7
Author: Tor Lillqvist <tml at collabora.com>
Date:   Tue Mar 11 15:06:33 2014 +0200

    We do seem to need the "resize timer" after all in tiled rendering
    
    Otherwise even a trivial test document renders extremely badly, just
    the top row of text in tiles here and there. Go figure. Maybe the code
    thinks the document "window" is of some ridiculous 1x1 size or
    something if the resize timer isn't used? Also, the resize timer
    handler calls paint functionality.
    
    I wonder how we can be sure that the resize timer happens to fire
    during the rendering a tile, though? Surely if the tile rendering call
    returns before the timer fires, whatever essential thing it is that
    the timer needs to do, doesn't happen. Maybe this then explains the
    blank tiles I occasionally see? On the other hand, when I see them,
    they don't appear randomly, but it's always the same tile that shows
    up blank.
    
    Change-Id: If5e6854d8846fb0b7bea15547a326bd77f23987b

diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index f5be436..691a17d 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -924,9 +924,9 @@ void Window::ImplInit( Window* pParent, WinBits nStyle, SystemParentData* pSyste
         {
             mpWindowImpl->mpFrameData->maPaintTimer.SetTimeout( 30 );
             mpWindowImpl->mpFrameData->maPaintTimer.SetTimeoutHdl( LINK( this, Window, ImplHandlePaintHdl ) );
-            mpWindowImpl->mpFrameData->maResizeTimer.SetTimeout( 50 );
-            mpWindowImpl->mpFrameData->maResizeTimer.SetTimeoutHdl( LINK( this, Window, ImplHandleResizeTimerHdl ) );
         }
+        mpWindowImpl->mpFrameData->maResizeTimer.SetTimeout( 50 );
+        mpWindowImpl->mpFrameData->maResizeTimer.SetTimeoutHdl( LINK( this, Window, ImplHandleResizeTimerHdl ) );
         mpWindowImpl->mpFrameData->mbInternalDragGestureRecognizer = false;
 
         if ( pRealParent && IsTopWindow() )
@@ -2628,7 +2628,11 @@ IMPL_LINK_NOARG(Window, ImplHandleResizeTimerHdl)
     if( mpWindowImpl->mbReallyVisible )
     {
         ImplCallResize();
-        if( mpWindowImpl->mpFrameData->maPaintTimer.IsActive() )
+        if( ImplDoTiledRendering() )
+        {
+            ImplHandlePaintHdl(NULL);
+        }
+        else if( mpWindowImpl->mpFrameData->maPaintTimer.IsActive() )
         {
             mpWindowImpl->mpFrameData->maPaintTimer.Stop();
             mpWindowImpl->mpFrameData->maPaintTimer.GetTimeoutHdl().Call( NULL );


More information about the Libreoffice-commits mailing list