filter/source/xsltdialog/xmlfiltersettingsdialog.cxx | 28 ++++++++++++++----- filter/source/xsltdialog/xmlfiltersettingsdialog.hxx | 11 ++++++- 2 files changed, 31 insertions(+), 8 deletions(-)
New commits: commit f7efddff6621e0c6f967f7159cf929a108285c34 Author: Caolán McNamara <caol...@redhat.com> Date: Wed May 17 11:34:55 2017 +0100 don't create a new ResMgr for each string since... commit f3f71b087d25966d39a4c883bbe0b60b27419119 Date: Fri Nov 11 18:25:37 2016 +0100 Avoid -fsanitize=null ...during CppunitTest_filter_dialogs_test: Change-Id: I9c267816d013c27922621b6c8a75c53ce5b78bd8 Reviewed-on: https://gerrit.libreoffice.org/37704 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx index 490f3ad60f27..6bcd6f24fc7e 100644 --- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx +++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx @@ -61,16 +61,30 @@ using namespace com::sun::star::util; using ::rtl::Uri; namespace { + static ResMgr* pXSLTResMgr = nullptr; -std::unique_ptr<ResMgr> getXSLTDialogResMgr() { - return std::unique_ptr<ResMgr>( - ResMgr::CreateResMgr( - "xsltdlg", Application::GetSettings().GetUILanguageTag())); + ResMgr* getXSLTDialogResMgr() + { + return pXSLTResMgr; + } +} + +EnsureResMgr::EnsureResMgr() +{ + if (!pXSLTResMgr) + { + m_xResMgr.reset(ResMgr::CreateResMgr("xsltdlg", Application::GetSettings().GetUILanguageTag())); + pXSLTResMgr = m_xResMgr.get(); + } } +EnsureResMgr::~EnsureResMgr() +{ + if (m_xResMgr) + pXSLTResMgr = nullptr; } -#define RESID(x) ResId(x, *getXSLTDialogResMgr().get()) +#define RESID(x) ResId(x, *getXSLTDialogResMgr()) #define RESIDSTR(x) RESID(x).toString() XMLFilterSettingsDialog::XMLFilterSettingsDialog(vcl::Window* pParent, @@ -246,7 +260,7 @@ void XMLFilterSettingsDialog::onNew() aTempInfo.maDocumentService = "com.sun.star.text.TextDocument"; // execute XML Filter Dialog - ScopedVclPtrInstance< XMLFilterTabDialog > aDlg( this, *getXSLTDialogResMgr().get(), mxContext, &aTempInfo ); + ScopedVclPtrInstance< XMLFilterTabDialog > aDlg( this, *getXSLTDialogResMgr(), mxContext, &aTempInfo ); if ( aDlg->Execute() == RET_OK ) { // insert the new filter @@ -265,7 +279,7 @@ void XMLFilterSettingsDialog::onEdit() filter_info_impl* pOldInfo = static_cast<filter_info_impl*>(pEntry->GetUserData()); // execute XML Filter Dialog - ScopedVclPtrInstance< XMLFilterTabDialog > aDlg( this, *getXSLTDialogResMgr().get(), mxContext, pOldInfo ); + ScopedVclPtrInstance< XMLFilterTabDialog > aDlg( this, *getXSLTDialogResMgr(), mxContext, pOldInfo ); if ( aDlg->Execute() == RET_OK ) { filter_info_impl* pNewInfo = aDlg->getNewFilterInfo(); diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx index 24617d0261fd..5105c67936c2 100644 --- a/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx +++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx @@ -55,11 +55,20 @@ public: virtual bool EventNotify( NotifyEvent& rNEvt ) override; }; +class EnsureResMgr +{ + std::unique_ptr<ResMgr> m_xResMgr; +public: + EnsureResMgr(); + ~EnsureResMgr(); +}; + class HeaderBar; class XMLFilterListBox : public SvTabListBox { private: + EnsureResMgr m_aEnsureResMgr; VclPtr<HeaderBar> m_pHeaderBar; DECL_LINK( TabBoxScrollHdl_Impl, SvTreeListBox*, void ); @@ -118,7 +127,7 @@ private: OUString createUniqueInterfaceName( const OUString& rInterfaceName ); private: - + EnsureResMgr maEnsureResMgr; css::uno::Reference< css::uno::XComponentContext > mxContext; css::uno::Reference< css::container::XNameContainer > mxFilterContainer; css::uno::Reference< css::container::XNameContainer > mxTypeDetection;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits