1 #ifndef __CPM__VTK__THREADEDDEFORMATION__HXX__
2 #define __CPM__VTK__THREADEDDEFORMATION__HXX__
4 #include <cpm/VTK/ThreadedDeformationObserver.h>
6 // -------------------------------------------------------------------------
8 typename cpm::VTK::ThreadedDeformation< F >::
9 Self* cpm::VTK::ThreadedDeformation< F >::
12 return( new Self( ) );
15 // -------------------------------------------------------------------------
17 void cpm::VTK::ThreadedDeformation< F >::
20 #ifdef CPM_VTK_THREADEDDEFORMATION_ON_LINUX
25 // -------------------------------------------------------------------------
27 int cpm::VTK::ThreadedDeformation< F >::
28 ExecuteFilter( F* filter, vtkRenderWindow* window )
33 return( this->SpawnThread( Self::_Function, &data ) );
36 // -------------------------------------------------------------------------
38 cpm::VTK::ThreadedDeformation< F >::
39 ThreadedDeformation( )
44 // -------------------------------------------------------------------------
46 cpm::VTK::ThreadedDeformation< F >::
47 ~ThreadedDeformation( )
51 // -------------------------------------------------------------------------
53 void* cpm::VTK::ThreadedDeformation< F >::
54 _Function( void* arg )
56 typedef cpm::VTK::ThreadedDeformationObserver< F > _TObserver;
57 typedef Superclass::ThreadInfo _TInfo;
58 typedef typename F::AllMeshUpdatedEvent _TEvt;
61 _TInfo* info = reinterpret_cast< _TInfo* >( arg );
64 _TData* data = reinterpret_cast< _TData* >( info->UserData );
67 F* filter = data->first;
68 vtkRenderWindow* window = data->second;
70 // Add observers, execute and remove observers
71 typename _TObserver::Pointer obs = _TObserver::New( );
72 obs->Configure( window );
73 unsigned long id = filter->AddObserver( _TEvt( ), obs );
75 filter->RemoveObserver( id );
79 #endif // __CPM__VTK__THREADEDDEFORMATION__HXX__