From 9e51007039770370182839846676b205f5c34c57 Mon Sep 17 00:00:00 2001 From: Jan-Marek Glogowski Date: Wed, 20 Jul 2016 10:54:30 +0200 Subject: tdf#97087 GDB pretty print the Scheduler task list In addition to the GDB pretty printer, this annotates a lot more Timers and Idles. Change-Id: I5b93fab02161b23bb753e65ef92643a04fb0789c --- chart2/source/view/charttypes/GL3DBarChart.cxx | 1 + cui/source/tabpages/macroass.cxx | 12 +-- desktop/source/app/app.cxx | 5 +- .../source/primitive2d/textlayoutdevice.cxx | 2 +- .../source/processor2d/vclhelperbufferdevice.cxx | 1 + editeng/source/editeng/impedit2.cxx | 3 + framework/source/layoutmanager/layoutmanager.cxx | 1 + framework/source/services/autorecovery.cxx | 1 + framework/source/uielement/menubarmanager.cxx | 2 + framework/source/uielement/toolbarmanager.cxx | 1 + include/vcl/dockwin.hxx | 7 ++ include/vcl/syswin.hxx | 7 ++ include/vcl/timer.hxx | 2 +- sc/inc/chartlis.hxx | 3 + sc/source/core/tool/chartlis.cxx | 14 ++-- sc/source/ui/app/scmod.cxx | 3 + sc/source/ui/docshell/externalrefmgr.cxx | 1 + sc/source/ui/miscdlgs/acredlin.cxx | 1 + sc/source/ui/miscdlgs/conflictsdlg.cxx | 1 + sd/source/ui/dlg/brkdlg.cxx | 9 ++- sd/source/ui/dlg/filedlg.cxx | 1 + sd/source/ui/inc/BreakDlg.hxx | 2 +- sfx2/source/appl/appcfg.cxx | 1 + sfx2/source/control/bindings.cxx | 53 ++++++------- sfx2/source/control/dispatch.cxx | 1 + sfx2/source/control/itemdel.cxx | 2 +- sfx2/source/dialog/dockwin.cxx | 1 + solenv/bin/install-gdb-printers | 3 +- solenv/gdb/libreoffice/vcl.py | 90 ++++++++++++++++++++++ svtools/source/contnr/imivctl1.cxx | 20 +++-- svtools/source/contnr/treelistbox.cxx | 1 + svtools/source/control/tabbar.cxx | 5 +- svtools/source/graphic/grfcache.cxx | 2 +- svtools/source/graphic/grfmgr.cxx | 2 +- svx/source/form/fmshimp.cxx | 1 + svx/source/sdr/overlay/overlaymanagerbuffered.cxx | 1 + svx/source/sidebar/PanelLayout.cxx | 1 + svx/source/svdraw/svdetc.cxx | 3 +- svx/source/svdraw/svdpntv.cxx | 1 + sw/source/core/doc/DocumentStatisticsManager.cxx | 1 + sw/source/core/doc/DocumentTimerManager.cxx | 1 + sw/source/core/doc/docnew.cxx | 1 + sw/source/core/txtnode/SwGrammarContact.cxx | 1 + sw/source/core/unocore/unochart.cxx | 1 + sw/source/uibase/misc/swruler.cxx | 1 + sw/source/uibase/uiview/view.cxx | 1 + vcl/source/app/help.cxx | 8 +- vcl/source/app/timer.cxx | 3 +- vcl/source/control/edit.cxx | 1 + vcl/source/control/quickselectionengine.cxx | 1 + vcl/source/control/scrbar.cxx | 1 + vcl/source/edit/texteng.cxx | 1 + vcl/source/window/cursor.cxx | 1 + vcl/source/window/dockmgr.cxx | 3 + vcl/source/window/dockwin.cxx | 2 + vcl/source/window/menufloatingwindow.cxx | 5 ++ vcl/source/window/scrwnd.cxx | 1 + vcl/source/window/seleng.cxx | 1 + vcl/source/window/splitwin.cxx | 1 + vcl/source/window/syswin.cxx | 1 + vcl/source/window/toolbox.cxx | 3 +- vcl/source/window/window2.cxx | 1 + vcl/source/window/wrkwin.cxx | 2 + vcl/unx/generic/window/salframe.cxx | 1 + 64 files changed, 249 insertions(+), 63 deletions(-) create mode 100644 solenv/gdb/libreoffice/vcl.py diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 401b66428805..6891007f9e04 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -560,6 +560,7 @@ GL3DBarChart::GL3DBarChart( } maIdle.SetPriority(SchedulerPriority::REPAINT); maIdle.SetIdleHdl(LINK(this, GL3DBarChart, UpdateTimerHdl)); + maIdle.SetDebugName( "charttypes::GL3DBarChart maIdle" ); maIdle.Start(); osl_getSystemTime(&maFPSRenderStartTime); osl_getSystemTime(&maFPSRenderEndTime); diff --git a/cui/source/tabpages/macroass.cxx b/cui/source/tabpages/macroass.cxx index b05a057ad6bd..529124c191ef 100644 --- a/cui/source/tabpages/macroass.cxx +++ b/cui/source/tabpages/macroass.cxx @@ -136,6 +136,11 @@ SfxMacroTabPage::SfxMacroTabPage(vcl::Window* pParent, const Reference< XFrame > : SfxTabPage(pParent, "EventAssignPage", "cui/ui/eventassignpage.ui", &rAttrSet) { mpImpl.reset(new SfxMacroTabPage_Impl); + + mpImpl->maFillGroupIdle.SetIdleHdl( LINK( this, SfxMacroTabPage, TimeOut_Impl ) ); + mpImpl->maFillGroupIdle.SetPriority( SchedulerPriority::HIGHEST ); + mpImpl->maFillGroupIdle.SetDebugName( "SfxMacroTabPage maFillGroupIdle" ); + mpImpl->sStrEvent = get("eventft")->GetText(); mpImpl->sAssignedMacro = get("assignft")->GetText(); get(mpImpl->pEventLB , "assignments"); @@ -154,7 +159,6 @@ SfxMacroTabPage::SfxMacroTabPage(vcl::Window* pParent, const Reference< XFrame > ScriptChanged(); } - SfxMacroTabPage::~SfxMacroTabPage() { disposeOnce(); @@ -208,12 +212,8 @@ bool SfxMacroTabPage::FillItemSet( SfxItemSet* rSet ) void SfxMacroTabPage::LaunchFillGroup() { - if (!mpImpl->maFillGroupIdle.GetIdleHdl().IsSet()) - { - mpImpl->maFillGroupIdle.SetIdleHdl( LINK( this, SfxMacroTabPage, TimeOut_Impl ) ); - mpImpl->maFillGroupIdle.SetPriority( SchedulerPriority::HIGHEST ); + if (! mpImpl->maFillGroupIdle.IsActive() ) mpImpl->maFillGroupIdle.Start(); - } } void SfxMacroTabPage::ActivatePage( const SfxItemSet& ) diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index 90ace3cfb8d3..0fe6ba610e29 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -527,6 +527,9 @@ Desktop::Desktop() , m_aBootstrapError(BE_OK) , m_aBootstrapStatus(BS_OK) { + m_firstRunTimer.SetTimeout(3000); // 3 sec. + m_firstRunTimer.SetTimeoutHdl(LINK(this, Desktop, AsyncInitFirstRun)); + m_firstRunTimer.SetDebugName( "desktop::Desktop m_firstRunTimer" ); } Desktop::~Desktop() @@ -2649,8 +2652,6 @@ void Desktop::CheckFirstRun( ) { // use VCL timer, which won't trigger during shutdown if the // application exits before timeout - m_firstRunTimer.SetTimeout(3000); // 3 sec. - m_firstRunTimer.SetTimeoutHdl(LINK(this, Desktop, AsyncInitFirstRun)); m_firstRunTimer.Start(); #ifdef _WIN32 diff --git a/drawinglayer/source/primitive2d/textlayoutdevice.cxx b/drawinglayer/source/primitive2d/textlayoutdevice.cxx index 50eae8bd792c..4e28bf616c97 100644 --- a/drawinglayer/source/primitive2d/textlayoutdevice.cxx +++ b/drawinglayer/source/primitive2d/textlayoutdevice.cxx @@ -73,7 +73,7 @@ namespace }; ImpTimedRefDev::ImpTimedRefDev(scoped_timed_RefDev& rOwnerOfMe) - : Timer( "Timer to destroy drawinglayer reference device" ), + : Timer( "drawinglayer ImpTimedRefDev destroy mpVirDev" ), mrOwnerOfMe(rOwnerOfMe), mpVirDev(nullptr), mnUseCount(0L) diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx index abeb6fcdf8f4..ba1181009f0e 100644 --- a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx +++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx @@ -71,6 +71,7 @@ namespace maUsedBuffers() { SetTimeout(10L * 1000L); // ten seconds + SetDebugName("drawinglayer::VDevBuffer via Invoke()"); } VDevBuffer::~VDevBuffer() diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index 86023d33bb8a..946ae5c406cb 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -146,12 +146,15 @@ ImpEditEngine::ImpEditEngine( EditEngine* pEE, SfxItemPool* pItemPool ) : aStatusTimer.SetTimeout( 200 ); aStatusTimer.SetTimeoutHdl( LINK( this, ImpEditEngine, StatusTimerHdl ) ); + aStatusTimer.SetDebugName( "editeng::ImpEditEngine aStatusTimer" ); aIdleFormatter.SetPriority( SchedulerPriority::REPAINT ); aIdleFormatter.SetIdleHdl( LINK( this, ImpEditEngine, IdleFormatHdl ) ); + aIdleFormatter.SetDebugName( "editeng::ImpEditEngine aIdleFormatter" ); aOnlineSpellTimer.SetTimeout( 100 ); aOnlineSpellTimer.SetTimeoutHdl( LINK( this, ImpEditEngine, OnlineSpellHdl ) ); + aOnlineSpellTimer.SetDebugName( "editeng::ImpEditEngine aOnlineSpellTimer" ); // Access data already from here on! SetRefDevice( nullptr ); diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx index 4f3f86aef942..b6303be61138 100644 --- a/framework/source/layoutmanager/layoutmanager.cxx +++ b/framework/source/layoutmanager/layoutmanager.cxx @@ -140,6 +140,7 @@ LayoutManager::LayoutManager( const Reference< XComponentContext >& xContext ) : m_aAsyncLayoutTimer.SetTimeout( 50 ); m_aAsyncLayoutTimer.SetTimeoutHdl( LINK( this, LayoutManager, AsyncLayoutHdl ) ); + m_aAsyncLayoutTimer.SetDebugName( "framework::LayoutManager m_aAsyncLayoutTimer" ); registerProperty( LAYOUTMANAGER_PROPNAME_ASCII_AUTOMATICTOOLBARS, LAYOUTMANAGER_PROPHANDLE_AUTOMATICTOOLBARS, css::beans::PropertyAttribute::TRANSIENT, &m_bAutomaticToolbars, cppu::UnoType::get() ); registerProperty( LAYOUTMANAGER_PROPNAME_ASCII_HIDECURRENTUI, LAYOUTMANAGER_PROPHANDLE_HIDECURRENTUI, beans::PropertyAttribute::TRANSIENT, &m_bHideCurrentUI, cppu::UnoType::get() ); diff --git a/framework/source/services/autorecovery.cxx b/framework/source/services/autorecovery.cxx index 2d37455d6039..2a3f926a6e95 100644 --- a/framework/source/services/autorecovery.cxx +++ b/framework/source/services/autorecovery.cxx @@ -1241,6 +1241,7 @@ AutoRecovery::AutoRecovery(const css::uno::Reference< css::uno::XComponentContex , m_nMinSpaceDocSave (MIN_DISCSPACE_DOCSAVE ) , m_nMinSpaceConfigSave (MIN_DISCSPACE_CONFIGSAVE ) { + m_aTimer.SetDebugName( "framework::AutoRecovery m_aTimer" ); } void AutoRecovery::initListeners() diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx index 0a50c024e31e..d776a5c215c8 100644 --- a/framework/source/uielement/menubarmanager.cxx +++ b/framework/source/uielement/menubarmanager.cxx @@ -136,6 +136,7 @@ MenuBarManager::MenuBarManager( , m_xURLTransformer(_xURLTransformer) , m_sIconTheme( SvtMiscOptions().GetIconTheme() ) { + m_aAsyncSettingsTimer.SetDebugName( "framework::MenuBarManager::Deactivate m_aAsyncSettingsTimer" ); m_xPopupMenuControllerFactory = frame::thePopupMenuControllerFactory::get(m_xContext); FillMenuManager( pMenu, rFrame, rDispatchProvider, rModuleIdentifier, bDelete ); } @@ -157,6 +158,7 @@ MenuBarManager::MenuBarManager( , m_xURLTransformer(_xURLTransformer) , m_sIconTheme( SvtMiscOptions().GetIconTheme() ) { + m_aAsyncSettingsTimer.SetDebugName( "framework::MenuBarManager::Deactivate m_aAsyncSettingsTimer" ); Init(rFrame,pAddonMenu, popup); } diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index 489ad878715a..e3bd0d15b9d1 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -193,6 +193,7 @@ ToolBarManager::ToolBarManager( const Reference< XComponentContext >& rxContext, m_aAsyncUpdateControllersTimer.SetTimeout( 50 ); m_aAsyncUpdateControllersTimer.SetTimeoutHdl( LINK( this, ToolBarManager, AsyncUpdateControllersHdl ) ); + m_aAsyncUpdateControllersTimer.SetDebugName( "framework::ToolBarManager m_aAsyncUpdateControllersTimer" ); SvtMiscOptions().AddListenerLink( LINK( this, ToolBarManager, MiscOptionsChanged ) ); } diff --git a/include/vcl/dockwin.hxx b/include/vcl/dockwin.hxx index aa5dced2d19e..c6d8fdb065f9 100644 --- a/include/vcl/dockwin.hxx +++ b/include/vcl/dockwin.hxx @@ -248,6 +248,8 @@ private: DockingWindow & operator= (const DockingWindow &) = delete; protected: + SAL_DLLPRIVATE void SetIdleDebugName( const sal_Char *pDebugName ); + using Window::ImplInit; SAL_DLLPRIVATE void ImplInit( vcl::Window* pParent, WinBits nStyle ); SAL_DLLPRIVATE void ImplInitSettings(); @@ -362,6 +364,11 @@ inline void DockingWindow::SetFloatingPos( const Point& rNewPos ) maFloatPos = rNewPos; } +inline void DockingWindow::SetIdleDebugName( const sal_Char *pDebugName ) +{ + maLayoutIdle.SetDebugName( pDebugName ); +} + #endif // INCLUDED_VCL_DOCKWIN_HXX diff --git a/include/vcl/syswin.hxx b/include/vcl/syswin.hxx index 971cd604de48..a0c3b6972059 100644 --- a/include/vcl/syswin.hxx +++ b/include/vcl/syswin.hxx @@ -189,6 +189,8 @@ protected: virtual void settingOptimalLayoutSize(Window *pBox); SAL_DLLPRIVATE void DoInitialLayout(); + + SAL_DLLPRIVATE void SetIdleDebugName( const sal_Char *pDebugName ); public: virtual ~SystemWindow() override; virtual void dispose() override; @@ -286,6 +288,11 @@ public: virtual void doDeferredInit(WinBits nBits); }; +inline void SystemWindow::SetIdleDebugName( const sal_Char *pDebugName ) +{ + maLayoutIdle.SetDebugName( pDebugName ); +} + #endif // INCLUDED_VCL_SYSWIN_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/vcl/timer.hxx b/include/vcl/timer.hxx index 149ba9099ac9..0e32810b9d12 100644 --- a/include/vcl/timer.hxx +++ b/include/vcl/timer.hxx @@ -56,7 +56,7 @@ public: class VCL_DLLPUBLIC AutoTimer : public Timer { public: - AutoTimer(); + AutoTimer( const sal_Char *pDebugName = nullptr ); AutoTimer( const AutoTimer& rTimer ); AutoTimer& operator=( const AutoTimer& rTimer ); diff --git a/sc/inc/chartlis.hxx b/sc/inc/chartlis.hxx index 6b982c316fc1..5037236ffece 100644 --- a/sc/inc/chartlis.hxx +++ b/sc/inc/chartlis.hxx @@ -149,6 +149,9 @@ private: ScChartListenerCollection& operator=( const ScChartListenerCollection& ) = delete; +protected: + void Init(); + public: ScChartListenerCollection( ScDocument* pDoc ); ScChartListenerCollection( const ScChartListenerCollection& ); diff --git a/sc/source/core/tool/chartlis.cxx b/sc/source/core/tool/chartlis.cxx index 750678588b84..fd27fbdd169f 100644 --- a/sc/source/core/tool/chartlis.cxx +++ b/sc/source/core/tool/chartlis.cxx @@ -402,21 +402,26 @@ ScChartHiddenRangeListener::~ScChartHiddenRangeListener() // empty d'tor } +void ScChartListenerCollection::Init() +{ + aIdle.SetIdleHdl( LINK( this, ScChartListenerCollection, TimerHdl ) ); + aIdle.SetPriority( SchedulerPriority::REPAINT ); + aIdle.SetDebugName( "sc::ScChartListenerCollection aIdle" ); +} + ScChartListenerCollection::ScChartListenerCollection( ScDocument* pDocP ) : meModifiedDuringUpdate( SC_CLCUPDATE_NONE ), - aIdle( "sc ScChartListenerCollection" ), pDoc( pDocP ) { - aIdle.SetIdleHdl( LINK( this, ScChartListenerCollection, TimerHdl ) ); + Init(); } ScChartListenerCollection::ScChartListenerCollection( const ScChartListenerCollection& rColl ) : meModifiedDuringUpdate( SC_CLCUPDATE_NONE ), - aIdle( "sc ScChartListenerCollection" ), pDoc( rColl.pDoc ) { - aIdle.SetIdleHdl( LINK( this, ScChartListenerCollection, TimerHdl ) ); + Init(); } ScChartListenerCollection::~ScChartListenerCollection() @@ -591,7 +596,6 @@ void ScChartListenerCollection::FreeUno( const uno::Reference< chart::XChartData void ScChartListenerCollection::StartTimer() { - aIdle.SetPriority( SchedulerPriority::REPAINT ); aIdle.Start(); } diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index be0319dbbc1f..c81adcca58a1 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -181,8 +181,11 @@ ScModule::ScModule( SfxObjectFactory* pFact ) : aSpellIdle.SetPriority(SchedulerPriority::LOWER); aSpellIdle.SetIdleHdl( LINK( this, ScModule, SpellTimerHdl ) ); + aSpellIdle.SetDebugName( "sc::ScModule aSpellIdle" ); + aIdleTimer.SetTimeout(SC_IDLE_MIN); aIdleTimer.SetTimeoutHdl( LINK( this, ScModule, IdleHandler ) ); + aIdleTimer.SetDebugName( "sc::ScModule aIdleTimer" ); aIdleTimer.Start(); pMessagePool = new ScMessagePool; diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx index d5b694518541..42c17b937db9 100644 --- a/sc/source/ui/docshell/externalrefmgr.cxx +++ b/sc/source/ui/docshell/externalrefmgr.cxx @@ -1683,6 +1683,7 @@ ScExternalRefManager::ScExternalRefManager(ScDocument* pDoc) : { maSrcDocTimer.SetTimeoutHdl( LINK(this, ScExternalRefManager, TimeOutHdl) ); maSrcDocTimer.SetTimeout(SRCDOC_SCAN_INTERVAL); + maSrcDocTimer.SetDebugName( "sc::ScExternalRefManager maSrcDocTimer" ); } ScExternalRefManager::~ScExternalRefManager() diff --git a/sc/source/ui/miscdlgs/acredlin.cxx b/sc/source/ui/miscdlgs/acredlin.cxx index 4aa805c34d3f..e92e3ee9dc74 100644 --- a/sc/source/ui/miscdlgs/acredlin.cxx +++ b/sc/source/ui/miscdlgs/acredlin.cxx @@ -116,6 +116,7 @@ ScAcceptChgDlg::ScAcceptChgDlg(SfxBindings* pB, SfxChildWindow* pCW, vcl::Window pTheView=pTPView->GetTableControl(); aSelectionIdle.SetPriority(SchedulerPriority::LOW); aSelectionIdle.SetIdleHdl(LINK( this, ScAcceptChgDlg, UpdateSelectionHdl )); + aSelectionIdle.SetDebugName( "ScAcceptChgDlg aSelectionIdle" ); pTPFilter->SetReadyHdl(LINK( this, ScAcceptChgDlg, FilterHandle )); pTPFilter->SetRefHdl(LINK( this, ScAcceptChgDlg, RefHandle )); diff --git a/sc/source/ui/miscdlgs/conflictsdlg.cxx b/sc/source/ui/miscdlgs/conflictsdlg.cxx index 82172383c262..578efed90481 100644 --- a/sc/source/ui/miscdlgs/conflictsdlg.cxx +++ b/sc/source/ui/miscdlgs/conflictsdlg.cxx @@ -423,6 +423,7 @@ ScConflictsDlg::ScConflictsDlg( vcl::Window* pParent, ScViewData* pViewData, ScD maSelectionIdle.SetPriority( SchedulerPriority::LOW ); maSelectionIdle.SetIdleHdl( LINK( this, ScConflictsDlg, UpdateSelectionHdl ) ); + maSelectionIdle.SetDebugName( "ScConflictsDlg maSelectionIdle" ); m_pLbConflicts->SetSelectHdl( LINK( this, ScConflictsDlg, SelectHandle ) ); m_pLbConflicts->SetDeselectHdl( LINK( this, ScConflictsDlg, DeselectHandle ) ); diff --git a/sd/source/ui/dlg/brkdlg.cxx b/sd/source/ui/dlg/brkdlg.cxx index 516a3bcfbe9b..0626fde2e485 100644 --- a/sd/source/ui/dlg/brkdlg.cxx +++ b/sd/source/ui/dlg/brkdlg.cxx @@ -45,9 +45,12 @@ BreakDlg::BreakDlg( sal_uLong nSumActionCount, sal_uLong nObjCount ) : SfxModalDialog(pWindow, "BreakDialog", "modules/sdraw/ui/breakdialog.ui") - , aIdle("sd BreakDlg Idle") , mpProgress( nullptr ) { + m_aUpdateIdle.SetPriority( SchedulerPriority::REPAINT ); + m_aUpdateIdle.SetIdleHdl( LINK( this, BreakDlg, InitialUpdate ) ); + m_aUpdateIdle.SetDebugName( "sd::BreakDlg m_aUpdateIdle" ); + get(m_pFiObjInfo, "metafiles"); get(m_pFiActInfo, "metaobjects"); get(m_pFiInsInfo, "drawingobjects"); @@ -160,9 +163,7 @@ IMPL_LINK( BreakDlg, UpDate, void*, nInit, bool ) */ short BreakDlg::Execute() { - aIdle.SetPriority( SchedulerPriority::REPAINT ); - aIdle.SetIdleHdl( LINK( this, BreakDlg, InitialUpdate ) ); - aIdle.Start(); + m_aUpdateIdle.Start(); return SfxModalDialog::Execute(); } diff --git a/sd/source/ui/dlg/filedlg.cxx b/sd/source/ui/dlg/filedlg.cxx index e5823d139d61..b06c7804fea6 100644 --- a/sd/source/ui/dlg/filedlg.cxx +++ b/sd/source/ui/dlg/filedlg.cxx @@ -214,6 +214,7 @@ SdFileDialog_Imp::SdFileDialog_Imp() : mbLabelPlaying(false) { maUpdateIdle.SetIdleHdl(LINK(this, SdFileDialog_Imp, IsMusicStoppedHdl)); + maUpdateIdle.SetDebugName( "SdFileDialog_Imp maUpdateIdle" ); css::uno::Reference < css::ui::dialogs::XFilePicker2 > xFileDlg = GetFilePicker(); diff --git a/sd/source/ui/inc/BreakDlg.hxx b/sd/source/ui/inc/BreakDlg.hxx index e333ea3df50a..1f37322bc3f0 100644 --- a/sd/source/ui/inc/BreakDlg.hxx +++ b/sd/source/ui/inc/BreakDlg.hxx @@ -66,7 +66,7 @@ private: bool bCancel; - Idle aIdle; + Idle m_aUpdateIdle; SvdProgressInfo *pProgrInfo; SfxProgress *mpProgress; diff --git a/sfx2/source/appl/appcfg.cxx b/sfx2/source/appl/appcfg.cxx index b7e89dcd2de5..f0a87265eb82 100644 --- a/sfx2/source/appl/appcfg.cxx +++ b/sfx2/source/appl/appcfg.cxx @@ -110,6 +110,7 @@ SfxEventAsyncer_Impl::SfxEventAsyncer_Impl( const SfxEventHint& rHint ) pIdle.reset( new Idle("SfxEventASyncer") ); pIdle->SetIdleHdl( LINK(this, SfxEventAsyncer_Impl, IdleHdl) ); pIdle->SetPriority( SchedulerPriority::HIGHEST ); + pIdle->SetDebugName( "sfx::SfxEventAsyncer_Impl pIdle" ); pIdle->Start(); } diff --git a/sfx2/source/control/bindings.cxx b/sfx2/source/control/bindings.cxx index e5f1d86db779..f1e5e334ab19 100644 --- a/sfx2/source/control/bindings.cxx +++ b/sfx2/source/control/bindings.cxx @@ -144,7 +144,7 @@ public: bool bAllMsgDirty; // Has a MessageServer been invalidated? bool bAllDirty; // After InvalidateAll bool bCtrlReleased; // while EnterRegistrations - AutoTimer aTimer; // for volatile Slots + AutoTimer aAutoTimer; // for volatile Slots bool bInUpdate; // for Assertions bool bInNextJob; // for Assertions bool bFirstRound; // First round in Update @@ -179,7 +179,8 @@ SfxBindings::SfxBindings() // all caches are valid (no pending invalidate-job) // create the list of caches pImpl->pCaches = new SfxStateCacheArr_Impl; - pImpl->aTimer.SetTimeoutHdl( LINK(this, SfxBindings, NextJob) ); + pImpl->aAutoTimer.SetTimeoutHdl( LINK(this, SfxBindings, NextJob) ); + pImpl->aAutoTimer.SetDebugName( "sfx::SfxBindings aAutoTimer" ); } @@ -203,7 +204,7 @@ SfxBindings::~SfxBindings() ENTERREGISTRATIONS(); - pImpl->aTimer.Stop(); + pImpl->aAutoTimer.Stop(); DeleteControllers_Impl(); // Delete Caches @@ -604,9 +605,9 @@ void SfxBindings::InvalidateAll pImpl->nMsgPos = 0; if ( !nRegLevel ) { - pImpl->aTimer.Stop(); - pImpl->aTimer.SetTimeout(TIMEOUT_FIRST); - pImpl->aTimer.Start(); + pImpl->aAutoTimer.Stop(); + pImpl->aAutoTimer.SetTimeout(TIMEOUT_FIRST); + pImpl->aAutoTimer.Start(); } } @@ -655,9 +656,9 @@ void SfxBindings::Invalidate pImpl->nMsgPos = 0; if ( !nRegLevel ) { - pImpl->aTimer.Stop(); - pImpl->aTimer.SetTimeout(TIMEOUT_FIRST); - pImpl->aTimer.Start(); + pImpl->aAutoTimer.Stop(); + pImpl->aAutoTimer.SetTimeout(TIMEOUT_FIRST); + pImpl->aAutoTimer.Start(); } } @@ -707,9 +708,9 @@ void SfxBindings::InvalidateShell pImpl->nMsgPos = 0; if ( !nRegLevel ) { - pImpl->aTimer.Stop(); - pImpl->aTimer.SetTimeout(TIMEOUT_FIRST); - pImpl->aTimer.Start(); + pImpl->aAutoTimer.Stop(); + pImpl->aAutoTimer.SetTimeout(TIMEOUT_FIRST); + pImpl->aAutoTimer.Start(); pImpl->bFirstRound = true; pImpl->nFirstShell = nLevel; } @@ -743,9 +744,9 @@ void SfxBindings::Invalidate pImpl->nMsgPos = std::min(GetSlotPos(nId), pImpl->nMsgPos); if ( !nRegLevel ) { - pImpl->aTimer.Stop(); - pImpl->aTimer.SetTimeout(TIMEOUT_FIRST); - pImpl->aTimer.Start(); + pImpl->aAutoTimer.Stop(); + pImpl->aAutoTimer.SetTimeout(TIMEOUT_FIRST); + pImpl->aAutoTimer.Start(); } } } @@ -779,9 +780,9 @@ void SfxBindings::Invalidate pImpl->nMsgPos = std::min(GetSlotPos(nId), pImpl->nMsgPos); if ( !nRegLevel ) { - pImpl->aTimer.Stop(); - pImpl->aTimer.SetTimeout(TIMEOUT_FIRST); - pImpl->aTimer.Start(); + pImpl->aAutoTimer.Stop(); + pImpl->aAutoTimer.SetTimeout(TIMEOUT_FIRST); + pImpl->aAutoTimer.Start(); } } } @@ -1449,7 +1450,7 @@ bool SfxBindings::NextJob_Impl(Timer * pTimer) if ( Application::GetLastInputInterval() < MAX_INPUT_DELAY && pTimer ) { - pImpl->aTimer.SetTimeout(TIMEOUT_UPDATING); + pImpl->aAutoTimer.SetTimeout(TIMEOUT_UPDATING); return true; } @@ -1477,7 +1478,7 @@ bool SfxBindings::NextJob_Impl(Timer * pTimer) } pImpl->bAllDirty = false; - pImpl->aTimer.SetTimeout(TIMEOUT_UPDATING); + pImpl->aAutoTimer.SetTimeout(TIMEOUT_UPDATING); // at least 10 loops and further if more jobs are available but no input bool bPreEmptive = pTimer && !pSfxApp->Get_Impl()->nInReschedule; @@ -1525,7 +1526,7 @@ bool SfxBindings::NextJob_Impl(Timer * pTimer) pImpl->nMsgPos = 0; - pImpl->aTimer.Stop(); + pImpl->aAutoTimer.Stop(); // Update round is finished pImpl->bInNextJob = false; @@ -1561,7 +1562,7 @@ sal_uInt16 SfxBindings::EnterRegistrations(const char *pFile, int nLine) if ( ++nRegLevel == 1 ) { // stop background-processing - pImpl->aTimer.Stop(); + pImpl->aAutoTimer.Stop(); // flush the cache pImpl->nCachedFunc1 = 0; @@ -1627,9 +1628,9 @@ void SfxBindings::LeaveRegistrations( const char *pFile, int nLine ) return; if ( pImpl->pCaches && !pImpl->pCaches->empty() ) { - pImpl->aTimer.Stop(); - pImpl->aTimer.SetTimeout(TIMEOUT_FIRST); - pImpl->aTimer.Start(); + pImpl->aAutoTimer.Stop(); + pImpl->aAutoTimer.SetTimeout(TIMEOUT_FIRST); + pImpl->aAutoTimer.Start(); } } @@ -1722,7 +1723,7 @@ void SfxBindings::StartUpdate_Impl( bool bComplete ) if ( !bComplete ) // Update may be interrupted - NextJob_Impl(&pImpl->aTimer); + NextJob_Impl(&pImpl->aAutoTimer); else // Update all slots in a row NextJob_Impl(nullptr); diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx index 93e5c778d8f2..49e7e5406459 100644 --- a/sfx2/source/control/dispatch.cxx +++ b/sfx2/source/control/dispatch.cxx @@ -452,6 +452,7 @@ void SfxDispatcher::Construct_Impl() xImp->aIdle.SetPriority(SchedulerPriority::MEDIUM); xImp->aIdle.SetIdleHdl( LINK(this, SfxDispatcher, EventHdl_Impl ) ); + xImp->aIdle.SetDebugName( "sfx::SfxDispatcher_Impl aIdle" ); } SfxDispatcher::SfxDispatcher() diff --git a/sfx2/source/control/itemdel.cxx b/sfx2/source/control/itemdel.cxx index a1d6478a45fd..c835b8c145d5 100644 --- a/sfx2/source/control/itemdel.cxx +++ b/sfx2/source/control/itemdel.cxx @@ -42,7 +42,7 @@ public: SfxItemDisruptor_Impl::SfxItemDisruptor_Impl(SfxPoolItem *const pItemToDisrupt) : pItem(pItemToDisrupt) - , m_Idle("SfxItemDisruptor_Impl") + , m_Idle("sfx SfxItemDisruptor_Impl::Delete") { m_Idle.SetIdleHdl(LINK(this, SfxItemDisruptor_Impl, Delete)); m_Idle.SetPriority(SchedulerPriority::DEFAULT_IDLE); diff --git a/sfx2/source/dialog/dockwin.cxx b/sfx2/source/dialog/dockwin.cxx index 16d71547ada1..6178bd0df75b 100644 --- a/sfx2/source/dialog/dockwin.cxx +++ b/sfx2/source/dialog/dockwin.cxx @@ -435,6 +435,7 @@ SfxDockingWindow_Impl::SfxDockingWindow_Impl(SfxDockingWindow* pBase) { aMoveIdle.SetPriority(SchedulerPriority::RESIZE); aMoveIdle.SetIdleHdl(LINK(pBase,SfxDockingWindow,TimerHdl)); + aMoveIdle.SetDebugName( "sfx::SfxDockingWindow_Impl aMoveIdle" ); } /* [Description] diff --git a/solenv/bin/install-gdb-printers b/solenv/bin/install-gdb-printers index 0362a5c04a06..4d5be9247087 100755 --- a/solenv/bin/install-gdb-printers +++ b/solenv/bin/install-gdb-printers @@ -123,7 +123,7 @@ if [[ ${DESTDIR}${pythondir} != ${GDBDIR} ]]; then fi if [[ -n "${MERGELIBS}" ]]; then - make_autoload merged program libmergedlo."$DYLIB" merge svl tl basegfx + make_autoload merged program libmergedlo."$DYLIB" merge svl tl basegfx vcl make_autoload cppu program libuno_cppu."$DYLIB".3 make_autoload sal program libuno_sal."$DYLIB".3 make_autoload sw program libswlo."$DYLIB" @@ -134,6 +134,7 @@ else make_autoload svl program libsvllo."$DYLIB" make_autoload sw program libswlo."$DYLIB" make_autoload tl program libtllo."$DYLIB" + make_autoload vcl program libvcllo."$DYLIB" fi make_autoload writerfilter program libwriterfilterlo."$DYLIB" diff --git a/solenv/gdb/libreoffice/vcl.py b/solenv/gdb/libreoffice/vcl.py new file mode 100644 index 000000000000..83f405758216 --- /dev/null +++ b/solenv/gdb/libreoffice/vcl.py @@ -0,0 +1,90 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +import six +import gdb +from libreoffice.util import printing + +class ImplSchedulerDataPrinter(object): + '''Prints the ImplSchedulerData linked list. + + This can be used to dump the current state of the scheduler via: + p *ImplGetSVData()->mpFirstSchedulerData + ''' + + def __init__(self, typename, value): + self.typename = typename + self.value = value + self.timer_type_ptr = gdb.lookup_type("Timer").pointer() + self.idle_type_ptr = gdb.lookup_type("Idle").pointer() + + def as_string(self, gdbobj): + if gdbobj['mpScheduler']: + sched = gdbobj['mpScheduler'].dereference() + if gdbobj['mpScheduler'].dynamic_cast( self.timer_type_ptr ): + sched_type = "Timer" + elif gdbobj['mpScheduler'].dynamic_cast( self.idle_type_ptr ): + sched_type = "Idle" + else: + assert sched_type, "Scheduler object neither Timer nor Idle" + res = "{:7s}{:10s} active: {:6s}".format( sched_type, str(sched['mePriority']), str(sched['mbActive']) ) + name = sched['mpDebugName'] + if not name: + res = res + " (scheduler debug name not set)" + else: + res = "{} '{}' ({})".format(res, str(name.string()), str(sched.dynamic_type)) + return res + else: + assert gdbobj['mbDelete'], "No scheduler set and not marked for deletion!" + return "(no scheduler)" + + def to_string(self): + return self.typename + + def children(self): + return self._iterator(self) + + def display_hint(self): + return 'array' + + class _iterator(six.Iterator): + + def __init__(self, printer): + self.pos = 0 + self.printer = printer + self.value = printer.value + + def __iter__(self): + return self + + def __next__(self): + if not self.value['mpNext']: + raise StopIteration() + + pos = str(self.pos) + name = "\n " + self.printer.as_string(self.value) + self.value = self.value['mpNext'] + self.pos += 1 + + return (pos, name) + +printer = None + +def build_pretty_printers(): + global printer + + printer = printing.Printer("libreoffice/vcl") + printer.add('ImplSchedulerData', ImplSchedulerDataPrinter) + +def register_pretty_printers(obj): + printing.register_pretty_printer(printer, obj) + +build_pretty_printers() + +# vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/svtools/source/contnr/imivctl1.cxx b/svtools/source/contnr/imivctl1.cxx index b3068ba23d12..2532c826ece9 100644 --- a/svtools/source/contnr/imivctl1.cxx +++ b/svtools/source/contnr/imivctl1.cxx @@ -58,7 +58,7 @@ class IcnViewEdit_Impl : public MultiLineEdit Link aCallBackHdl; Accelerator aAccReturn; Accelerator aAccEscape; - Idle aIdle; + Idle maLoseFocusIdle; bool bCanceled; bool bAlreadyInCallback; bool bGrabFocus; @@ -141,15 +141,23 @@ SvxIconChoiceCtrl_Impl::SvxIconChoiceCtrl_Impl( aEditIdle.SetPriority( SchedulerPriority::LOWEST ); aEditIdle.SetIdleHdl(LINK(this,SvxIconChoiceCtrl_Impl,EditTimeoutHdl)); + aEditIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aEditIdle" ); + aAutoArrangeIdle.SetPriority( SchedulerPriority::LOW ); aAutoArrangeIdle.SetIdleHdl(LINK(this,SvxIconChoiceCtrl_Impl,AutoArrangeHdl)); + aAutoArrangeIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aAutoArrangeIdle" ); + aCallSelectHdlIdle.SetPriority( SchedulerPriority::LOWEST ); aCallSelectHdlIdle.SetIdleHdl( LINK(this,SvxIconChoiceCtrl_Impl,CallSelectHdlHdl)); + aCallSelectHdlIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aCallSelectHdlIdle" ); aDocRectChangedIdle.SetPriority( SchedulerPriority::MEDIUM ); aDocRectChangedIdle.SetIdleHdl(LINK(this,SvxIconChoiceCtrl_Impl,DocRectChangedHdl)); + aDocRectChangedIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aDocRectChangedIdle" ); + aVisRectChangedIdle.SetPriority( SchedulerPriority::MEDIUM ); aVisRectChangedIdle.SetIdleHdl(LINK(this,SvxIconChoiceCtrl_Impl,VisRectChangedHdl)); + aVisRectChangedIdle.SetDebugName( "svtools::SvxIconChoiceCtrl_Impl aVisRectChangedIdle" ); Clear( true ); Size gridSize(100,70); @@ -3024,6 +3032,10 @@ IcnViewEdit_Impl::IcnViewEdit_Impl( SvtIconChoiceCtrl* pParent, const Point& rPo bAlreadyInCallback( false ), bGrabFocus( false ) { + maLoseFocusIdle.SetPriority(SchedulerPriority::REPAINT); + maLoseFocusIdle.SetIdleHdl(LINK(this,IcnViewEdit_Impl,Timeout_Impl)); + maLoseFocusIdle.SetDebugName( "svx::IcnViewEdit_Impl maLoseFocusIdle" ); + // FIXME: Outside of Paint Hierarchy vcl::Font aFont(pParent->GetPointFont(*this)); aFont.SetTransparent( false ); @@ -3063,7 +3075,7 @@ void IcnViewEdit_Impl::dispose() void IcnViewEdit_Impl::CallCallBackHdl_Impl() { - aIdle.Stop(); + maLoseFocusIdle.Stop(); if ( !bAlreadyInCallback ) { bAlreadyInCallback = true; @@ -3125,9 +3137,7 @@ bool IcnViewEdit_Impl::PreNotify( NotifyEvent& rNEvt ) ((!Application::GetFocusWindow()) || !IsChild(Application::GetFocusWindow()))) { bCanceled = false; - aIdle.SetPriority(SchedulerPriority::REPAINT); - aIdle.SetIdleHdl(LINK(this,IcnViewEdit_Impl,Timeout_Impl)); - aIdle.Start(); + maLoseFocusIdle.Start(); } } return false; diff --git a/svtools/source/contnr/treelistbox.cxx b/svtools/source/contnr/treelistbox.cxx index b35985967e71..b9cdf535d9d2 100644 --- a/svtools/source/contnr/treelistbox.cxx +++ b/svtools/source/contnr/treelistbox.cxx @@ -201,6 +201,7 @@ void SvInplaceEdit2::LoseFocus() bCanceled = false; aIdle.SetPriority(SchedulerPriority::REPAINT); aIdle.SetIdleHdl(LINK(this,SvInplaceEdit2,Timeout_Impl)); + aIdle.SetDebugName( "svtools::SvInplaceEdit2 aIdle" ); aIdle.Start(); } } diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx index 357c70d3a017..10e02ba2b9e4 100644 --- a/svtools/source/control/tabbar.cxx +++ b/svtools/source/control/tabbar.cxx @@ -399,6 +399,9 @@ TabBarEdit::TabBarEdit( TabBar* pParent, WinBits nWinStyle ) : Edit( pParent, nWinStyle ) { mbPostEvt = false; + maLoseFocusIdle.SetPriority( SchedulerPriority::REPAINT ); + maLoseFocusIdle.SetIdleHdl( LINK( this, TabBarEdit, ImplEndTimerHdl ) ); + maLoseFocusIdle.SetDebugName( "svtools::TabBarEdit maLoseFocusIdle" ); } bool TabBarEdit::PreNotify( NotifyEvent& rNEvt ) @@ -452,8 +455,6 @@ IMPL_LINK( TabBarEdit, ImplEndEditHdl, void*, pCancel, void ) // when it shows the context menu or the insert symbol dialog if ( !HasFocus() && HasChildPathFocus( true ) ) { - maLoseFocusIdle.SetPriority( SchedulerPriority::REPAINT ); - maLoseFocusIdle.SetIdleHdl( LINK( this, TabBarEdit, ImplEndTimerHdl ) ); maLoseFocusIdle.Start(); } else diff --git a/svtools/source/graphic/grfcache.cxx b/svtools/source/graphic/grfcache.cxx index 6e637d4ac708..dc67cae5170d 100644 --- a/svtools/source/graphic/grfcache.cxx +++ b/svtools/source/graphic/grfcache.cxx @@ -826,7 +826,7 @@ void GraphicDisplayCacheEntry::Draw( OutputDevice* pOut, const Point& rPt, const } GraphicCache::GraphicCache( sal_uLong nDisplayCacheSize, sal_uLong nMaxObjDisplayCacheSize ) : - maReleaseTimer ( "GraphicCache maReleaseTimer" ), + maReleaseTimer ( "svtools::GraphicCache maReleaseTimer" ), mnReleaseTimeoutSeconds ( 0UL ), mnMaxDisplaySize ( nDisplayCacheSize ), mnMaxObjDisplaySize ( nMaxObjDisplayCacheSize ), diff --git a/svtools/source/graphic/grfmgr.cxx b/svtools/source/graphic/grfmgr.cxx index f818bad6d96c..c452101e8929 100644 --- a/svtools/source/graphic/grfmgr.cxx +++ b/svtools/source/graphic/grfmgr.cxx @@ -400,7 +400,7 @@ void GraphicObject::SetSwapStreamHdl(const Link { if (!mxSwapOutTimer) { - mxSwapOutTimer.reset(new Timer("SwapOutTimer")); + mxSwapOutTimer.reset(new Timer("svtools::GraphicObject mpSwapOutTimer")); mxSwapOutTimer->SetTimeoutHdl( LINK( this, GraphicObject, ImplAutoSwapOutHdl ) ); } diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx index 6730074846ea..8aebaab5be36 100644 --- a/svx/source/form/fmshimp.cxx +++ b/svx/source/form/fmshimp.cxx @@ -639,6 +639,7 @@ FmXFormShell::FmXFormShell( FmFormShell& _rShell, SfxViewFrame* _pViewFrame ) { m_aMarkTimer.SetTimeout(100); m_aMarkTimer.SetTimeoutHdl(LINK(this,FmXFormShell,OnTimeOut)); + m_aMarkTimer.SetDebugName("svx::FmXFormShell m_aMarkTimer"); m_xAttachedFrame = _pViewFrame->GetFrame().GetFrameInterface(); diff --git a/svx/source/sdr/overlay/overlaymanagerbuffered.cxx b/svx/source/sdr/overlay/overlaymanagerbuffered.cxx index d0f1d192b20b..8ede68ce1708 100644 --- a/svx/source/sdr/overlay/overlaymanagerbuffered.cxx +++ b/svx/source/sdr/overlay/overlaymanagerbuffered.cxx @@ -385,6 +385,7 @@ namespace sdr // Init timer maBufferIdle.SetPriority( SchedulerPriority::POST_PAINT ); maBufferIdle.SetIdleHdl(LINK(this, OverlayManagerBuffered, ImpBufferTimerHandler)); + maBufferIdle.SetDebugName( "sdr::overlay::OverlayManagerBuffered maBufferIdle" ); } rtl::Reference OverlayManagerBuffered::create( diff --git a/svx/source/sidebar/PanelLayout.cxx b/svx/source/sidebar/PanelLayout.cxx index fd8e07538c93..097274a38ad1 100644 --- a/svx/source/sidebar/PanelLayout.cxx +++ b/svx/source/sidebar/PanelLayout.cxx @@ -27,6 +27,7 @@ PanelLayout::PanelLayout(vcl::Window* pParent, const OString& rID, const OUStrin m_pUIBuilder.reset(new VclBuilder(this, getUIRootDir(), rUIXMLDescription, rID, rFrame)); m_aPanelLayoutIdle.SetPriority(SchedulerPriority::RESIZE); m_aPanelLayoutIdle.SetIdleHdl( LINK( this, PanelLayout, ImplHandlePanelLayoutTimerHdl ) ); + m_aPanelLayoutIdle.SetDebugName( "svx::PanelLayout m_aPanelLayoutIdle" ); if (GetSettings().GetStyleSettings().GetAutoMnemonic()) Accelerator::GenerateAutoMnemonicsOnHierarchy(this); } diff --git a/svx/source/svdraw/svdetc.cxx b/svx/source/svdraw/svdetc.cxx index 83479041ed07..db57960d8363 100644 --- a/svx/source/svdraw/svdetc.cxx +++ b/svx/source/svdraw/svdetc.cxx @@ -110,13 +110,12 @@ OLEObjCache::OLEObjCache() nSize = officecfg::Office::Common::Cache::DrawingEngine::OLE_Objects::get(); else nSize = 100; - pTimer = new AutoTimer(); + pTimer = new AutoTimer( "svx OLEObjCache pTimer UnloadCheck" ); Link aLink = LINK(this, OLEObjCache, UnloadCheckHdl); pTimer->SetTimeoutHdl(aLink); pTimer->SetTimeout(20000); pTimer->Start(); - pTimer->SetDebugName("OLEObjCache pTimer UnloadCheck"); aLink.Call(pTimer); } diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx index 0642d39f5cee..33eef08d5b32 100644 --- a/svx/source/svdraw/svdpntv.cxx +++ b/svx/source/svdraw/svdpntv.cxx @@ -175,6 +175,7 @@ void SdrPaintView::ImpClearVars() mnGraphicManagerDrawMode = GraphicManagerDrawFlags::STANDARD; maComeBackIdle.SetPriority(SchedulerPriority::REPAINT); maComeBackIdle.SetIdleHdl(LINK(this,SdrPaintView,ImpComeBackHdl)); + maComeBackIdle.SetDebugName( "svx::SdrPaintView aComeBackIdle" ); if (mpModel) SetDefaultStyleSheet(mpModel->GetDefaultStyleSheet(), true); diff --git a/sw/source/core/doc/DocumentStatisticsManager.cxx b/sw/source/core/doc/DocumentStatisticsManager.cxx index 46d4373bd3b7..d4741d39e66c 100644 --- a/sw/source/core/doc/DocumentStatisticsManager.cxx +++ b/sw/source/core/doc/DocumentStatisticsManager.cxx @@ -76,6 +76,7 @@ DocumentStatisticsManager::DocumentStatisticsManager( SwDoc& i_rSwdoc ) : m_rDoc maStatsUpdateTimer.SetTimeout( 1 ); maStatsUpdateTimer.SetPriority( SchedulerPriority::LOWEST ); maStatsUpdateTimer.SetTimeoutHdl( LINK( this, DocumentStatisticsManager, DoIdleStatsUpdate ) ); + maStatsUpdateTimer.SetDebugName( "sw::DocumentStatisticsManager maStatsUpdateTimer" ); } void DocumentStatisticsManager::DocInfoChgd(bool const isEnableSetModified) diff --git a/sw/source/core/doc/DocumentTimerManager.cxx b/sw/source/core/doc/DocumentTimerManager.cxx index f53eab71f2d3..4a0176b2811d 100644 --- a/sw/source/core/doc/DocumentTimerManager.cxx +++ b/sw/source/core/doc/DocumentTimerManager.cxx @@ -44,6 +44,7 @@ DocumentTimerManager::DocumentTimerManager( SwDoc& i_rSwdoc ) : m_rDoc( i_rSwdoc { maIdle.SetPriority( SchedulerPriority::LOWEST ); maIdle.SetIdleHdl( LINK( this, DocumentTimerManager, DoIdleJobs) ); + maIdle.SetDebugName( "sw::DocumentTimerManager maIdle" ); } void DocumentTimerManager::StartIdling() diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx index 84f6aafe2257..325f3833fd12 100644 --- a/sw/source/core/doc/docnew.cxx +++ b/sw/source/core/doc/docnew.cxx @@ -331,6 +331,7 @@ SwDoc::SwDoc() maOLEModifiedIdle.SetPriority( SchedulerPriority::LOWEST ); maOLEModifiedIdle.SetIdleHdl( LINK( this, SwDoc, DoUpdateModifiedOLE )); + maOLEModifiedIdle.SetDebugName( "sw::SwDoc maOLEModifiedIdle" ); #if HAVE_FEATURE_DBCONNECTIVITY // Create DBManager diff --git a/sw/source/core/txtnode/SwGrammarContact.cxx b/sw/source/core/txtnode/SwGrammarContact.cxx index cbf89b966b95..eadc16cfcd0d 100644 --- a/sw/source/core/txtnode/SwGrammarContact.cxx +++ b/sw/source/core/txtnode/SwGrammarContact.cxx @@ -63,6 +63,7 @@ SwGrammarContact::SwGrammarContact() : mpProxyList(nullptr), mbFinished( false ) { aTimer.SetTimeout( 2000 ); // Repaint of grammar check after 'setChecked' aTimer.SetTimeoutHdl( LINK(this, SwGrammarContact, TimerRepaint) ); + aTimer.SetDebugName( "sw::SwGrammarContact TimerRepaint" ); } IMPL_LINK( SwGrammarContact, TimerRepaint, Timer *, pTimer, void ) diff --git a/sw/source/core/unocore/unochart.cxx b/sw/source/core/unocore/unochart.cxx index 7d71e852fb85..8ae7d5bc8652 100644 --- a/sw/source/core/unocore/unochart.cxx +++ b/sw/source/core/unocore/unochart.cxx @@ -91,6 +91,7 @@ SwChartLockController_Helper::SwChartLockController_Helper( SwDoc *pDocument ) : { aUnlockTimer.SetTimeout( 1500 ); aUnlockTimer.SetTimeoutHdl( LINK( this, SwChartLockController_Helper, DoUnlockAllCharts )); + aUnlockTimer.SetDebugName( "sw::SwChartLockController_Helper aUnlockTimer" ); } SwChartLockController_Helper::~SwChartLockController_Helper() diff --git a/sw/source/uibase/misc/swruler.cxx b/sw/source/uibase/misc/swruler.cxx index e84b6a04c90e..89c4b5142acb 100644 --- a/sw/source/uibase/misc/swruler.cxx +++ b/sw/source/uibase/misc/swruler.cxx @@ -77,6 +77,7 @@ SwCommentRuler::SwCommentRuler( SwViewShell* pViewSh, vcl::Window* pParent, SwEd // Set fading timeout: 5 x 40ms = 200ms maFadeTimer.SetTimeout(40); maFadeTimer.SetTimeoutHdl( LINK( this, SwCommentRuler, FadeHandler ) ); + maFadeTimer.SetDebugName( "sw::SwCommentRuler maFadeTimer" ); } // Destructor diff --git a/sw/source/uibase/uiview/view.cxx b/sw/source/uibase/uiview/view.cxx index 6de7d5b5995f..aec3bc012038 100644 --- a/sw/source/uibase/uiview/view.cxx +++ b/sw/source/uibase/uiview/view.cxx @@ -997,6 +997,7 @@ SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh ) } m_aTimer.SetTimeoutHdl(LINK(this, SwView, TimeoutHdl)); + m_aTimer.SetDebugName( "sw::SwView m_aTimer" ); m_bAttrChgNotified = m_bAttrChgNotifiedWithRegistrations = false; if (bOldModifyFlag) rDocSh.EnableSetModified(); diff --git a/vcl/source/app/help.cxx b/vcl/source/app/help.cxx index 90f11d766732..153abc29e371 100644 --- a/vcl/source/app/help.cxx +++ b/vcl/source/app/help.cxx @@ -272,10 +272,14 @@ HelpTextWindow::HelpTextWindow( vcl::Window* pParent, const OUString& rText, sal if ( pSVData->maHelpData.mbSetKeyboardHelp ) pSVData->maHelpData.mbKeyboardHelp = true; - const HelpSettings& rHelpSettings = pParent->GetSettings().GetHelpSettings(); + maShowTimer.SetTimeoutHdl( LINK( this, HelpTextWindow, TimerHdl ) ); - maHideTimer.SetTimeoutHdl( LINK( this, HelpTextWindow, TimerHdl ) ); + maShowTimer.SetDebugName( "vcl::HelpTextWindow maShowTimer" ); + + const HelpSettings& rHelpSettings = pParent->GetSettings().GetHelpSettings(); maHideTimer.SetTimeout( rHelpSettings.GetTipTimeout() ); + maHideTimer.SetTimeoutHdl( LINK( this, HelpTextWindow, TimerHdl ) ); + maHideTimer.SetDebugName( "vcl::HelpTextWindow maHideTimer" ); } void HelpTextWindow::StateChanged(StateChangedType nType) diff --git a/vcl/source/app/timer.cxx b/vcl/source/app/timer.cxx index 1766d7f0efe1..accd92734746 100644 --- a/vcl/source/app/timer.cxx +++ b/vcl/source/app/timer.cxx @@ -113,7 +113,8 @@ Timer& Timer::operator=( const Timer& rTimer ) return *this; } -AutoTimer::AutoTimer() +AutoTimer::AutoTimer( const sal_Char *pDebugName ) + : Timer( pDebugName ) { mbAuto = true; } diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index ade6d7b48b21..610e492ef56c 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -2390,6 +2390,7 @@ void Edit::EnableUpdateData( sal_uLong nTimeout ) { mpUpdateDataTimer = new Timer("UpdateDataTimer"); mpUpdateDataTimer->SetTimeoutHdl( LINK( this, Edit, ImplUpdateDataHdl ) ); + mpUpdateDataTimer->SetDebugName( "vcl::Edit mpUpdateDataTimer" ); } mpUpdateDataTimer->SetTimeout( nTimeout ); diff --git a/vcl/source/control/quickselectionengine.cxx b/vcl/source/control/quickselectionengine.cxx index 3bd15743cf01..b4612ea52349 100644 --- a/vcl/source/control/quickselectionengine.cxx +++ b/vcl/source/control/quickselectionengine.cxx @@ -44,6 +44,7 @@ namespace vcl { aSearchTimeout.SetTimeout( 2500 ); aSearchTimeout.SetTimeoutHdl( LINK( this, QuickSelectionEngine_Data, SearchStringTimeout ) ); + aSearchTimeout.SetDebugName( "vcl::QuickSelectionEngine_Data aSearchTimeout" ); } ~QuickSelectionEngine_Data() diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx index 5ddc7dc25e4e..c1a462fffd47 100644 --- a/vcl/source/control/scrbar.cxx +++ b/vcl/source/control/scrbar.cxx @@ -94,6 +94,7 @@ void ScrollBar::ImplInit( vcl::Window* pParent, WinBits nStyle ) { mpData = new ImplScrollBarData; mpData->maTimer.SetTimeoutHdl( LINK( this, ScrollBar, ImplAutoTimerHdl ) ); + mpData->maTimer.SetDebugName( "vcl::ScrollBar mpData->maTimer" ); mpData->mbHide = false; } diff --git a/vcl/source/edit/texteng.cxx b/vcl/source/edit/texteng.cxx index 1d043ac9efd0..008624b33b7d 100644 --- a/vcl/source/edit/texteng.cxx +++ b/vcl/source/edit/texteng.cxx @@ -92,6 +92,7 @@ TextEngine::TextEngine() mpIdleFormatter = new IdleFormatter; mpIdleFormatter->SetIdleHdl( LINK( this, TextEngine, IdleFormatHdl ) ); + mpIdleFormatter->SetDebugName( "vcl::TextEngine mpIdleFormatter" ); mpRefDev = VclPtr::Create(); diff --git a/vcl/source/window/cursor.cxx b/vcl/source/window/cursor.cxx index 7d76f19dee9e..2133f1821bfb 100644 --- a/vcl/source/window/cursor.cxx +++ b/vcl/source/window/cursor.cxx @@ -185,6 +185,7 @@ void vcl::Cursor::ImplDoShow( bool bDrawDirect, bool bRestore ) mpData = new ImplCursorData; mpData->mbCurVisible = false; mpData->maTimer.SetTimeoutHdl( LINK( this, Cursor, ImplTimerHdl ) ); + mpData->maTimer.SetDebugName( "vcl ImplCursorData maTimer" ); } mpData->mpWindow = pWindow; diff --git a/vcl/source/window/dockmgr.cxx b/vcl/source/window/dockmgr.cxx index 12552d728e7a..127557058313 100644 --- a/vcl/source/window/dockmgr.cxx +++ b/vcl/source/window/dockmgr.cxx @@ -89,8 +89,11 @@ ImplDockFloatWin2::ImplDockFloatWin2( vcl::Window* pParent, WinBits nWinBits, maDockIdle.SetIdleHdl( LINK( this, ImplDockFloatWin2, DockTimerHdl ) ); maDockIdle.SetPriority( SchedulerPriority::MEDIUM ); + maDockIdle.SetDebugName( "vcl::ImplDockFloatWin2 maDockIdle" ); + maEndDockIdle.SetIdleHdl( LINK( this, ImplDockFloatWin2, EndDockTimerHdl ) ); maEndDockIdle.SetPriority( SchedulerPriority::MEDIUM ); + maEndDockIdle.SetDebugName( "vcl::ImplDockFloatWin2 maEndDockIdle" ); } ImplDockFloatWin2::~ImplDockFloatWin2() diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx index 4c854c00cefb..b5b543fc3851 100644 --- a/vcl/source/window/dockwin.cxx +++ b/vcl/source/window/dockwin.cxx @@ -104,6 +104,7 @@ ImplDockFloatWin::ImplDockFloatWin( vcl::Window* pParent, WinBits nWinBits, maDockIdle.SetIdleHdl( LINK( this, ImplDockFloatWin, DockTimerHdl ) ); maDockIdle.SetPriority( SchedulerPriority::MEDIUM ); + maDockIdle.SetDebugName( "vcl::ImplDockFloatWin maDockIdle" ); } ImplDockFloatWin::~ImplDockFloatWin() @@ -309,6 +310,7 @@ void DockingWindow::ImplInitDockingWindowData() //To-Do, reuse maResizeTimer maLayoutIdle.SetPriority(SchedulerPriority::RESIZE); maLayoutIdle.SetIdleHdl( LINK( this, DockingWindow, ImplHandleLayoutTimerHdl ) ); + maLayoutIdle.SetDebugName( "vcl::DockingWindow maLayoutIdle" ); } void DockingWindow::ImplInit( vcl::Window* pParent, WinBits nStyle ) diff --git a/vcl/source/window/menufloatingwindow.cxx b/vcl/source/window/menufloatingwindow.cxx index 79586c00c9cc..6ba76bfca6b4 100644 --- a/vcl/source/window/menufloatingwindow.cxx +++ b/vcl/source/window/menufloatingwindow.cxx @@ -51,9 +51,14 @@ MenuFloatingWindow::MenuFloatingWindow( Menu* pMen, vcl::Window* pParent, WinBit aHighlightChangedTimer.SetTimeoutHdl( LINK( this, MenuFloatingWindow, HighlightChanged ) ); aHighlightChangedTimer.SetTimeout( GetSettings().GetMouseSettings().GetMenuDelay() ); + aHighlightChangedTimer.SetDebugName( "vcl::MenuFloatingWindow aHighlightChangedTimer" ); + aSubmenuCloseTimer.SetTimeout( GetSettings().GetMouseSettings().GetMenuDelay() ); aSubmenuCloseTimer.SetTimeoutHdl( LINK( this, MenuFloatingWindow, SubmenuClose ) ); + aSubmenuCloseTimer.SetDebugName( "vcl::MenuFloatingWindow aSubmenuCloseTimer" ); + aScrollTimer.SetTimeoutHdl( LINK( this, MenuFloatingWindow, AutoScroll ) ); + aScrollTimer.SetDebugName( "vcl::MenuFloatingWindow aScrollTimer" ); AddEventListener( LINK( this, MenuFloatingWindow, ShowHideListener ) ); } diff --git a/vcl/source/window/scrwnd.cxx b/vcl/source/window/scrwnd.cxx index 6433a34fd09d..d3fbe982acb8 100644 --- a/vcl/source/window/scrwnd.cxx +++ b/vcl/source/window/scrwnd.cxx @@ -77,6 +77,7 @@ ImplWheelWindow::ImplWheelWindow( vcl::Window* pParent ) : mpTimer = new Timer("WheelWindowTimer"); mpTimer->SetTimeoutHdl( LINK( this, ImplWheelWindow, ImplScrollHdl ) ); mpTimer->SetTimeout( mnTimeout ); + mpTimer->SetDebugName( "vcl::ImplWheelWindow mpTimer" ); mpTimer->Start(); CaptureMouse(); diff --git a/vcl/source/window/seleng.cxx b/vcl/source/window/seleng.cxx index 27075d431c3e..be1c909b91a1 100644 --- a/vcl/source/window/seleng.cxx +++ b/vcl/source/window/seleng.cxx @@ -44,6 +44,7 @@ SelectionEngine::SelectionEngine( vcl::Window* pWindow, FunctionSet* pFuncSet ) aWTimer.SetTimeoutHdl( LINK( this, SelectionEngine, ImpWatchDog ) ); aWTimer.SetTimeout( nUpdateInterval ); + aWTimer.SetDebugName( "vcl::SelectionEngine aWTimer" ); } SelectionEngine::~SelectionEngine() diff --git a/vcl/source/window/splitwin.cxx b/vcl/source/window/splitwin.cxx index 2105a60a6038..64b0ffe08e69 100644 --- a/vcl/source/window/splitwin.cxx +++ b/vcl/source/window/splitwin.cxx @@ -1378,6 +1378,7 @@ SplitWindow::SplitWindow( vcl::Window* pParent, WinBits nStyle ) : DockingWindow( WINDOW_SPLITWINDOW ) { ImplInit( pParent, nStyle ); + DockingWindow::SetIdleDebugName( "vcl::SplitWindow maLayoutIdle" ); } SplitWindow::~SplitWindow() diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx index 93ebb94f6347..5c03502b54dd 100644 --- a/vcl/source/window/syswin.cxx +++ b/vcl/source/window/syswin.cxx @@ -87,6 +87,7 @@ SystemWindow::SystemWindow(WindowType nType) //To-Do, reuse maResizeTimer maLayoutIdle.SetPriority(SchedulerPriority::RESIZE); maLayoutIdle.SetIdleHdl( LINK( this, SystemWindow, ImplHandleLayoutTimerHdl ) ); + maLayoutIdle.SetDebugName( "vcl::SystemWindow maLayoutIdle" ); } void SystemWindow::loadUI(vcl::Window* pParent, const OString& rID, const OUString& rUIXMLDescription, diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx index 49ccf4893c96..dde50d482498 100644 --- a/vcl/source/window/toolbox.cxx +++ b/vcl/source/window/toolbox.cxx @@ -1407,13 +1407,14 @@ void ToolBox::ImplInitToolBoxData() mnImagesRotationAngle = 0; mpStatusListener = new VclStatusListener(this, ".uno:ImageOrientation"); - mpIdle = new Idle("toolbox update"); + mpIdle = new Idle("vcl::ToolBox maIdle update"); mpIdle->SetPriority( SchedulerPriority::RESIZE ); mpIdle->SetIdleHdl( LINK( this, ToolBox, ImplUpdateHdl ) ); // set timeout and handler for dropdown items mpData->maDropdownTimer.SetTimeout( 250 ); mpData->maDropdownTimer.SetTimeoutHdl( LINK( this, ToolBox, ImplDropdownLongClickHdl ) ); + mpData->maDropdownTimer.SetDebugName( "vcl::ToolBox mpData->maDropdownTimer" ); } void ToolBox::ImplInit( vcl::Window* pParent, WinBits nStyle ) diff --git a/vcl/source/window/window2.cxx b/vcl/source/window/window2.cxx index 1c8be91f6946..953efb67ab17 100644 --- a/vcl/source/window/window2.cxx +++ b/vcl/source/window/window2.cxx @@ -320,6 +320,7 @@ void Window::StartTracking( StartTrackingFlags nFlags ) else pSVData->maWinData.mpTrackTimer->SetTimeout( GetSettings().GetMouseSettings().GetButtonStartRepeat() ); pSVData->maWinData.mpTrackTimer->SetTimeoutHdl( LINK( this, Window, ImplTrackTimerHdl ) ); + pSVData->maWinData.mpTrackTimer->SetDebugName( "vcl::Window pSVData->maWinData.mpTrackTimer" ); pSVData->maWinData.mpTrackTimer->Start(); } diff --git a/vcl/source/window/wrkwin.cxx b/vcl/source/window/wrkwin.cxx index cacdfa0857b4..9c51ba1a913b 100644 --- a/vcl/source/window/wrkwin.cxx +++ b/vcl/source/window/wrkwin.cxx @@ -41,6 +41,8 @@ void WorkWindow::ImplInitWorkWindowData() mbPresentationVisible = false; mbPresentationFull = false; mbFullScreenMode = false; + + maLayoutIdle.SetDebugName( "vcl::WorkWindow maLayoutIdle" ); } void WorkWindow::ImplInit( vcl::Window* pParent, WinBits nStyle, SystemParentData* pSystemParentData ) diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx index ffbccc75ef30..a2b6903ae067 100644 --- a/vcl/unx/generic/window/salframe.cxx +++ b/vcl/unx/generic/window/salframe.cxx @@ -809,6 +809,7 @@ X11SalFrame::X11SalFrame( SalFrame *pParent, SalFrameStyleFlags nSalFrameStyle, maAlwaysOnTopRaiseTimer.SetTimeoutHdl( LINK( this, X11SalFrame, HandleAlwaysOnTopRaise ) ); maAlwaysOnTopRaiseTimer.SetTimeout( 100 ); + maAlwaysOnTopRaiseTimer.SetDebugName( "vcl::X11SalFrame maAlwaysOnTopRaiseTimer" ); meWindowType = WMAdaptor::windowType_Normal; mnDecorationFlags = WMAdaptor::decoration_All; -- cgit