summaryrefslogtreecommitdiff
path: root/comphelper
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2012-02-23 10:37:09 +0100
committerStephan Bergmann <sbergman@redhat.com>2012-02-23 10:47:37 +0100
commit2eaa1422a032d6a7ffc72a2abeb3dd3e6248a263 (patch)
treea8a618394c09b21cd189a4f9f221557dc5fc628a /comphelper
parent40d21ab3c75a7c18de940162563015ae80136709 (diff)
Adapted AsyncEventNotifier to safer-to-use salhelper::Thread
Diffstat (limited to 'comphelper')
-rw-r--r--comphelper/Library_comphelp.mk5
-rw-r--r--comphelper/inc/comphelper/asyncnotification.hxx33
-rw-r--r--comphelper/prj/build.lst2
-rw-r--r--comphelper/source/misc/asyncnotification.cxx37
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
//........................................................................