framework/inc/uielement/toolbarmanager.hxx | 10 ++++++---- framework/source/uielement/toolbarmanager.cxx | 11 +++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-)
New commits: commit f77744a7911ae846fbc401aad5dea37510a7f283 Author: Vasily Melenchuk <vasily.melenc...@cib.de> AuthorDate: Thu Aug 23 22:38:48 2018 +0300 Commit: Vasily Melenchuk <vasily.melenc...@cib.de> CommitDate: Thu Aug 23 22:40:58 2018 +0300 framework: [experimental] add additional race conditions blockers Change-Id: I743a93b76886107b8d6a9f36c64bed11afab6ca3 diff --git a/framework/inc/uielement/toolbarmanager.hxx b/framework/inc/uielement/toolbarmanager.hxx index 48722dec5acb..11d9025182c0 100644 --- a/framework/inc/uielement/toolbarmanager.hxx +++ b/framework/inc/uielement/toolbarmanager.hxx @@ -52,6 +52,7 @@ #include <vcl/timer.hxx> #include <unordered_map> +#include <atomic> class PopupMenu; class ToolBox; @@ -155,10 +156,11 @@ class ToolBarManager : public ToolbarManager_Base typedef std::unordered_map< sal_uInt16, css::uno::Reference< css::container::XIndexAccess > > MenuDescriptionMap; - bool m_bDisposed : 1, - m_bAddedToTaskPaneList : 1, - m_bFrameActionRegistered : 1, - m_bUpdateControllers : 1; + bool m_bAddedToTaskPaneList : 1, + m_bFrameActionRegistered : 1; + std::atomic<bool> m_bDisposed; + std::atomic<bool> m_bDisposing; + std::atomic<bool> m_bUpdateControllers; sal_Int16 m_eSymbolSize; diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index 489ad878715a..b67188d60d48 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -139,6 +139,7 @@ ToolBarManager::ToolBarManager( const Reference< XComponentContext >& rxContext, m_bAddedToTaskPaneList( true ), m_bFrameActionRegistered( false ), m_bUpdateControllers( false ), + m_bDisposing( false ), m_eSymbolSize(SvtMiscOptions().GetCurrentSymbolsSize()), m_pToolBar( pToolBar ), m_aResourceName( rResourceName ), @@ -329,6 +330,10 @@ void ToolBarManager::RefreshImages() void ToolBarManager::UpdateControllers() { + if ( m_bDisposing ) + { + return; + } if( SvtMiscOptions().DisableUICustomization() ) { @@ -373,6 +378,10 @@ void ToolBarManager::UpdateControllers() //for update toolbar controller via Support Visible void ToolBarManager::UpdateController( const css::uno::Reference< css::frame::XToolbarController >& xController) { + if ( m_bDisposing ) + { + return; + } if ( !m_bUpdateControllers ) { @@ -457,6 +466,7 @@ void SAL_CALL ToolBarManager::dispose() throw( RuntimeException, std::exception { SolarMutexGuard g; + m_bDisposing = true; if (m_bDisposed) { @@ -518,6 +528,7 @@ void SAL_CALL ToolBarManager::dispose() throw( RuntimeException, std::exception m_aAsyncUpdateControllersTimer.Stop(); m_bDisposed = true; + m_bDisposing = false; } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits