Development/LHM LiMux/Main Loop

    From The Document Foundation Wiki

    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 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?