LibreOffice Module vcl (master) 1
|
#include <task.hxx>
Public Member Functions | |
Task (const char *pDebugName) | |
Task (const Task &rTask) | |
virtual | ~Task () COVERITY_NOEXCEPT_FALSE |
Task & | operator= (const Task &rTask) |
void | SetPriority (TaskPriority ePriority) |
TaskPriority | GetPriority () const |
const char * | GetDebugName () const |
virtual void | Invoke ()=0 |
virtual void | Start (bool bStartTimer=true) |
Schedules the task for execution. More... | |
void | Stop () |
bool | IsActive () const |
void | SetStatic () |
This function must be called for static tasks, so the Task destructor ignores the scheduler mutex, as it may not be available anymore. More... | |
bool | IsStatic () const |
Protected Member Functions | |
const ImplSchedulerData * | GetSchedulerData () const |
virtual void | SetDeletionFlags () |
virtual sal_uInt64 | UpdateMinPeriod (sal_uInt64 nTimeNow) const =0 |
How long (in MS) until the Task is ready to be dispatched? More... | |
Static Protected Member Functions | |
static void | StartTimer (sal_uInt64 nMS) |
Private Attributes | |
ImplSchedulerData * | mpSchedulerData |
Pointer to the element in scheduler list. More... | |
const char * | mpDebugName |
Useful for debugging. More... | |
TaskPriority | mePriority |
Task priority. More... | |
bool | mbActive |
Currently in the scheduler. More... | |
bool | mbStatic |
Is a static object. More... | |
Friends | |
class | Scheduler |
struct | ImplSchedulerData |
Task::Task | ( | const char * | pDebugName | ) |
Definition at line 633 of file scheduler.cxx.
References DEFAULT, mbActive, and mpDebugName.
Task::Task | ( | const Task & | rTask | ) |
Definition at line 643 of file scheduler.cxx.
References IsActive(), mbActive, mpDebugName, and Start().
|
virtual |
Definition at line 655 of file scheduler.cxx.
References utl::ConfigManager::IsFuzzing(), IsStatic(), mpSchedulerData, and ImplSchedulerData::mpTask.
|
inline |
Definition at line 82 of file task.hxx.
Referenced by Scheduler::CallbackTaskScheduling(), Scheduler::ImplDeInitScheduler(), and Scheduler::ProcessEventsToIdle().
|
inline |
Definition at line 80 of file task.hxx.
References ImplSchedulerData::mePriority.
Referenced by AppendSchedulerData(), and Idle::Start().
|
inlineprotected |
Definition at line 56 of file task.hxx.
Referenced by Timer::UpdateMinPeriod().
|
pure virtual |
Implemented in Timer, DebugEventInjector, and JSDialogNotifyIdle.
Referenced by Scheduler::CallbackTaskScheduling().
|
inline |
Definition at line 101 of file task.hxx.
References mbActive.
Referenced by Scheduler::CallbackTaskScheduling(), SelectionEngine::Command(), IdleFormatter::DoIdleFormat(), IdleFormatter::ForceTimeout(), SystemWindow::hasPendingLayout(), operator=(), Scheduler::ProcessEventsToIdle(), DockingWindow::queue_resize(), vcl::RoadmapWizard::queue_resize(), SelectionEngine::SelMouseMove(), Timer::SetTimeout(), SelectionEngine::SetUpdateInterval(), InterimItemWindow::StartIdleLayout(), and Task().
|
inline |
Definition at line 616 of file scheduler.cxx.
References IsActive(), mbActive, mePriority, Start(), and Stop().
Referenced by Timer::operator=().
|
protectedvirtual |
Reimplemented in Timer.
Definition at line 549 of file scheduler.cxx.
References mbActive.
Referenced by Scheduler::CallbackTaskScheduling(), and Timer::SetDeletionFlags().
void Task::SetPriority | ( | TaskPriority | ePriority | ) |
Definition at line 606 of file scheduler.cxx.
References mbActive, mePriority, mpSchedulerData, and SAL_WARN_IF.
Referenced by Idle::Idle(), IdleFormatter::IdleFormatter(), ImplFrameData::ImplFrameData(), DockingWindow::ImplInitDockingWindowData(), InterimItemWindow::InterimItemWindow(), SvInplaceEdit2::LoseFocus(), MenuBarUpdateIconManager::MenuBarUpdateIconManager(), vcl::PrintDialog::PrintDialog(), vcl::RoadmapWizard::RoadmapWizard(), SalInstanceAssistant::SalInstanceAssistant(), SvImpLBox::SvImpLBox(), SvxIconChoiceCtrl_Impl::SvxIconChoiceCtrl_Impl(), SystemWindow::SystemWindow(), and Timer::Timer().
|
inline |
This function must be called for static tasks, so the Task destructor ignores the scheduler mutex, as it may not be available anymore.
The cleanup is still correct, as it has already happened in DeInitScheduler call well before the static destructor calls.
Definition at line 109 of file task.hxx.
Referenced by Scheduler::ImplDeInitScheduler().
|
virtual |
Schedules the task for execution.
If the timer is already active, it's reset! Check with Task::IsActive() to prevent reset.
If you unset bStartTimer, the Task must call Task::StartTimer(...) to be correctly scheduled! Otherwise it might just be picked up when the Scheduler runs the next time.
bStartTimer | if false, don't schedule the Task by calling Task::StartTimer(0). |
Reimplemented in Idle, and Timer.
Definition at line 554 of file scheduler.cxx.
References AppendSchedulerData(), tools::Time::GetSystemTicks(), ImplGetSVData(), ImplSchedulerData, ImplSVData::maSchedCtx, mbActive, ImplSchedulerContext::mbActive, ImplSchedulerData::mbInScheduler, mePriority, ImplSchedulerData::mePriority, ImplSchedulerData::mnUpdateTime, mpSchedulerData, ImplSchedulerData::mpTask, SAL_INFO, and StartTimer().
Referenced by operator=(), Idle::Start(), Timer::Start(), and Task().
|
staticprotected |
Definition at line 544 of file scheduler.cxx.
References tools::Time::GetSystemTicks(), and Scheduler::ImplStartTimer().
Referenced by Timer::SetTimeout(), Start(), Idle::Start(), and Timer::Start().
void Task::Stop | ( | ) |
Definition at line 599 of file scheduler.cxx.
References tools::Time::GetSystemTicks(), mbActive, mpSchedulerData, and SAL_INFO_IF.
Referenced by SvInplaceEdit2::CallCallBackHdl_Impl(), MenuFloatingWindow::ChangeHighlightItem(), Animation::Clear(), SelectionEngine::Command(), SvImpLBox::Command(), InterimItemWindow::dispose(), SystemWindow::dispose(), HelpTextWindow::dispose(), vcl::RoadmapWizard::dispose(), MenuFloatingWindow::doShutdown(), IdleFormatter::ForceTimeout(), SvxIconChoiceCtrl_Impl::ImpArrange(), weld::IMPL_LINK_NOARG(), MenuFloatingWindow::ImplScroll(), SvImpLBox::KeyInput(), InterimItemWindow::Layout(), SvImpLBox::LoseFocus(), SvImpLBox::MouseButtonDown(), SpinField::MouseButtonUp(), SpinField::MouseMove(), MenuFloatingWindow::MouseMove(), operator=(), MenuBarUpdateIconManager::RemoveBubbleWindow(), SelectionEngine::Reset(), SelectionEngine::SelMouseButtonUp(), DockingWindow::setOptimalLayoutSize(), SelectionEngine::SetUpdateInterval(), Animation::Start(), weld::ButtonPressRepeater::Stop(), Animation::Stop(), MenuFloatingWindow::StopExecute(), vcl::QuickSelectionEngine_Data::~QuickSelectionEngine_Data(), SelectionEngine::~SelectionEngine(), and SvImpLBox::~SvImpLBox().
|
protectedpure virtual |
How long (in MS) until the Task is ready to be dispatched?
Simply return Scheduler::ImmediateTimeoutMs if you're ready, like an Idle. If you have to return Scheduler::InfiniteTimeoutMs, you probably need another mechanism to wake up the Scheduler or rely on other Tasks to be scheduled, or simply use a polling Timer.
nTimeNow | the current time |
Implemented in Idle, and Timer.
Referenced by Scheduler::CallbackTaskScheduling().
|
friend |
|
private |
Currently in the scheduler.
Definition at line 50 of file task.hxx.
Referenced by Scheduler::ImplDeInitScheduler(), operator=(), SetDeletionFlags(), SetPriority(), Start(), and Stop().
|
private |
Task priority.
Definition at line 49 of file task.hxx.
Referenced by operator=(), SetPriority(), and Start().
|
private |
|
private |
Pointer to the element in scheduler list.
Definition at line 47 of file task.hxx.
Referenced by Scheduler::CallbackTaskScheduling(), Scheduler::ImplDeInitScheduler(), SetPriority(), Start(), Stop(), and ~Task().