Development/LHM LiMux/Main Loop
< Development | LHM LiMux
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
Main Loop
- Analysis - parallelizable!
- Understand model of glib idle main loop.
- Understand current LibreOffice idle main loop implementation and distill corresponding scheduling strategy.
- Clarify which scheduling strategy is desired finally and distill required abstractions (e.g. dependencies, priorities, time slots, \u2026)
- Classify existing calls to scheduling interface according to required abstractions (see above).
- Implementation - step-by-step where each step yields a running system!
- Tune existing scheduling interfaces if sensible.
- Formal extension of the scheduling interface to take into account newly required abstractions.
- Replace existing schedule by new one.
- Make actually use of new scheduling strategy.
- Fine-tuning of abstraction parameters.
File:FOSDEM2015 main loop optimization (Madl).odp
Current matter of affair LO
The following graphic shows the cycle of the main loop:
Class /core/vcl/source/app/timer.cxx:
Method | Function |
---|---|
void Timer::ImplDeInitTimer() | garbage collector. Kills the timer queue thread. |
void Timer::ImplStartTimer(ImplSVData* pSVData, sal_uLong nMS) | Starts the sal timer (mpSalTimer->Start(nMS)). Assumes underlying timers are recurring timers. |
void Timer::ImplTimerCallbackProc() | Finds timer where the timer handler needs to be called (not deleted, not new, not in the timer handler yet). Calls the Timeout. Determines new time for timer. Deletes clock if no more timers are available. |
Timer::Timer() | Default Timer; mpTimerData(NULL),mnTimeout(1),mbActive(false), mbAuto(false) |
Timer::Timer(const Timer& rTimer) | mpTimerData(NULL),mnTimeout(rTimer.mnTimeout),mbActive(false), mbAuto(false), maTimeoutHdl(rTimer.maTimeoutHdl); if rTimer is active then start it |
Timer::~Timer() | Deconstructor |
void Timer::Timeout() | executes maTimeoutHdl.Call(this); |
void Timer::SetTimeout(sal_uLong nNewTimeout) | Sets new Timeout; If Timer is activated already, reset clock. |
void Timer::Start() | inserts timer and starts it |
void Timer::Stop() | stops timer |
Git d7646a56c3555bae8ade3f996f2037472160f90c
Timers used at the moment:
Dateipfad | Timer | Link | Timeout | Art | Funktion |
---|---|---|---|---|---|
cui/source/tabpages/macroass.cxx | mpImpl->maFillGroupTimer | _SfxMacroTabPage, TimeOut_Impl | 0 | idle | fills macro list |
sc/source/ui/docshell/autostyl.cxx | aInitTimer | ScAutoStyleList, InitHdl | 0 | idle | inits styles |
sfx2/source/appl/appcfg.cxx | pTimer->SetTimeout | SfxEventAsyncer_Impl, TimerHdl | 0 | idle | |
sfx2/source/control/bindings.cxx | aTimer | SfxAsyncExec_Impl, TimerHdl | 0 | autotimer | |
svtools/source/contnr/svimpbox.cxx: | aAsyncBeginDragTimer | SvImpLBox,BeginDragHdl | 0 | timer | async start drag |
svtools/source/control/asynclink.cxx: | _pTimer->SetTimeout | AsynchronLink, HandleCall | 0 | Idle | Acquire Mutex |
avmedia/source/opengl/oglplayer.cxx | m_aTimer | OGLPlayer,TimerHandler | 1 | autotimer | |
basctl/source/dlged/dlged.cxx | aPaintTimer | DlgEditor, PaintTimeout | 1 | idle | paint/repaint Removed |
sfx2/source/appl/newhelp.cxx | aKeywordTimer | IndexTabPage_Impl, TimeoutHdl | 1 | timer | calls link |
svx/source/sdr/overlay/overlaymanagerbuffered.cxx: | maBufferTimer | OverlayManagerBuffered, ImpBufferTimerHandler | 1 | idle | for selction refresch (e.g. in sw, select text) |
svx/source/svdraw/svdibrow.cxx: | aIdleTimer | SdrItemBrowser,IdleHdl | 1 | idle | undirties sth. when objects are marked |
svx/source/svdraw/svdpntv.cxx: | aComeBackTimer | SdrPaintView,ImpComeBackHdl | 1 -> Repaint | idle | model has changed --> update view |
cui/source/dialogs/cuigrfflt.cxx | maTimer | GraphicFilterDialog, ImplPreviewTimeoutHdl | 5 | timer | SetPreview |
editeng/source/editeng/impedit2.cxx | aIdleFormatter | ImpEditEngine, IdleFormatHdl | 5 | idle | edits the current view |
cui/source/tabpages/numfmt.cxx | aResetWinTimer | SvxNumberFormatTabPage, TimeHdl_Impl | 10 | timer | sets pLastActivWindow to NULL; resets the window timer |
framework/source/uielement/menubarmanager.cxx | m_aAsyncSettingsTimer | MenuBarManager, AsyncSettingsHdl | 10 | timer | handle settings asynchronous changing the menu |
reportdesign/source/ui/dlg/Navigator.cxx | m_aDropActionTimer | NavigatorTree, OnDropActionTimer | 10 | autotimer | expand dropdown menu, scroll in drop down menu |
sc/source/core/tool/chartlis.cxx | aTimer | ScChartListenerCollection, TimerHdl | 10 | idle | waiting for input |
sc/source/ui/app/scmod.cxx | aSpellTimer | ScModule, SpellTimerHdl | 10 | idle | waiting for input |
sc/source/ui/view/tabview5.cxx | aScrollTimer | ScTabView, TimerHdl | 10 | timer | is not started or stoped in this class |
sd/source/ui/dlg/brkdlg.cxx | aTimer | BreakDlg, InitialUpdate | 10 | idle | initial update |
svtools/source/contnr/imivctl1.cxx: | aTimer | IcnViewEdit_Impl,Timeout_Impl | 10 | idle | call callback |
svtools/source/contnr/treelistbox.cxx: | aTimer | SvInplaceEdit2,Timeout_Impl | 10 | idle | call callback |
svx/source/form/filtnav.cxx: | m_aDropActionTimer | FmFilterNavigator, OnDropActionTimer | 10 | autotimer | |
svx/source/form/navigatortree.cxx: | m_aDropActionTimer | NavigatorTree, OnDropActionTimer | 10 | autotimer | |
chart2/source/view/charttypes/GL3DBarChart.cxx | maTimer | GL3DBarChart, UpdateTimerHdl | 15 | idle | updates screen text |
chart2/source/view/main/ChartView.cxx | maTimeBased.maTimer | ChartView, UpdateTimeBased | 15 | timer | update timebased |
sd/source/ui/sidebar/MasterPageContainerQueue.cxx | maDelayedPreviewCreationTimer | MasterPageContainerQueue,DelayedPreviewCreation | 15 | timer | for the delayed creation of preview bitmaps |
sd/source/ui/slideshow/slideshowimpl.cxx | maDeactivateTimer | SlideshowImpl, deactivateHdl | 20 | timer | deactivates something |
sd/source/ui/slideshow/slideshowimpl.cxx | maInputFreezeTimer | SlideshowImpl, ReadyForNextInputHdl | 20 | timer | used to unfreeze user input |
sd/source/ui/slidesorter/controller/SlsAnimator.cxx | maTimer | Animator,TimeoutHandler | 25 | idle | repaint |
sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx | maAutoScrollTimer | ScrollBarManager, AutoScrollTimeoutHandler | 25 | timer | repeat autoscroll |
slideshow/test/demoshow.cxx: | maUpdateTimer | DemoWindow, updateHdl | 30 | autotimer | inits DemoWindow; updates mxShow |
svtools/source/control/tabbar.cxx: | maLoseFocusTimer | TabBarEdit, ImplEndTimerHdl | 30 | idle | lose focus |
vcl/source/window/window.cxx: | mpWindowImpl->mpFrameData->maPaintTimer | Window, ImplHandlePaintHdl | 30 | idle | |
sw/source/uibase/misc/swruler.cxx: | maFadeTimer | SwCommentRuler, FadeHandler | 40 | timer | event for high/'low'light fading |
basctl/source/dlged/dlgedfunc.cxx | aScrollTimer | DlgEdFunc, ScrollTimeout | 50 | Timer | Scroll Timer |
cui/source/tabpages/numpages.cxx | aInvalidateTimer | SvxNumOptionsTabPage, PreviewInvalidateHdl_Impl | 50 | timer | loading of graphics in the SvxBrushItem |
desktop/source/deployment/gui/dp_gui_dialog2.cxx | m_aTimeoutTimer | UpdateRequiredDialog, TimeOutHdl | 50 | idle | updates dialog |
extensions/source/plugin/aqua/sysplug.mm | m_pNullTimer | MacPluginComm, NullTimerHdl | 50 | autotimer | |
framework/source/layoutmanager/layoutmanager.cxx | m_aAsyncLayoutTimer | LayoutManager, AsyncLayoutHdl | 50 | timer | async resize |
framework/source/uielement/toolbarmanager.cxx | m_aAsyncUpdateControllersTimer | ToolBarManager, AsyncUpdateControllersHdl | 50 | timer | async Manager |
reportdesign/source/ui/report/dlgedfunc.cxx | aScrollTimer | DlgEdFunc, ScrollTimeout | 50 | timer | scroll |
sc/source/ui/dbgui/filtdlg.cxx | pTimer | ScFilterDlg, TimeOutHdl | 50 | idle | RefInput control |
sc/source/ui/dbgui/sfiltdlg.cxx | pTimer | ScSpecialFilterDlg, TimeOutHdl | 50 | Idle | Check RefInputMode |
sc/source/ui/drawfunc/fupoor.cxx | aScrollTimer | FuPoor, ScrollHdl | 50 | timer | scroll |
sc/source/ui/miscdlgs/acredlin.cxx | aReOpenTimer | ScAcceptChgDlg, ReOpenTimerHdl | 50 | idle | auto reopen |
sd/source/ui/dlg/dlgass.cxx | maEffectPrevTimer | AssistentDlgImpl, EffectPreviewHdl | 50 | idle | apply selected page |
sd/source/ui/dlg/dlgass.cxx | maUpdatePageListTimer | AssistentDlgImpl, UpdatePageListHdl | 50 | idle | updates pagelist |
sd/source/ui/func/fupoor.cxx | aScrollTimer | FuPoor, ScrollHdl | 50 | timer | scroll |
sd/source/ui/view/sdview.cxx | maDropErrorTimer | View, DropErrorHdl | 50 | Idle | Show Error Box |
sd/source/ui/view/sdview.cxx | maDropInsertFileTimer | View, DropInsertFileHdl | 50 | Idle | Insert File |
sfx2/source/control/dispatch.cxx | pImp->aTimer | SfxDispatcher, EventHdl_Impl | 50 | idle | flush and update |
sfx2/source/dialog/basedlgs.cxx: | pImp->aMoveTimer | SfxModelessDialog,TimerHdl | 50 | Idle | resize window. save config information to Views.xcu |
sfx2/source/dialog/basedlgs.cxx: | pImp->aMoveTimer | SfxFloatingWindow,TimerHdl | 50 | Idle | resize window. save config information to Views.xcu |
sfx2/source/dialog/dockwin.cxx: | pImp->aMoveTimer | SfxDockingWindow,TimerHdl | 50 | Idle | Save window status info after e.g. resize |
svtools/source/contnr/imivctl1.cxx: | aDocRectChangedTimer | SvxIconChoiceCtrl_Impl,DocRectChangedHdl | 50 | Idle | Doc Rect Changed |
svtools/source/contnr/imivctl1.cxx: | aVisRectChangedTimer | SvxIconChoiceCtrl_Impl,VisRectChangedHdl | 50 | Idle | Vis Rect Changed |
svtools/source/dialogs/wizdlg.cxx: | maWizardLayoutTimer | WizardDialog, ImplHandleWizardLayoutTimerHdl | 50 | idle | ImplPosCtrls/ImplPosTabPage |
svx/source/dialog/_contdlg.cxx: | aCreateTimer | SvxSuperContourDlg, CreateHdl | 50 | idle | creates graphic |
svx/source/sidebar/PanelLayout.cxx: | m_aPanelLayoutTimer | PanelLayout, ImplHandlePanelLayoutTimerHdl | 50 | idle | sets layout allocation |
sw/source/uibase/docvw/HeaderFooterWin.cxx: | m_aFadeTimer | SwHeaderFooterWin, FadeHandler | 50 | timer | event for high/'low'light fading |
sw/source/uibase/docvw/PageBreakWin.cxx: | m_aFadeTimer | SwPageBreakWin, FadeHandler | 50 | timer | event for high/'low'light fading |
vcl/source/window/dockmgr.cxx: | maDockTimer | ImplDockFloatWin2, DockTimerHdl | 50 | Idle | Dock Window |
vcl/source/window/dockmgr.cxx: | maEndDockTimer | ImplDockFloatWin2, EndDockTimerHdl | 50 | Idle | End Dock Window |
vcl/source/window/dockwin.cxx: | maDockTimer | ImplDockFloatWin, DockTimerHdl | 50 | Idle | Dock Window |
vcl/source/window/scrwnd.cxx: | mpTimer->SetTimeoutHdl | ImplWheelWindow, ImplScrollHdl | dynamic | ||
vcl/source/window/syswin.cxx: | maLayoutTimer | SystemWindow, ImplHandleLayoutTimerHdl | 50 | idle | sets position and size |
vcl/source/window/toolbox.cxx: | maTimer | ToolBox, ImplUpdateHdl | 50 | idle | redraw and update implFormat |
vcl/source/window/window.cxx: | mpWindowImpl->mpFrameData->maResizeTimer | Window, ImplHandleResizeTimerHdl | 50 | idle | |
avmedia/source/framework/mediacontrol.cxx | maTimer | MediaControl, implTimeoutHdl | 100 | idle | update |
basctl/source/dlged/dlged.cxx | aMarkTimer | DlgEditor, MarkTimeout | 100 | idle | UpdatePropertyBrowser() |
dbaccess/source/ui/querydesign/JoinTableView.cxx | m_aDragScrollTimer | OJoinTableView, OnDragScrollTimer | 100 | timer | scroll while dragging |
editeng/source/editeng/impedit2.cxx | aOnlineSpellTimer | ImpEditEngine, OnlineSpellHdl | 100 | Timer | do online spelling |
forms/source/component/DatabaseForm.cxx | m_pLoadTimer | OdatabaseForm,OnTimeout | 100 | Timer | Delay SQL Commands |
formula/source/ui/dlg/funcutl.cxx | aTimer | RefEdit, UpdateHdl | 100 | Idle | Update Ref |
reportdesign/source/ui/report/DesignView.cxx | m_aMarkTimer | ODesignView, MarkTimeout | 100 | idle | update view/ window |
sc/source/core/data/documen2.cxx | aTrackTimer | ScDocument, TrackTimeHdl | 100 | idle | track formulas if it isn't in update |
sc/source/ui/miscdlgs/acredlin.cxx | aSelectionTimer | ScAcceptChgDlg, UpdateSelectionHdl | 100 | idle | update selection |
sc/source/ui/miscdlgs/conflictsdlg.cxx | maSelectionTimer | ScConflictsDlg, UpdateSelectionHdl | 100 | idle | update selection |
sd/source/ui/animations/CustomAnimationPane.cxx | maLateInitTimer | CustomAnimationPane, lateInitCallback | 100 | timer | creates preset list after control was painted |
sd/source/ui/dlg/filedlg.cxx | maUpdateTimer | SdFileDialog_Imp, IsMusicStoppedHdl | 100 | idle | updates play button |
sd/source/ui/slidesorter/cache/SlsCacheCompactor.cxx | maCompactionTimer | CacheCompactor,CompactionCallback | 100 | timer | compacts cache |
sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx | maSwitchPageDelayTimer | CurrentSlideManager,SwitchPageCallback | 100 | timer | short delay to allow for more slide switches in the slide sorter |
sd/source/ui/view/ViewShellImplementation.cxx | maTimer | ToolBarManagerLock,TimeoutCallback | 100 | timer | to unlock the update lock when Release() is not called explicitly |
sfx2/source/view/ipclient.cxx: | m_pImp->m_aTimer | m_pImp, SfxInPlaceClient_Impl, TimerHdl | 100 | has to wait for object connection | |
starmath/source/view.cxx: | aInitialFocusTimer | SmCmdBoxWindow, InitialFocusTimerHdl | 100 | Timer | Wait for focus change |
svtools/source/brwbox/datwin.cxx: | aMouseTimer | BrowserDataWin, RepeatedMouseMove | 100 | autotimer | |
svtools/source/contnr/imivctl1.cxx: | aAutoArrangeTimer | SvxIconChoiceCtrl_Impl,AutoArrangeHdl | 100 | idle | arrange; sets virt size |
svx/source/dialog/_contdlg.cxx: | aUpdateTimer | SvxSuperContourDlg, UpdateHdl | 100 | idle | updates graphic |
svx/source/dialog/imapdlg.cxx: | pOwnData->aTimer | SvxIMapDlg, UpdateHdl | 100 | Idle | Update Link |
svx/source/form/fmshimp.cxx: | m_aMarkTimer | FmXFormShell,OnTimeOut | 100 | timer | for delayed mark |
svx/source/tbxctrls/grafctrl.cxx: | maTimer | ImplGrafMetricField, ImplModifyHdl | 100 | idle | makes change value to any |
svx/source/tbxctrls/itemwin.cxx: | aDelayTimer | SvxLineBox, DelayHdl_Impl | 100 | timer | delay timer |
sw/source/core/doc/DocumentStatisticsManager.cxx: | maStatsUpdateTimer | DocumentStatisticsManager, DoIdleStatsUpdate | 100 | timer | Timer for asynchronous stats calculation |
sw/source/uibase/misc/redlndlg.cxx: | aDeselectTimer | SwRedlineAcceptDlg, SelectHdl | 100 | timer | avoid flickering of buttons |
sw/source/uibase/misc/redlndlg.cxx: | aSelectTimer | SwRedlineAcceptDlg, GotoHdl | 100 | timer | avoid multiple selection of the same texts |
vcl/unx/generic/window/salframe.cxx: | maAlwaysOnTopRaiseTimer | X11SalFrame, HandleAlwaysOnTopRaise | 100 | timer | raises window to the top |
sw/source/uibase/uiview/view.cxx: | m_aTimer | SwView, TimeoutHdl | 120 | timer | |
sc/source/ui/app/scmod.cxx | aIdleTimer | ScModule, IdleHandler | 150 | Timer | waiting for input |
sc/source/ui/dbgui/dbnamdlg.cxx | SynFocusTimer | ScDbNameDlg, FocusToComoboxHdl | 150 | timer | Deleted |
avmedia/source/framework/soundhandler.cxx | m_aUpdateTimer | SoundHandler, implts_PlayerNotify | 200 | idle | updates |
basctl/source/basicide/baside2b.cxx | aSyntaxIdleTimer | EditorWindow, SyntaxTimerHdl | 200 | idle | |
cui/source/customize/cfgutil.cxx | aTimer | SfxConfigFunctionListBox, TimerHdl | 200 | timer | nothing?! |
cui/source/customize/selector.cxx | aTimer | SvxConfigFunctionListBox, TimerHdl | 200 | timer | for the ballon help |
dbaccess/source/ui/control/sqledit.cxx | m_timerInvalidate | OSqlEdit, OnInvalidateTimer | 200 | timer | invalidates feature |
dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx | m_timerInvalidate | OSelectionBrowseBox, OnInvalidateTimer | 200 | timer | invalidates feature |
editeng/source/editeng/impedit2.cxx | aStatusTimer | ImpEditEngine, StatusTimerHdl | 200 | timer | calls status |
formula/source/ui/dlg/formula.cxx | m_pImpl->aTimer | FormulaDlg, UpdateFocusHdl | 200 | Idle | Update Focus |
sc/source/ui/formdlg/dwfunctr.cxx | aTimer | ScFunctionDockWin, TimerHdl | 200 | idle | sets new size of control |
sc/source/ui/miscdlgs/anyrefdg.cxx | aTimer | ScRefHandler, UpdateFocusHdl | 200 | idle | grabs focus |
sc/source/ui/miscdlgs/instbdlg.cxx | aBrowseTimer | ScInsertTableDlg, BrowseTimeoutHdl | 200 | browse hdl | |
sd/source/ui/animations/SlideTransitionPane.cxx | maLateInitTimer | SlideTransitionPane, LateInitCallback | 200 | timer | late init |
sd/source/ui/dlg/dlgass.cxx | maPrevTimer | AssistentDlgImpl, UpdatePreviewHdl | 200 | idle | updates preview |
sfx2/source/dialog/splitwin.cxx: | aTimer | pOwner, SfxSplitWindow, TimerHdl | 200 | Timer | Wait before close |
svx/source/form/fmtextcontrolshell.cxx: | m_aClipboardInvalidation | FmTextControlShell, OnInvalidateClipboard | 200 | autotimer | |
svx/source/form/formcontroller.cxx: | m_aFeatureInvalidationTimer | FormController, OnInvalidateFeatures | 200 | timer | async feature invalidation |
svx/source/form/navigatortree.cxx: | m_aSynchronizeTimer | NavigatorTree, OnSynchronizeTimer | 200 | timer | synchronize mark list |
sw/source/uibase/docvw/edtwin.cxx: | m_aKeyInputFlushTimer | SwEditWin, KeyInputFlushHandler | 200 | timer | for ANY-KeyInput question without a following KeyInputEvent |
sw/source/uibase/docvw/srcedtw.cxx: | aSyntaxIdleTimer | SwSrcEditWindow, SyntaxTimerHdl | 200 | idle | syntax idle |
sw/source/uibase/fldui/fldwrap.cxx: | m_aUpdateTimer | SwChildWinWrapper, UpdateHdl | 200 | timer | avoid flickering of buttons |
sw/source/uibase/utlui/unotools.cxx: | aLoadedTimer | SwOneExampleFrame, TimeoutHdl | 200 | idle | loads the view |
sd/source/core/drawdoc4.cxx | mpOnlineSpellingTimer | SdDrawDocument, OnlineSpellingHdl | 250 | Idle | Do online Spelling |
vcl/source/window/toolbox.cxx: | mpData->maDropdownTimer | ToolBox, ImplDropdownLongClickHdl | 250 | timer | long click |
cui/source/options/optjava.cxx | m_aResetTimer | SvxJavaOptionsPage, ResetHdl_Impl | 300 | idle | load JRE's |
dbaccess/source/ui/browser/brwctrlr.cxx | m_aInvalidateClipboard | SbaXDataBrowserController, OnInvalidateClipboard | 300 | autotimer | |
sd/source/ui/framework/module/ShellStackGuard.cxx | maPrinterPollingTimer | ShellStackGuard,TimeoutHandler | 300 | idle | printer polling |
sfx2/source/appl/newhelp.cxx | aFactoryTimer | IndexTabPage_Impl, TimeoutHdl | 300 | idle | Initialize Index |
sfx2/source/control/bindings.cxx | pImp->aTimer. | SfxBindings, NextJob_Impl | dynamic | Autotimer | |
sfx2/source/dialog/dinfdlg.cxx: | m_aEditLoseFocusTimer | CustomPropertiesWindow, EditTimeoutHdl | 300 | Idle | Lose Focus |
sfx2/source/dialog/dinfdlg.cxx: | m_aBoxLoseFocusTimer | CustomPropertiesWindow, BoxTimeoutHdl | 300 | Idle | Lose Focus |
svx/source/dialog/svxbmpnumvalueset.cxx: | aFormatTimer | SvxBmpNumValueSet, FormatHdl_Impl | 300 | Idle | Format graphics |
cui/source/tabpages/chardlg.cxx | m_pImpl->m_aUpdateTimer | SvxCharNamePage, UpdateHdl_Impl | 350 | Idle | Update Preview |
vcl/source/app/idlemgr.cxx: | maTimer | ImplIdleMgr, TimeoutHdl | 350 | Autotimer | Insert handler |
extensions/source/bibliography/bibcont.cxx | aTimer | BibBookContainer, SplitHdl | 400 | Idle | Split Bib |
extensions/source/bibliography/toolbar.cxx | aTimer | BibToolBar, SendSelHdl | 400 | Idle | Send Dispatch |
extensions/source/update/ui/updatecheckui.cxx | maWaitTimer | UpdateCheckUI, WaitTimeOutHdl | 400 | Idle | Show Bubble Window |
sc/source/ui/drawfunc/fupoor.cxx | aDragTimer | FuPoor, DragTimerHdl | 400 | Timer | Drag & Drop Timeout |
sd/source/ui/func/fupoor.cxx | aDragTimer | FuPoor, DragHdl | 400 | Time | Drag & Drop Timeout |
sw/source/uibase/docvw/edtwin.cxx: | m_aTemplateTimer | SwEditWin, TemplateTimerHdl | 400 | Idle | Apply Template |
chart2/source/controller/main/ChartController.cxx | m_aDoubleClickTimer | ChartController, DoubleClickWaitingHdl | 500 | Timer | Double Click Timer |
cui/source/dialogs/cuifmsearch.cxx | m_aDelayedPaint | FmSearchDialog, OnDelayedPaint | 500 | Timer | Delayed Paint |
cui/source/dialogs/cuigaldlg.cxx | pTimer | ActualizeProgress, TimeoutHdl | 500 | Idle | Actualize |
cui/source/dialogs/cuigaldlg.cxx | aPreviewTimer | TPGalleryThemeProperties, PreviewTimerHdl | 500 | Timer | Show Preview |
cui/source/dialogs/thesdlg.cxx | m_aModifyTimer | LookUpComboBox, ModifyTimer_Hdl | 500 | Idle | Update after modify |
cui/source/tabpages/backgrnd.cxx | pPageImpl->pLoadTimer | SvxBackgroundTabPage, LoadTimerHdl_Impl | 500 | Idle | Update Graphic View |
dbaccess/source/ui/querydesign/TableWindowListBox.cxx | m_aScrollTimer | OTableWindowListBox, ScrollUpHdl | 500 | Timer | Scroll |
dbaccess/source/ui/querydesign/TableWindowListBox.cxx | m_aScrollTimer | OTableWindowListBox, ScrollDownHdl | 500 | Timer | Scroll |
desktop/source/deployment/gui/dp_gui_dialog2.cxx | m_aTimeoutTimer (doppelt in Liste; siehe Prio 50) | ExtMgrDialog, TimeOutHdl | 500 | idle | updates dialog |
forms/source/component/ListBox.cxx | m_aChangeTimer | OListBoxControl,OnTimeout | 500 | Idle | Notify Changes |
linguistic/source/lngsvcmgr.cxx | aUpdateTimer | LngSvcMgr, updateAndBroadcast | 500 | Idle | Update |
sc/source/ui/app/inputhdl.cxx | pDelayTimer | ScInputHandler, DelayTimer | 500 | Timer | Delay Modify |
sd/source/core/CustomAnimationEffect.cxx | maTimer | MainSequence, onTimerHdl | 500 | Timer | Rebuilt after one Second |
sfx2/source/dialog/filedlghelper.cxx: | maPreviewTimer | FileDialogHelper_Impl, TimeOutHdl_Impl | 500 | Idle | Update |
sfx2/source/dialog/templdlg.cxx: | pTimer | SfxCommonTemplateDialog_Impl,TimeOut | 500 | Idle | Update |
sfx2/source/doc/new.cxx: | aPrevTimer | SfxNewFileDialog_Impl, Update | 500 | Idle | Update |
starmath/source/edit.cxx: | aModifyTimer | SmEditWindow, ModifyTimerHdl | 500 | Idle | Update after modify |
starmath/source/edit.cxx: | aCursorMoveTimer | SmEditWindow, CursorMoveTimerHdl | 500 | Idle | Update Cursor |
svtools/source/contnr/imivctl1.cxx: | aCallSelectHdlTimer | SvxIconChoiceCtrl_Impl,CallSelectHdlHdl | 500 | Idle | Selection Handler |
svx/source/dialog/fontwork.cxx: | aInputTimer | SvxFontWorkDialog, InputTimoutHdl_Impl | 500 | Idle | Update after modify |
svx/source/dialog/graphctl.cxx: | aUpdateTimer | GraphCtrl, UpdateHdl | 500 | Idle | Update Link |
svx/source/dialog/srchdlg.cxx: | pImpl->aSelectionTimer | SvxSearchDialog, TimeoutHdl_Impl | 500 | Timer | Update Selection, but wait for user io |
svx/source/form/datanavi.cxx: | m_aResultTimer | AddConditionDialog, ResultHdl | 500 | Idle | Update after modify |
svx/source/form/formcontroller.cxx: | m_aTabActivationTimer | FormController, OnActivateTabOrder | 500 | Idle | Activate tab ordering |
sw/source/ui/dbui/mmoutputtypepage.cxx: | m_pImpl->aRemoveTimer | SwSendMailDialog, RemoveThis | 500 | Idle | Remove Mail Dispatcher |
vcl/generic/print/genprnpsp.cxx: | pPrinterUpdateTimer->SetTimeout | NULL, PrinterUpdate, UpdateTimerHdl | 500 | Idle | Update Printer |
sc/source/ui/pagedlg/tphfedit.cxx | aTimer | ScExtIButton, TimerHdl | 600 | Idle | Show Popup |
sw/source/core/doc/DocumentTimerManager.cxx: | maIdleTimer | DocumentTimerManager, DoIdleJobs | 600 | Idle | Update idle jobs |
sc/source/core/tool/chartlock.cxx | maTimer | ScTemporaryChartLock, TimeoutHdl | 660 | Timer | Mutex locking and unlocking |
fpicker/source/office/iodlg.cxx | _pImp->_aFilterTimer | SvtFileDialog, FilterSelectHdl_Impl | 750 | Timer | Wait until browser box gets filtered |
svtools/source/contnr/imivctl1.cxx: | aEditTimer | SvxIconChoiceCtrl_Impl,EditTimeoutHdl | 800 | Idle | Editing In Place |
svtools/source/contnr/svimpbox.cxx: | aEditTimer | SvImpLBox,EditTimerCall | 800 | idle | edits clickpos |
dbaccess/source/ui/control/dbtreelistbox.cxx | m_aTimer | DBTreeListBox, OnTimeOut | 900 | Timer | Asynchron Selection |
cui/source/dialogs/linkdlg.cxx | aUpdateTimer | SvBaseLinksDlg, UpdateWaitingHdl | 1000 | Idle | Update Links |
dbaccess/source/ui/control/sqledit.cxx | m_timerUndoActionCreation | OSqlEdit, OnUndoActionTimer | 1000 | Timer | Undo Action |
dbaccess/source/ui/dlg/paramdialog.cxx | m_aResetVisitFlag | OParameterDialog, OnVisitedTimeout | 1000 | Timer | Reset Visit Flag |
sc/source/ui/navipi/navipi.cxx | aContentTimer | ScNavigatorDlg, TimeHdl | 1000 | Idle | Wait before search |
sc/workben/result.cxx | aTimer | ScAddInResult, TimeoutHdl | 1000 | Timer | Add Result |
sd/source/ui/framework/configuration/ConfigurationUpdater.cxx | maUpdateTimer | ConfigurationUpdater,TimeoutHandler | 1000 | Timer | Update Configuration |
sd/source/ui/slideshow/showwin.cxx | maPauseTimer | ShowWindow, PauseTimeoutHdl | 1000 | Timer | Pause Timer |
sfx2/source/appl/newhelp.cxx | aTimer | SfxHelpIndexWindow_Impl, SelectFactoryHdl | 1000 | Idle | Initialize and Select Factory |
sfx2/source/appl/newhelp.cxx | aSelectTimer | SfxHelpTextWindow_Impl, SelectHdl | 1000 | Idle | Search help browser |
sw/source/core/doc/docnew.cxx: | maOLEModifiedTimer | SwDoc, DoUpdateModifiedOLE | 1000 | Idle | Update Modified OLE Objects |
sw/source/ui/envelp/labfmt.cxx: | aPreviewTimer | SwLabFmtPage, PreviewHdl | 1000 | Idle | Update Metric Fields |
sw/source/uibase/utlui/content.cxx: | aUpdTimer | SwContentTree, TimerUpdate | 1000 | Timer | AutoTimer |
sw/source/uibase/utlui/navipi.cxx: | aPageChgTimer | SwNavigationPI, ChangePageHdl | 1000 | Idle | Change Page after edit |
chart2/source/controller/dialogs/TimerTriggeredControllerLock.cxx | m_aTimer | TimerTriggeredControllerLock, TimerTimeout | 1400 | Timer | Reset Lock Guard (Mutex) |
cui/source/tabpages/grfpage.cxx | aTimer | SvxGrfCropPage, Timeout | 1500 | Timer | Evaluate Field |
svtools/source/contnr/fileview.cxx: | maResetQuickSearch | ViewTabListBox_Impl, ResetQuickSearch_Impl | 1500 | Timer | Quick Search Timeout |
sw/source/core/unocore/unochart.cxx: | aUnlockTimer | SwChartLockController_Helper, DoUnlockAllCharts | 1500 | Timer | Wait until unlock all Charts |
sd/source/core/drawdoc2.cxx | mpWorkStartupTimer | SdDrawDocument, WorkStartupHdl | 2000 | Timer | Wait before Startup Work, only if SdDrawViewShell::Construct() is used |
sd/source/ui/func/fupoor.cxx | aDelayToScrollTimer | FuPoor, DelayHdl | 2000 | Timer | Delay before Scrollable |
svx/source/form/datanavi.cxx: | m_aUpdateTimer | DataNavigatorWindow, UpdateHdl | 2000 | Timer | Update Navigator Window |
sw/source/core/docnode/threadmanager.cxx: | maStartNewThreadTimer | ThreadManager, TryToStartNewThread | 2000 | Idle | Start Waiting Threads |
sw/source/core/txtnode/SwGrammarContact.cxx: | aTimer | SwGrammarContact, TimerRepaint | 2000 | Timer | Update Proxy List Delayed |
sw/source/uibase/utlui/glbltree.cxx: | aUpdateTimer | SwGlobalTree, Timeout | 2000 | Timer | Update Global Tree Display |
cui/source/dialogs/hldoctp.cxx | maTimer | SvxHyperlinkDocTp, TimeoutHdl_Impl | 2500 | Timer | After Modify Refresh Window |
cui/source/dialogs/hlinettp.cxx | maTimer | SvxHyperlinkInternetTp, TimeoutHdl_Impl | 2500 | Timer | After Modify Refresh Window |
vcl/source/control/quickselectionengine.cxx: | aSearchTimeout | QuickSelectionEngine_Data, SearchStringTimeout | 2500 | Timer | Search Timeout |
desktop/source/app/app.cxx | m_firstRunTimer | Desktop, AsyncInitFirstRun | 3000 | Timer | Asynchron Initalisation |
svtools/source/misc/filechangedchecker.cxx: | mTimer | FileChangedChecker, TimerHandler | 3000 | Idle | Update Changed Graphic |
svx/source/stbctrls/modctrl.cxx: | mpImpl->maTimer | SvxModifyControl, OnTimer | 3000 | Idle | Repaint |
sw/source/uibase/docvw/edtwin.cxx: | m_aKeyInputTimer | SwEditWin, KeyInputTimerHandler | 3000 | Timer | Toggle Keymode |
sw/source/uibase/uno/unomailmerge.cxx: | m_aDeleteTimer | DelayedFileDeletion, OnTryDeleteFile | 3000 | Timer | File Delete |
sd/source/ui/slidesorter/cache/SlsCacheConfiguration.cxx | maReleaseTimer | rInstancePtr.get(),CacheConfiguration,TimerCallback | 5000 | Timer | Release Ptr Instance |
vcl/generic/fontmanager/fontmanager.cxx: | m_aFontInstallerTimer | PrintFontManager, autoInstallFontLangSupport | 5000 | Timer | Print Font Manager |
extensions/source/update/ui/updatecheckui.cxx | maTimeoutTimer | UpdateCheckUI, TimeOutHdl | 10000 | Timer | Remove Bubble Window |
svtools/source/graphic/grfcache.cxx: | maReleaseTimer | GraphicCache, ReleaseTimeoutHdl | 10000 | Timer | Update Cache |
svtools/source/dialogs/prnsetup.cxx: | maStatusTimer | PrinterSetupDialog, ImplStatusHdl | 15000 | Timer | Update Printer Status |
svx/source/svdraw/svdetc.cxx: | pTimer | OLEObjCache, UnloadCheckHdl | 20000 | Timer | Unload Items |
sc/source/ui/docshell/externalrefmgr.cxx | maSrcDocTimer | ScExternalRefManager, TimeOutHdl | 30000 | Timer | Purge unused documents |
sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx | maTimer | QueueProcessor,ProcessRequestHdl | 10;100 | Timer | Process Elements |
sd/source/ui/slideshow/showwin.cxx | maMouseTimer | ShowWindow, MouseTimeoutHdl | 2000;10000 | Timer | Hide/Show Mouse in Impress |
sw/source/core/text/blink.cxx: | aTimer | SwBlink, Blinker | 2400L | Timer | blinking displays |
sw/source/uibase/docvw/edtdd.cxx: | m_aTimer | SwEditWin, DDHandler | 480;240 | Timer | DDTimer |
sw/source/uibase/docvw/edtdd.cxx: | m_aTimer | SwEditWin, TimerHandler | 480;240 | Timer | DDTimer |
sc/source/ui/view/notemark.cxx | aTimer | ScNoteMarker, TimeHdl | 70;800 | Timer | Show Note |
dbaccess/source/ui/tabledesign/TEditControl.cxx | m_aInvalidateTimer | OTableEditorCtrl::ClipboardInvalidator, OnInvalidate | dynamic | Autotimer | |
framework/source/services/autorecovery.cxx | m_aTimer | AutoRecovery, implts_timerExpired | dynamic | Timer | Autosave |
sc/source/ui/cctrl/checklistmenu.cxx | maTimer | ScMenuFloatingWindow::SubMenuItemData, TimeoutHdl | dynamic | Timer | show submenu |
sc/source/ui/docshell/autostyl.cxx | aTimer | ScAutoStyleList, TimerHdl | dynamic | External dependency | Auto style list |
sc/source/ui/docshell/datastream.cxx | maImportTimer | DataStream, ImportTimerHdl | dynamic | External dependency | CSV Import |
sd/source/ui/slideshow/slideshowimpl.cxx | maUpdateTimer | SlideshowImpl, updateHdl | dynamic | External dependency | Slide show update |
sd/source/ui/slidesorter/view/SlsToolTip.cxx | maShowTimer | ToolTip, DelayTrigger | dynamic | Timer | Show Tip |
sd/source/ui/tools/AsynchronousCall.cxx | maTimer | AsynchronousCall,TimerCallback | dynamic | ||
sd/source/ui/tools/TimerBasedTaskExecution.cxx | maTimer | TimerBasedTaskExecution,TimerCallback | dynamic | ||
sfx2/source/control/bindings.cxx | pImp->aTimer | SfxBindings, NextJob_Impl | dynamic | ||
starmath/source/view.cxx: | aCaretBlinkTimer | SmGraphicWindow, CaretBlinkTimerHdl | dynamic | ||
svtools/source/control/calendar.cxx: | maDragScrollTimer | Calendar, ScrollHdl | dynamic | ||
svtools/source/control/valueset.cxx: | maTimer | ValueSet, ImplTimerHdl | dynamic | ||
svtools/source/graphic/grfmgr.cxx: | mpSwapOutTimer | GraphicObject, ImplAutoSwapOutHdl | dynamic | ||
svx/source/tbxctrls/formatpaintbrushctrl.cxx: | m_aDoubleClickTimer | FormatPaintBrushToolBoxControl, WaitDoubleClickHdl | dynamic | ||
sw/source/core/doc/htmltbl.cxx: | aResizeTimer | SwHTMLTableLayout, DelayedResize_Impl | dynamic | ||
sw/source/uibase/docvw/edtwin.cxx: | m_aTimer | SwEditWin, TimerHandler | dynamic | ||
vbahelper/source/vbahelper/vbaapplicationbase.cxx: | m_aTimer | VbaTimer, MacroCallHdl | dynamic | ||
vcl/source/app/help.cxx: | maHideTimer | HelpTextWindow, TimerHdl | dynamic | ||
vcl/source/app/help.cxx: | maShowTimer | HelpTextWindow, TimerHdl | dynamic | ||
vcl/source/control/edit.cxx: | mpUpdateDataTimer->SetTimeoutHdl | Edit, ImplUpdateDataHdl | dynamic | ||
vcl/source/control/menubtn.cxx: | mpMenuTimer->SetTimeoutHdl | MenuButton, ImplMenuTimeoutHdl | dynamic | ||
vcl/source/control/scrbar.cxx: | mpData->maTimer | ScrollBar, ImplAutoTimerHdl | dynamic | ||
vcl/source/control/spinbtn.cxx: | maRepeatTimer | SpinButton, ImplTimeout | dynamic | ||
vcl/source/control/spinfld.cxx: | maRepeatTimer | SpinField, ImplTimeout | dynamic | ||
vcl/source/control/throbber.cxx: | maWaitTimer | Throbber, TimeOutHdl | dynamic | ||
vcl/source/edit/vclmedit.cxx: | pUpdateDataTimer->SetTimeoutHdl | VclMultiLineEdit, ImpUpdateDataHdl | dynamic | ||
vcl/source/gdi/animate.cxx: | maTimer | Animation, ImplTimeoutHdl | dynamic | ||
vcl/source/window/cursor.cxx: | mpData->maTimer | Cursor, ImplTimerHdl | dynamic | ||
vcl/source/window/menufloatingwindow.cxx: | aHighlightChangedTimer | MenuFloatingWindow, HighlightChanged | dynamic | ||
vcl/source/window/menufloatingwindow.cxx: | aSubmenuCloseTimer | MenuFloatingWindow, SubmenuClose | dynamic | ||
vcl/source/window/menufloatingwindow.cxx: | aScrollTimer | MenuFloatingWindow, AutoScroll | dynamic | ||
vcl/source/window/seleng.cxx: | aWTimer | SelectionEngine, ImpWatchDog | dynamic | ||
vcl/source/window/window2.cxx: | pSVData->maWinData.mpTrackTimer | Window, ImplTrackTimerHdl | dynamic | ||
vcl/source/edit/texteng.cxx: | mpIdleFormatter | TextEngine, IdleFormatHdl | 1 | Idle | Format and Update View |
Explanation:
special cases
External dependency: Timeout stems from external source, i.e. not changeable in the first api iteration.
Git d7646a56c3555bae8ade3f996f2037472160f90c
dependencies between timers:
- include/svx/svdpntv.hxx(aComeBackIdle) --> svx/source/svdraw/svdpntv.cxx (aComeBackIdle.Start()/Stop() ) --> chart2/source/controller/drawinglayer/DrawViewWrapper.cxx (aComeBackIdle.Stop() )
Inherited Timers:
Dateipfad | Dateipfad \u2013 Header | Timer | Timeout |
---|---|---|---|
desktop/source/app/app.cxx | ExitTimer | 500 | |
drawinglayer/source/primitive2d/textlayoutdevice.cxx | ImpTimedRefDev | 180000 | |
drawinglayer/source/processor2d/vclhelperbufferdevice.cxx | VDevBuffer | 10000 | |
editeng/source/editeng/impedit5.cxx | editeng/source/editeng/impedit.hxx | IdleFormattter | dynamic Idle |
sfx2/source/doc/objmisc.cxx | include/sfx2/objsh.hxx | AutoReloadTimer_Impl | dynamic |
svx/source/sdr/animation/scheduler.cxx | include/svx/sdr/animation/scheduler.hxx | Scheduler | dynamic |
sc/inc/refreshtimer.hxx | sc/inc/arealink.hxx | ScRefreshTimer | Autotimer |
sc/inc/refreshtimer.hxx | sc/inc/dbdata.hxx | ScRefreshTimer | Autotimer |
sc/source/core/tool/refreshtimer.cxx | sc/inc/refreshtimer.hxx | ScRefreshTimer | dynamic |
sc/inc/refreshtimer.hxx | sc/inc/tablink.hxx | ScRefreshTimer | Autotimer |
sfx2/source/appl/linksrc.cxx | SvLinkSourceTimer | dynamic (probable idle but got external dependencys of his timeout) | |
svx/source/sdr/contact/objectcontactofpageview.cxx | svx/inc/sdr/contact/objectcontactofpageview.hxx | ObjectContactOfPageView | 1 Idle |
svx/source/sdr/event/eventhandler.cxx | svx/source/inc/eventhandler.hxx | TimerEventHandler | dynamic Idle |
svx/source/sdr/contact/viewobjectcontactofpageobj.cxx | PagePrimitiveExtractor | 1 Idle | |
sw/source/uibase/utlui/gloslst.cxx | sw/source/uibase/inc/gloslst.hxx | SwGlossaryList | 30000 |
vcl/osx/salframe.cxx | PreventSleepTimer | 30000 | |
vcl/osx/salinst.cxx | AquaDelayedSettingsChange | 50 Idle | |
vcl/osx/salnativewidgets.cxx | AquaBlinker | 80 | |
vcl/source/edit/textdata.cxx | vcl/source/edit/textdat2.hxx | IdleFormatter | dynamic Idle |
Git d7646a56c3555bae8ade3f996f2037472160f90c
Current matter of affair GLib
- Glib uses Priority Scheduling
- Dependencys are resolved with inherited priorities
- The Timer has a single parent, and multiple childs
- If the timer has "no" parent, the parent variable points to itself
- If the timer has "no" childs, the variable is null
- If a new timer is created out of another timer it gets the same priority as its father
- No Starvation
- No Deadlocks
- Small Numbers are high priorities, higher Numbers are lower priorities
Task Breakdown
- Change list to std::list
Glossary/Definition
Term | Definition |
---|---|
Scheduler | Definition & Examples |
Timeout | Timespan till event is called |
Timer event | Calls event when time is over |
Idle event | event which should be done if nothing else is to do (when there isn't a timer event) |
Timerperiod | Time till the Autotimer is restarted |
Autotimer | Repeating Timer |
Event | The actual executing task |
Q&A
- Identify the hot-spot where events are announced.
- So we found a class in vcl/source/app/timer.cxx which looks kind of interesting.
- The header file, too.
- For example we read the vcl/source/gdi/animate.cxx where the timer is implemented, and it looks like there are only two methods at the moment, where data can be defined. The SetTimout(...) method and the SetTimeoutHdl(...) method.
- Further Questions:
- Many timers per event? (every picture one timer, or all pictures one timer) - No One Timer per event
- LINK? - Method: IMPL_LINK_NOARG(<timer>, <timer>Hdl) called
- SetTimeout(number)? (who set the numbers)
- What is the current scheduling strategy?
- Suspicion: optimistic with restart on demand - No real strategy, linear work off
- What is our desired goal scheduling strategy?
- Suspicion: dependencies and priorities - Yup that's correct
- Is an atomic interface for (current) SetTimout(...) / SetTimeoutHdl(...) interface feasible and desirable?
- How are idle events (timers) actually set up?
- Suspicion: by subclassing and by dynamic invocation - One parent (if no parent, it's the timer itself), multiple children timer -> parent_priority == children_priority
- Are current timeouts static values or dynamically contrieved? - some are statc some dynamic, glib priorities are static
- Is a global centralized declarative description for abstraction parameters (dependencies, priorities) feasible and desirable?