diff options
Diffstat (limited to 'cppuhelper/source/servicemanager.hxx')
-rw-r--r-- | cppuhelper/source/servicemanager.hxx | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/cppuhelper/source/servicemanager.hxx b/cppuhelper/source/servicemanager.hxx index b6e506bfbd47..1e760ca78310 100644 --- a/cppuhelper/source/servicemanager.hxx +++ b/cppuhelper/source/servicemanager.hxx @@ -106,8 +106,7 @@ public: new ImplementationInfo( name, loader, uri, environment, constructorName, prefix, alienContext, rdbFile)), - constructor(0), status(STATUS_NEW), - dispose(false) + constructor(0), status(STATUS_NEW), dispose(true) {} Implementation( @@ -120,8 +119,7 @@ public: theComponent): info(new ImplementationInfo(name)), constructor(0), factory1(theFactory1), factory2(theFactory2), - component(theComponent), status(STATUS_LOADED), - dispose(false) + component(theComponent), status(STATUS_LOADED), dispose(true) { assert(theFactory1.is() || theFactory2.is()); } css::uno::Reference<css::uno::XInterface> createInstance( @@ -146,8 +144,13 @@ public: Status status; osl::Mutex mutex; - css::uno::Reference<css::uno::XInterface> singleton; + css::uno::Reference< css::lang::XComponent > disposeSingleton; bool dispose; + + private: + void updateDisposeSingleton( + bool singletonRequest, + css::uno::Reference<css::uno::XInterface> const & instance); }; typedef std::map< rtl::OUString, boost::shared_ptr< Implementation > > |