Development/LHM LiMux/Main Loop

From The Document Foundation Wiki
Jump to: navigation, search

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:

AblaufTimer.png


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 core commit 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 core commit 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 core commit 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(\u2026) method and the SetTimeoutHdl(\u2026) 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(\u2026) / SetTimeoutHdl(\u2026) 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?