diff options
author | Tobias Madl <tobias.madl.dev@gmail.com> | 2015-01-21 14:04:59 +0100 |
---|---|---|
committer | Tobias Madl <tobias.madl.dev@gmail.com> | 2015-03-06 12:27:08 +0000 |
commit | 0e10b34342bd7b94b69f2eac8c9b1df89a2725f3 (patch) | |
tree | 42f9bace58a807cf98b3c11a33bdd7ac5820fc8b /vcl | |
parent | b380220bc1404ed5a9daa1a28f70696e84543f61 (diff) |
Idle: New enum system, comments
Change-Id: I8ca272481e573bf3338c5c1b9873a39022928812
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/idle.cxx | 68 |
1 files changed, 18 insertions, 50 deletions
diff --git a/vcl/source/app/idle.cxx b/vcl/source/app/idle.cxx index 37299def6201..cc92d3681441 100644 --- a/vcl/source/app/idle.cxx +++ b/vcl/source/app/idle.cxx @@ -26,17 +26,17 @@ struct ImplIdleData { - ImplIdleData* mpNext; // Pointer to the next Instance + ImplIdleData* mpNext; // Pointer to the next element in list Idle* mpIdle; // Pointer to VCL Idle instance - bool mbDelete; // Was Idle deleted during Update()? - bool mbInIdle; // Are we in a idle handler? + bool mbDelete; // Destroy this idle? + bool mbInIdle; // Idle handler currently processed? void Invoke() { if (mbDelete || mbInIdle ) return; - mpIdle->SetPriority(mpIdle->GetDefaultPriority()); + mpIdle->SetSchedulingPriority(convertToInt(mpIdle->GetDefaultPriority())); mbDelete = true; mpIdle->mbActive = false; @@ -65,49 +65,16 @@ struct ImplIdleData // the current is the new most urgent. So starving is impossible. if ( p->mpIdle->GetPriority() < pMostUrgent->mpIdle->GetPriority() ) { - IncreasePriority(pMostUrgent->mpIdle); + pMostUrgent->mpIdle->SetSchedulingPriority( pMostUrgent->mpIdle->GetPriority() - 1); pMostUrgent = p; } else - IncreasePriority(p->mpIdle); + p->mpIdle->SetSchedulingPriority( p->mpIdle->GetPriority() - 1); } } return pMostUrgent; } - - static void IncreasePriority( Idle *pIdle ) - { - switch(pIdle->GetPriority()) - { - // Increase priority based on their current priority; - // (so don't use VCL_IDLE_PRIORITY_STARVATIONPROTECTION for default-priority!) - case IdlePriority::VCL_IDLE_PRIORITY_STARVATIONPROTECTION: - break; - // If already highest priority -> extra state for starving tasks - case IdlePriority::VCL_IDLE_PRIORITY_HIGHEST: - pIdle->SetPriority(IdlePriority::VCL_IDLE_PRIORITY_STARVATIONPROTECTION); - break; - case IdlePriority::VCL_IDLE_PRIORITY_HIGH: - pIdle->SetPriority(IdlePriority::VCL_IDLE_PRIORITY_HIGHEST); - break; - case IdlePriority::VCL_IDLE_PRIORITY_REPAINT: - pIdle->SetPriority(IdlePriority::VCL_IDLE_PRIORITY_HIGH); - break; - case IdlePriority::VCL_IDLE_PRIORITY_MEDIUM: - pIdle->SetPriority(IdlePriority::VCL_IDLE_PRIORITY_REPAINT); - break; - case IdlePriority::VCL_IDLE_PRIORITY_LOW: - pIdle->SetPriority(IdlePriority::VCL_IDLE_PRIORITY_MEDIUM); - break; - case IdlePriority::VCL_IDLE_PRIORITY_LOWER: - pIdle->SetPriority(IdlePriority::VCL_IDLE_PRIORITY_LOW); - break; - case IdlePriority::VCL_IDLE_PRIORITY_LOWEST: - pIdle->SetPriority(IdlePriority::VCL_IDLE_PRIORITY_LOWER); - break; - } - } }; void Idle::ImplDeInitIdle() @@ -149,7 +116,7 @@ void Idle::ProcessAllIdleHandlers() pIdleData = pSVData->mpFirstIdleData; while ( pIdleData ) { - // Was idle destroyed in the meantime? + // Should idle be released from scheduling? if ( pIdleData->mbDelete ) { if ( pPrevIdleData ) @@ -172,11 +139,12 @@ void Idle::ProcessAllIdleHandlers() void Idle::SetPriority( IdlePriority ePriority ) { - mePriority = ePriority; - // Was a new priority set before excecution? - // Then take it as default priority - if( !mbActive && meDefaultPriority == IdlePriority::VCL_IDLE_PRIORITY_DEFAULT ) - meDefaultPriority = mePriority; + meDefaultPriority = ePriority; +} + +void Idle::SetSchedulingPriority( sal_Int32 iPriority ) +{ + miPriority = iPriority; } void Idle::DoIdle() @@ -228,7 +196,7 @@ Idle& Idle::operator=( const Idle& rIdle ) Stop(); mbActive = false; - mePriority = rIdle.mePriority; + miPriority = rIdle.miPriority; meDefaultPriority = rIdle.meDefaultPriority; maIdleHdl = rIdle.maIdleHdl; @@ -240,15 +208,15 @@ Idle& Idle::operator=( const Idle& rIdle ) Idle::Idle(): mpIdleData(NULL), - mePriority(IdlePriority::VCL_IDLE_PRIORITY_DEFAULT), - meDefaultPriority(IdlePriority::VCL_IDLE_PRIORITY_DEFAULT), + miPriority(convertToInt(IdlePriority::VCL_IDLE_PRIORITY_HIGH)), + meDefaultPriority(IdlePriority::VCL_IDLE_PRIORITY_HIGH), mbActive(false) { } Idle::Idle( const Idle& rIdle ): mpIdleData(NULL), - mePriority(rIdle.mePriority), + miPriority(rIdle.miPriority), meDefaultPriority(rIdle.meDefaultPriority), mbActive(false), maIdleHdl(rIdle.maIdleHdl) @@ -265,4 +233,4 @@ Idle::~Idle() mpIdleData->mpIdle = NULL; } } -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |