berkeleydb/makefile.mk | 4 ++ desktop/source/deployment/dp_persmap.cxx | 4 +- desktop/source/deployment/inc/db.hxx | 8 ---- desktop/source/deployment/misc/db.cxx | 56 ++++++++++++++++++++++++++--- framework/source/jobs/jobexecutor.cxx | 20 +++++----- framework/source/services/pathsettings.cxx | 18 ++++----- sfx2/source/appl/appbaslib.cxx | 11 ----- 7 files changed, 79 insertions(+), 42 deletions(-)
New commits: commit 76876513479522b37c9047a418521624e27afff6 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Mar 23 08:53:25 2012 +0000 Take a meg off our memory footprint We create 6 berkleydb backed databases. If no DB_ENV is provided for a database, then berkleydb creates one for each database. Each environment has a memory footprint of about 200k. It appears to be legal to share an environment, which shaves about 1M off our permanant footprint. diff --git a/desktop/source/deployment/misc/db.cxx b/desktop/source/deployment/misc/db.cxx index 45f91c7..98cfc01 100644 --- a/desktop/source/deployment/misc/db.cxx +++ b/desktop/source/deployment/misc/db.cxx @@ -30,6 +30,7 @@ #include <db.hxx> #include <rtl/alloc.h> +#include <rtl/instance.hxx> #include <cstring> #include <errno.h> @@ -54,12 +55,57 @@ char *DbEnv::strerror(int error) return (db_strerror(error)); } +namespace +{ + class theDbEnvMutex + : public rtl::Static<osl::Mutex, theDbEnvMutex> {}; + + class SharedDbEnv : private boost::noncopyable + { + public: + static DB_ENV* getInstance(); + static void releaseInstance(); + private: + SharedDbEnv(); + ~SharedDbEnv(); + static DB_ENV* pSharedEnv; + static int nSharedEnv; + }; + + DB_ENV* SharedDbEnv::pSharedEnv = NULL; + int SharedDbEnv::nSharedEnv = 0; + + DB_ENV* SharedDbEnv::getInstance() + { + ::osl::MutexGuard aGuard(theDbEnvMutex::get()); + if (pSharedEnv == NULL) + { + db_env_create(&pSharedEnv, 0); + pSharedEnv->open(pSharedEnv, NULL, DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_THREAD, 0); + } + ++nSharedEnv; + return pSharedEnv; + } + + void SharedDbEnv::releaseInstance() + { + ::osl::MutexGuard aGuard(theDbEnvMutex::get()); + --nSharedEnv; + if (0 == nSharedEnv) + { + pSharedEnv->close(pSharedEnv, 0); + pSharedEnv = NULL; + } + } +} + //---------------------------------------------------------------------------- Db::Db(u_int32_t flags) : m_pDBP(0) { - db_internal::check_error( db_create(&m_pDBP, NULL, flags),"Db::Db" ); + DB_ENV *pSharedDbEnv = SharedDbEnv::getInstance(); + db_internal::check_error( db_create(&m_pDBP, pSharedDbEnv, flags),"Db::Db" ); } @@ -78,6 +124,7 @@ int Db::close(u_int32_t flags) { int error = m_pDBP->close(m_pDBP,flags); m_pDBP = 0; + SharedDbEnv::releaseInstance(); return db_internal::check_error(error,"Db::close"); } commit f0a2c790192130c0ebf6937673552237c33d4b21 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Mar 23 08:49:03 2012 +0000 DbEnv argument is always NULL diff --git a/desktop/source/deployment/dp_persmap.cxx b/desktop/source/deployment/dp_persmap.cxx index ca55e5f..7c505bb 100644 --- a/desktop/source/deployment/dp_persmap.cxx +++ b/desktop/source/deployment/dp_persmap.cxx @@ -78,7 +78,7 @@ PersistentMap::~PersistentMap() //______________________________________________________________________________ PersistentMap::PersistentMap( OUString const & url ) - : m_db( 0, 0 ) + : m_db( 0 ) { try { rtl::OUString fileURL = expandUnoRcUrl(url); @@ -101,7 +101,7 @@ PersistentMap::PersistentMap( OUString const & url ) //______________________________________________________________________________ PersistentMap::PersistentMap() - : m_db( 0, 0 ) + : m_db( 0 ) { try { // xxx todo: DB_THREAD, DB_DBT_MALLOC currently not used diff --git a/desktop/source/deployment/inc/db.hxx b/desktop/source/deployment/inc/db.hxx index a2dd27d..f996fbb 100644 --- a/desktop/source/deployment/inc/db.hxx +++ b/desktop/source/deployment/inc/db.hxx @@ -47,7 +47,6 @@ extern "C" { namespace berkeleydbproxy { - class DbEnv; class Dbc; class Dbt; @@ -68,11 +67,6 @@ namespace berkeleydbproxy { class DESKTOP_DEPLOYMENTMISC_DLLPUBLIC DbEnv : boost::noncopyable { - friend class Db; - - private: - DB_ENV* m_pDBENV; - public: static char *strerror(int); }; @@ -83,7 +77,7 @@ namespace berkeleydbproxy { DB* m_pDBP; public: - Db(DbEnv* dbbenv,u_int32_t flags); + Db(u_int32_t flags); ~Db(); int close(u_int32_t flags); diff --git a/desktop/source/deployment/misc/db.cxx b/desktop/source/deployment/misc/db.cxx index 666bbcb..45f91c7 100644 --- a/desktop/source/deployment/misc/db.cxx +++ b/desktop/source/deployment/misc/db.cxx @@ -49,16 +49,17 @@ namespace berkeleydbproxy { //---------------------------------------------------------------------------- -char *DbEnv::strerror(int error) { +char *DbEnv::strerror(int error) +{ return (db_strerror(error)); } //---------------------------------------------------------------------------- -Db::Db(DbEnv* pDbenv,u_int32_t flags) -: m_pDBP(0) +Db::Db(u_int32_t flags) + : m_pDBP(0) { - db_internal::check_error( db_create(&m_pDBP,pDbenv ? pDbenv->m_pDBENV:0,flags),"Db::Db" ); + db_internal::check_error( db_create(&m_pDBP, NULL, flags),"Db::Db" ); } commit 7988f6135bb7b8d5d8f954c770af7c2ec3915802 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Mar 23 07:52:18 2012 +0000 build db4 with symbols if symbols globally enabled diff --git a/berkeleydb/makefile.mk b/berkeleydb/makefile.mk index 07d6503..082170c 100644 --- a/berkeleydb/makefile.mk +++ b/berkeleydb/makefile.mk @@ -74,6 +74,10 @@ CXXFLAGS:= .IF "$(COM)"=="GCC" CFLAGS:=-fno-strict-aliasing $(EXTRA_CFLAGS) CXXFLAGS:=-fno-strict-aliasing $(EXTRA_CFLAGS) +.IF "$(ENABLE_SYMBOLS)"!="" +CFLAGS+=-g +CXXFLAGS+=-g +.ENDIF .ENDIF .IF "$(GUI)"=="UNX" commit ae7b4576d7df85b41c914c14cc87674428d2ac79 Author: Caolán McNamara <caol...@redhat.com> Date: Thu Mar 22 16:10:07 2012 +0000 overly static lingering OUStrings diff --git a/framework/source/jobs/jobexecutor.cxx b/framework/source/jobs/jobexecutor.cxx index 22e1da1..9fe0b3d 100644 --- a/framework/source/jobs/jobexecutor.cxx +++ b/framework/source/jobs/jobexecutor.cxx @@ -223,12 +223,12 @@ void SAL_CALL JobExecutor::trigger( const ::rtl::OUString& sEvent ) throw(css::u void SAL_CALL JobExecutor::notifyEvent( const css::document::EventObject& aEvent ) throw(css::uno::RuntimeException) { - static ::rtl::OUString EVENT_ON_NEW = DECLARE_ASCII("OnNew" ); // Doc UI event - static ::rtl::OUString EVENT_ON_LOAD = DECLARE_ASCII("OnLoad" ); // Doc UI event - static ::rtl::OUString EVENT_ON_CREATE = DECLARE_ASCII("OnCreate" ); // Doc API event - static ::rtl::OUString EVENT_ON_LOAD_FINISHED = DECLARE_ASCII("OnLoadFinished" ); // Doc API event - static ::rtl::OUString EVENT_ON_DOCUMENT_OPENED = DECLARE_ASCII("onDocumentOpened" ); // Job UI event : OnNew or OnLoad - static ::rtl::OUString EVENT_ON_DOCUMENT_ADDED = DECLARE_ASCII("onDocumentAdded" ); // Job API event : OnCreate or OnLoadFinished + const char EVENT_ON_NEW[] = "OnNew"; // Doc UI event + const char EVENT_ON_LOAD[] = "OnLoad"; // Doc UI event + const char EVENT_ON_CREATE[] = "OnCreate"; // Doc API event + const char EVENT_ON_LOAD_FINISHED[] = "OnLoadFinished"; // Doc API event + ::rtl::OUString EVENT_ON_DOCUMENT_OPENED("onDocumentOpened"); // Job UI event : OnNew or OnLoad + ::rtl::OUString EVENT_ON_DOCUMENT_ADDED("onDocumentAdded"); // Job API event : OnCreate or OnLoadFinished /* SAFE { */ ReadGuard aReadLock(m_aLock); @@ -251,8 +251,8 @@ void SAL_CALL JobExecutor::notifyEvent( const css::document::EventObject& aEvent // Special feature: If the events "OnNew" or "OnLoad" occures - we generate our own event "onDocumentOpened". if ( - (aEvent.EventName.equals(EVENT_ON_NEW )) || - (aEvent.EventName.equals(EVENT_ON_LOAD)) + (aEvent.EventName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(EVENT_ON_NEW))) || + (aEvent.EventName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(EVENT_ON_LOAD))) ) { if (m_lEvents.find(EVENT_ON_DOCUMENT_OPENED) != m_lEvents.end()) @@ -261,8 +261,8 @@ void SAL_CALL JobExecutor::notifyEvent( const css::document::EventObject& aEvent // Special feature: If the events "OnCreate" or "OnLoadFinished" occures - we generate our own event "onDocumentAdded". if ( - (aEvent.EventName.equals(EVENT_ON_CREATE )) || - (aEvent.EventName.equals(EVENT_ON_LOAD_FINISHED)) + (aEvent.EventName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(EVENT_ON_CREATE))) || + (aEvent.EventName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(EVENT_ON_LOAD_FINISHED))) ) { if (m_lEvents.find(EVENT_ON_DOCUMENT_ADDED) != m_lEvents.end()) diff --git a/framework/source/services/pathsettings.cxx b/framework/source/services/pathsettings.cxx index d70d2b3..9bdd098 100644 --- a/framework/source/services/pathsettings.cxx +++ b/framework/source/services/pathsettings.cxx @@ -63,8 +63,8 @@ // ______________________________________________ // non exported const -const ::rtl::OUString CFGPROP_USERPATHS(RTL_CONSTASCII_USTRINGPARAM("UserPaths")); -const ::rtl::OUString CFGPROP_WRITEPATH(RTL_CONSTASCII_USTRINGPARAM("WritePath")); +#define CFGPROP_USERPATHS rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UserPaths")) +#define CFGPROP_WRITEPATH rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("WritePath")) /* 0 : old style "Template" string using ";" as seperator @@ -73,9 +73,9 @@ const ::rtl::OUString CFGPROP_WRITEPATH(RTL_CONSTASCII_USTRINGPARAM("WritePath") 3 : write path "Template_write" string */ -const ::rtl::OUString POSTFIX_INTERNAL_PATHS(RTL_CONSTASCII_USTRINGPARAM("_internal")); -const ::rtl::OUString POSTFIX_USER_PATHS(RTL_CONSTASCII_USTRINGPARAM("_user")); -const ::rtl::OUString POSTFIX_WRITE_PATH(RTL_CONSTASCII_USTRINGPARAM("_writable")); +#define POSTFIX_INTERNAL_PATHS rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_internal")) +#define POSTFIX_USER_PATHS rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_user")) +#define POSTFIX_WRITE_PATH rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_writable")) const sal_Int32 IDGROUP_OLDSTYLE = 0; const sal_Int32 IDGROUP_INTERNAL_PATHS = 1; @@ -270,8 +270,8 @@ OUStringList PathSettings::impl_readOldFormat(const ::rtl::OUString& sPath) // NO substitution here ! It's done outside ... PathSettings::PathInfo PathSettings::impl_readNewFormat(const ::rtl::OUString& sPath) { - const static ::rtl::OUString CFGPROP_INTERNALPATHS(RTL_CONSTASCII_USTRINGPARAM("InternalPaths")); - const static ::rtl::OUString CFGPROP_ISSINGLEPATH(RTL_CONSTASCII_USTRINGPARAM("IsSinglePath")); + const ::rtl::OUString CFGPROP_INTERNALPATHS(RTL_CONSTASCII_USTRINGPARAM("InternalPaths")); + const ::rtl::OUString CFGPROP_ISSINGLEPATH(RTL_CONSTASCII_USTRINGPARAM("IsSinglePath")); css::uno::Reference< css::container::XNameAccess > xCfg = fa_getCfgNew(); @@ -1109,7 +1109,7 @@ css::uno::Reference< css::util::XStringSubstitution > PathSettings::fa_getSubsti //----------------------------------------------------------------------------- css::uno::Reference< css::container::XNameAccess > PathSettings::fa_getCfgOld() { - const static ::rtl::OUString CFG_NODE_OLD(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Common/Path/Current")); + const ::rtl::OUString CFG_NODE_OLD(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Common/Path/Current")); // SAFE -> ReadGuard aReadLock(m_aLock); @@ -1139,7 +1139,7 @@ css::uno::Reference< css::container::XNameAccess > PathSettings::fa_getCfgOld() //----------------------------------------------------------------------------- css::uno::Reference< css::container::XNameAccess > PathSettings::fa_getCfgNew() { - const static ::rtl::OUString CFG_NODE_NEW(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Paths/Paths")); + const ::rtl::OUString CFG_NODE_NEW(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Paths/Paths")); // SAFE -> ReadGuard aReadLock(m_aLock); diff --git a/sfx2/source/appl/appbaslib.cxx b/sfx2/source/appl/appbaslib.cxx index fcb3728..b50b563 100644 --- a/sfx2/source/appl/appbaslib.cxx +++ b/sfx2/source/appl/appbaslib.cxx @@ -183,16 +183,7 @@ Sequence< OUString > SfxApplicationDialogLibraryContainer::impl_getStaticSupport OUString SfxApplicationDialogLibraryContainer::impl_getStaticImplementationName() { - static OUString aImplName; - static sal_Bool bNeedsInit = sal_True; - - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if( bNeedsInit ) - { - aImplName = OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.sfx2.ApplicationDialogLibraryContainer")); - bNeedsInit = sal_False; - } - return aImplName; + return OUString("com.sun.star.comp.sfx2.ApplicationDialogLibraryContainer"); } Reference< XInterface > SAL_CALL SfxApplicationDialogLibraryContainer::impl_createInstance
_______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits