summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorTobias Madl <tobias.madl.dev@gmail.com>2015-01-21 14:04:59 +0100
committerTobias Madl <tobias.madl.dev@gmail.com>2015-03-06 12:27:08 +0000
commit0e10b34342bd7b94b69f2eac8c9b1df89a2725f3 (patch)
tree42f9bace58a807cf98b3c11a33bdd7ac5820fc8b /vcl
parentb380220bc1404ed5a9daa1a28f70696e84543f61 (diff)
Idle: New enum system, comments
Change-Id: I8ca272481e573bf3338c5c1b9873a39022928812
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/app/idle.cxx68
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: */