diff options
author | Tobias Madl <tobias.madl.dev@gmail.com> | 2014-10-30 20:07:59 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2014-11-05 20:59:44 +0000 |
commit | d6e89e7516271d246b255ec5ebc752713da3dfd5 (patch) | |
tree | bcbcf58593f6191eb88057f2da2ea8ff2fa15410 /vcl/source/window | |
parent | 9632045906baf165076d11a97f45b153d8e2acb7 (diff) |
Basic Idle handler implementation
An idle handler will ultimately be a zero time timeout with
prioritisation layered on top of that.
Change-Id: I3f0802d5001172fc7b8409274bc5a3632e5dad34
Diffstat (limited to 'vcl/source/window')
-rw-r--r-- | vcl/source/window/paint.cxx | 16 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 14 | ||||
-rw-r--r-- | vcl/source/window/winproc.cxx | 2 |
3 files changed, 16 insertions, 16 deletions
diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx index ce10abae4ae3..7ec329cc1388 100644 --- a/vcl/source/window/paint.cxx +++ b/vcl/source/window/paint.cxx @@ -283,8 +283,8 @@ void Window::ImplCallOverlapPaint() void Window::ImplPostPaint() { - if ( !ImplDoTiledRendering() && !mpWindowImpl->mpFrameData->maPaintTimer.IsActive() ) - mpWindowImpl->mpFrameData->maPaintTimer.Start(); + if ( !ImplDoTiledRendering() && !mpWindowImpl->mpFrameData->maPaintIdle.IsActive() ) + mpWindowImpl->mpFrameData->maPaintIdle.Start(); } IMPL_LINK_NOARG(Window, ImplHandlePaintHdl) @@ -292,14 +292,14 @@ IMPL_LINK_NOARG(Window, ImplHandlePaintHdl) // save paint events until layout is done if (!ImplDoTiledRendering() && IsSystemWindow() && static_cast<const SystemWindow*>(this)->hasPendingLayout()) { - mpWindowImpl->mpFrameData->maPaintTimer.Start(); + mpWindowImpl->mpFrameData->maPaintIdle.Start(); return 0; } // save paint events until resizing is done if( !ImplDoTiledRendering() && - mpWindowImpl->mbFrame && mpWindowImpl->mpFrameData->maResizeTimer.IsActive() ) - mpWindowImpl->mpFrameData->maPaintTimer.Start(); + mpWindowImpl->mbFrame && mpWindowImpl->mpFrameData->maResizeIdle.IsActive() ) + mpWindowImpl->mpFrameData->maPaintIdle.Start(); else if ( mpWindowImpl->mbReallyVisible ) ImplCallOverlapPaint(); return 0; @@ -314,10 +314,10 @@ IMPL_LINK_NOARG(Window, ImplHandleResizeTimerHdl) { ImplHandlePaintHdl(NULL); } - else if( mpWindowImpl->mpFrameData->maPaintTimer.IsActive() ) + else if( mpWindowImpl->mpFrameData->maPaintIdle.IsActive() ) { - mpWindowImpl->mpFrameData->maPaintTimer.Stop(); - mpWindowImpl->mpFrameData->maPaintTimer.GetTimeoutHdl().Call( NULL ); + mpWindowImpl->mpFrameData->maPaintIdle.Stop(); + mpWindowImpl->mpFrameData->maPaintIdle.GetIdleHdl().Call( NULL ); } } diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 606a4f551ead..b4468848ef20 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -1029,11 +1029,11 @@ void Window::ImplInit( vcl::Window* pParent, WinBits nStyle, SystemParentData* p mpWindowImpl->mpFrameData->mbSysObjFocus = false; if (!ImplDoTiledRendering()) { - mpWindowImpl->mpFrameData->maPaintTimer.SetTimeout( 30 ); - mpWindowImpl->mpFrameData->maPaintTimer.SetTimeoutHdl( LINK( this, Window, ImplHandlePaintHdl ) ); + mpWindowImpl->mpFrameData->maPaintIdle.SetPriority( VCL_IDLE_PRIORITY_REPAINT ); + mpWindowImpl->mpFrameData->maPaintIdle.SetIdleHdl( LINK( this, Window, ImplHandlePaintHdl ) ); } - mpWindowImpl->mpFrameData->maResizeTimer.SetTimeout( 50 ); - mpWindowImpl->mpFrameData->maResizeTimer.SetTimeoutHdl( LINK( this, Window, ImplHandleResizeTimerHdl ) ); + mpWindowImpl->mpFrameData->maResizeIdle.SetPriority( VCL_IDLE_PRIORITY_RESIZE ); + mpWindowImpl->mpFrameData->maResizeIdle.SetIdleHdl( LINK( this, Window, ImplHandleResizeTimerHdl ) ); mpWindowImpl->mpFrameData->mbInternalDragGestureRecognizer = false; if ( pRealParent && IsTopWindow() ) @@ -2476,11 +2476,11 @@ Size Window::GetSizePixel() const } // #i43257# trigger pending resize handler to assure correct window sizes - if( mpWindowImpl->mpFrameData->maResizeTimer.IsActive() ) + if( mpWindowImpl->mpFrameData->maResizeIdle.IsActive() ) { ImplDelData aDogtag( this ); - mpWindowImpl->mpFrameData->maResizeTimer.Stop(); - mpWindowImpl->mpFrameData->maResizeTimer.GetTimeoutHdl().Call( NULL ); + mpWindowImpl->mpFrameData->maResizeIdle.Stop(); + mpWindowImpl->mpFrameData->maResizeIdle.GetIdleHdl().Call( NULL ); if( aDogtag.IsDead() ) return Size(0,0); } diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx index 62974ca3621e..ee864f4de982 100644 --- a/vcl/source/window/winproc.cxx +++ b/vcl/source/window/winproc.cxx @@ -1596,7 +1596,7 @@ void ImplHandleResize( vcl::Window* pWindow, long nNewWidth, long nNewHeight ) bStartTimer = false; if( bStartTimer ) - pWindow->ImplGetWindowImpl()->mpFrameData->maResizeTimer.Start(); + pWindow->ImplGetWindowImpl()->mpFrameData->maResizeIdle.Start(); else pWindow->ImplCallResize(); // otherwise menus cannot be positioned } |