cui/source/factory/cuiresmgr.cxx | 5 +++-- sfx2/source/bastyp/sfxresid.cxx | 5 +++-- svtools/source/misc/svtresid.cxx | 5 +++-- tools/source/rc/resmgr.cxx | 4 ---- 4 files changed, 9 insertions(+), 10 deletions(-)
New commits: commit d93718ff92e485ebcd014713574be596b8815ff8 Author: Michael Meeks <[email protected]> Date: Fri Dec 15 14:22:10 2017 +0000 Handle resmgr lifecycle with vcl's de-init more cleanly. Change-Id: Iee5f54edc09d0df7062ffdcb301876fcec791373 Reviewed-on: https://gerrit.libreoffice.org/46562 Reviewed-by: pranavk <[email protected]> Tested-by: pranavk <[email protected]> diff --git a/cui/source/factory/cuiresmgr.cxx b/cui/source/factory/cuiresmgr.cxx index e61da43b6710..48e942a90685 100644 --- a/cui/source/factory/cuiresmgr.cxx +++ b/cui/source/factory/cuiresmgr.cxx @@ -21,15 +21,16 @@ #include <svl/solar.hrc> #include <vcl/svapp.hxx> #include <vcl/settings.hxx> +#include <vcl/lazydelete.hxx> // struct DialogsResMgr -------------------------------------------------- ResMgr* CuiResMgr::GetResMgr() { - static std::unique_ptr<ResMgr> pResMgr; + static vcl::DeleteOnDeinit<ResMgr> pResMgr(nullptr); const LanguageTag& rLocale = Application::GetSettings().GetUILanguageTag(); - if (!pResMgr || pResMgr->GetLocale() != rLocale) + if (!pResMgr.get() || pResMgr.get()->GetLocale() != rLocale) { pResMgr.reset(ResMgr::CreateResMgr("cui", rLocale)); } diff --git a/sfx2/source/bastyp/sfxresid.cxx b/sfx2/source/bastyp/sfxresid.cxx index 40f02c4c3caa..a90d67adee41 100644 --- a/sfx2/source/bastyp/sfxresid.cxx +++ b/sfx2/source/bastyp/sfxresid.cxx @@ -21,8 +21,9 @@ #include <vcl/svapp.hxx> #include <vcl/settings.hxx> #include <tools/resmgr.hxx> +#include <vcl/lazydelete.hxx> -static std::unique_ptr<ResMgr> pMgr; +static vcl::DeleteOnDeinit<ResMgr> pMgr(nullptr); SfxResId::SfxResId( sal_uInt16 nId ) : ResId( nId, *GetResMgr() ) @@ -33,7 +34,7 @@ ResMgr* SfxResId::GetResMgr() { const LanguageTag& rLocale = Application::GetSettings().GetUILanguageTag(); - if (!pMgr || pMgr->GetLocale() != rLocale) + if (!pMgr.get() || pMgr.get()->GetLocale() != rLocale) pMgr.reset(ResMgr::CreateResMgr("sfx", rLocale)); return pMgr.get(); diff --git a/svtools/source/misc/svtresid.cxx b/svtools/source/misc/svtresid.cxx index e727d95ce461..fa7261f6979e 100644 --- a/svtools/source/misc/svtresid.cxx +++ b/svtools/source/misc/svtresid.cxx @@ -21,14 +21,15 @@ #include <svtools/svtresid.hxx> #include <vcl/svapp.hxx> #include <vcl/settings.hxx> +#include <vcl/lazydelete.hxx> -static std::unique_ptr<ResMgr> pMgr; +static vcl::DeleteOnDeinit<ResMgr> pMgr(nullptr); namespace { ResMgr* getResMgr(const LanguageTag& aLocale) { - if (!pMgr || pMgr->GetLocale() != aLocale) + if (!pMgr.get() || pMgr.get()->GetLocale() != aLocale) pMgr.reset(ResMgr::CreateResMgr("svt", aLocale)); return pMgr.get(); diff --git a/tools/source/rc/resmgr.cxx b/tools/source/rc/resmgr.cxx index daea1b5bde64..31c4765f0304 100644 --- a/tools/source/rc/resmgr.cxx +++ b/tools/source/rc/resmgr.cxx @@ -838,10 +838,6 @@ ResMgr::ResMgr( InternalResMgr * pImpMgr ) ResMgr::~ResMgr() { - // our container was freed by DestroyAllResMgr - if (!pResMgrMutex) - return; - osl::Guard<osl::Mutex> aGuard( getResMgrMutex() ); ResMgrContainer::get().freeResMgr( pImpRes ); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
