diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2012-02-23 10:37:09 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2012-02-23 10:47:37 +0100 |
commit | 2eaa1422a032d6a7ffc72a2abeb3dd3e6248a263 (patch) | |
tree | a8a618394c09b21cd189a4f9f221557dc5fc628a /comphelper | |
parent | 40d21ab3c75a7c18de940162563015ae80136709 (diff) |
Adapted AsyncEventNotifier to safer-to-use salhelper::Thread
Diffstat (limited to 'comphelper')
-rw-r--r-- | comphelper/Library_comphelp.mk | 5 | ||||
-rw-r--r-- | comphelper/inc/comphelper/asyncnotification.hxx | 33 | ||||
-rw-r--r-- | comphelper/prj/build.lst | 2 | ||||
-rw-r--r-- | comphelper/source/misc/asyncnotification.cxx | 37 |
4 files changed, 22 insertions, 55 deletions
diff --git a/comphelper/Library_comphelp.mk b/comphelper/Library_comphelp.mk index 2b37596b0bcf..71ef2a01b9b2 100644 --- a/comphelper/Library_comphelp.mk +++ b/comphelper/Library_comphelp.mk @@ -42,9 +42,10 @@ $(eval $(call gb_Library_add_defs,comphelper,\ )) $(eval $(call gb_Library_add_linked_libs,comphelper,\ - sal \ - cppuhelper \ cppu \ + cppuhelper \ + sal \ + salhelper \ ucbhelper \ $(gb_STDLIBS) \ )) diff --git a/comphelper/inc/comphelper/asyncnotification.hxx b/comphelper/inc/comphelper/asyncnotification.hxx index e7d5ac38ff3b..0ca35a3bf2a5 100644 --- a/comphelper/inc/comphelper/asyncnotification.hxx +++ b/comphelper/inc/comphelper/asyncnotification.hxx @@ -29,12 +29,13 @@ #ifndef COMPHELPER_ASYNCNOTIFICATION_HXX #define COMPHELPER_ASYNCNOTIFICATION_HXX -#include <osl/thread.hxx> -#include <rtl/ref.hxx> -#include <comphelper/comphelperdllapi.h> -#include <rtl/alloc.h> +#include "sal/config.h" -#include <memory> +#include "boost/scoped_ptr.hpp" +#include "comphelper/comphelperdllapi.h" +#include "rtl/ref.hxx" +#include "sal/types.h" +#include "salhelper/thread.hxx" //........................................................................ namespace comphelper @@ -109,26 +110,25 @@ namespace comphelper events in the queue. As soon as you add an event, the thread is woken up, processes the event, and sleeps again. */ - class COMPHELPER_DLLPUBLIC AsyncEventNotifier :public ::osl::Thread - ,public ::rtl::IReference + class COMPHELPER_DLLPUBLIC AsyncEventNotifier: public salhelper::Thread { friend struct EventNotifierImpl; private: - ::std::auto_ptr< EventNotifierImpl > m_pImpl; + boost::scoped_ptr< EventNotifierImpl > m_pImpl; + + SAL_DLLPRIVATE virtual ~AsyncEventNotifier(); // Thread - virtual void SAL_CALL run(); - virtual void SAL_CALL onTerminated(); + SAL_DLLPRIVATE virtual void execute(); public: /** constructs a notifier thread - */ - AsyncEventNotifier(); - // IReference implementations - virtual oslInterlockedCount SAL_CALL acquire(); - virtual oslInterlockedCount SAL_CALL release(); + @param name the thread name, see ::osl_setThreadName; must not be + null + */ + AsyncEventNotifier(char const * name); /** terminates the thread @@ -156,9 +156,6 @@ namespace comphelper /** removes all events for the given event processor from the queue */ void removeEventsForProcessor( const ::rtl::Reference< IEventProcessor >& _xProcessor ); - - protected: - virtual ~AsyncEventNotifier(); }; //==================================================================== diff --git a/comphelper/prj/build.lst b/comphelper/prj/build.lst index 722ac8161de6..007c0472ea81 100644 --- a/comphelper/prj/build.lst +++ b/comphelper/prj/build.lst @@ -1,2 +1,2 @@ -ph comphelper : cppuhelper ucbhelper offapi officecfg salhelper LIBXSLT:libxslt NULL +ch comphelper : BOOST:boost cppuhelper ucbhelper offapi officecfg salhelper LIBXSLT:libxslt NULL ch comphelper\prj nmake - all ch_all NULL diff --git a/comphelper/source/misc/asyncnotification.cxx b/comphelper/source/misc/asyncnotification.cxx index cf8b6286d97b..216cdb2f765f 100644 --- a/comphelper/source/misc/asyncnotification.cxx +++ b/comphelper/source/misc/asyncnotification.cxx @@ -142,8 +142,8 @@ namespace comphelper //= AsyncEventNotifier //==================================================================== //-------------------------------------------------------------------- - AsyncEventNotifier::AsyncEventNotifier() - :m_pImpl( new EventNotifierImpl ) + AsyncEventNotifier::AsyncEventNotifier(char const * name): + Thread(name), m_pImpl(new EventNotifierImpl) { } @@ -191,13 +191,8 @@ namespace comphelper } //-------------------------------------------------------------------- - void AsyncEventNotifier::run() + void AsyncEventNotifier::execute() { - acquire(); - - // keep us alive, in case we're terminated in the mid of the following - ::rtl::Reference< AsyncEventNotifier > xKeepAlive( this ); - do { AnyEventRef aNextEvent; @@ -248,32 +243,6 @@ namespace comphelper while ( sal_True ); } - //-------------------------------------------------------------------- - void SAL_CALL AsyncEventNotifier::onTerminated() - { - Thread::onTerminated(); - // when we were started (->run), we aquired ourself. Release this now - // that we were finally terminated - release(); - } - - //-------------------------------------------------------------------- - oslInterlockedCount SAL_CALL AsyncEventNotifier::acquire() - { - return osl_incrementInterlockedCount( &m_pImpl->m_refCount ); - } - - //-------------------------------------------------------------------- - oslInterlockedCount SAL_CALL AsyncEventNotifier::release() - { - if ( 0 == osl_decrementInterlockedCount( &m_pImpl->m_refCount ) ) - { - delete this; - return 0; - } - return m_pImpl->m_refCount; - } - //........................................................................ } // namespace comphelper //........................................................................ |