summaryrefslogtreecommitdiff
path: root/vcl/source/window
diff options
context:
space:
mode:
authorTobias Madl <tobias.madl.dev@gmail.com>2014-10-30 20:07:59 +0100
committerMichael Meeks <michael.meeks@collabora.com>2014-11-05 20:59:44 +0000
commitd6e89e7516271d246b255ec5ebc752713da3dfd5 (patch)
treebcbcf58593f6191eb88057f2da2ea8ff2fa15410 /vcl/source/window
parent9632045906baf165076d11a97f45b153d8e2acb7 (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.cxx16
-rw-r--r--vcl/source/window/window.cxx14
-rw-r--r--vcl/source/window/winproc.cxx2
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
}