Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F117
vtkDebugLeaksPatch2.patch
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
ivo
Jul 23 2008, 7:47 PM
2008-07-23 19:47:31 (UTC+2)
Size
58 KB
Referenced Files
None
Subscribers
None
vtkDebugLeaksPatch2.patch
View Options
Index: mbi-sb/Testing/mitkVtkPropRendererTest_sb.cpp
===================================================================
--- mbi-sb/Testing/mitkVtkPropRendererTest_sb.cpp (revision 14801)
+++ mbi-sb/Testing/mitkVtkPropRendererTest_sb.cpp (working copy)
@@ -64,41 +64,41 @@
ipPicGetTags(argv[1], picheader);
//Read pic-Image from file
-// std::cout << "Reading image: ";
+ std::cout << "Reading image: ";
mitk::PicFileReader::Pointer reader = mitk::PicFileReader::New();
reader->SetFileName(argv[1]);
reader->Update();
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
mitk::Image::Pointer image = reader->GetOutput();
-// std::cout << "Creating node: ";
+ std::cout << "Creating node: ";
mitk::DataTreeNode::Pointer node = mitk::DataTreeNode::New();
node->SetData(image);
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Creating tree: ";
- mitk::DataTree* tree;
- (tree=mitk::DataTree::New())->Register(); //@FIXME: da DataTreeIteratorClone keinen Smartpointer auf DataTree h�lt, wird tree sonst gel�scht.
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout << "Creating tree: ";
+ mitk::DataTree::Pointer tree;
+ tree=mitk::DataTree::New();
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Creating iterator on tree: ";
+ std::cout << "Creating iterator on tree: ";
mitk::DataTreePreOrderIterator it(tree);
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Adding node via iterator: ";
+ std::cout << "Adding node via iterator: ";
it.Add(node);
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Adding level-window property: ";
+ std::cout << "Adding level-window property: ";
mitk::LevelWindowProperty::Pointer levWinProp = mitk::LevelWindowProperty::New();
mitk::LevelWindow levelwindow;
levelwindow.SetAuto( image );
levWinProp->SetLevelWindow( levelwindow );
node->GetPropertyList()->SetProperty( "levelwindow", levWinProp );
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Creating a vtk sphere: ";
+ std::cout << "Creating a vtk sphere: ";
vtkSphereSource *sphere = vtkSphereSource::New();
sphere->SetRadius(1.0);
sphere->SetThetaResolution(18);
@@ -106,53 +106,56 @@
vtkPolyDataMapper *map = vtkPolyDataMapper::New();
map->SetInput(sphere->GetOutput());
+ sphere->Delete();
vtkActor *aSphere = vtkActor::New();
aSphere->SetMapper(map);
+ map->Delete();
aSphere->GetProperty()->SetColor(0,0,1); // sphere color blue
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Creating a renderer for the sphere: ";
+ std::cout << "Creating a renderer for the sphere: ";
vtkRenderer *sphereRenderer = vtkRenderer::New();
sphereRenderer->AddActor(aSphere);
+ aSphere->Delete();
//sphereRenderer->SetBackground(1,1,1); // Background color white
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Creating vtkRenderWindow and VtkPropRenderer: ";
+ std::cout << "Creating vtkRenderWindow and VtkPropRenderer: ";
vtkRenderWindow *renderWindow = vtkRenderWindow::New();
- mitk::VtkPropRenderer *propRenderer = new mitk::VtkPropRenderer( "the renderer", renderWindow );
+ mitk::VtkPropRenderer::Pointer propRenderer = mitk::VtkPropRenderer::New( "the renderer", renderWindow );
//propRenderer->SetMapperID(2);
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
//renderWindow->AddRenderer(sphereRenderer);
//renderWindow->SetErase(0);
-// std::cout << "BaseRenderer::SetData(iterator): ";
+ std::cout << "BaseRenderer::SetData(iterator): ";
propRenderer->SetData(&it);
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Creating vtkMitkRenderProp and connecting it to the VtkPropRenderer: ";
+ std::cout << "Creating vtkMitkRenderProp and connecting it to the VtkPropRenderer: ";
vtkMitkRenderProp* renderProp = vtkMitkRenderProp::New();
renderProp->SetPropRenderer(propRenderer);
propRenderer->GetVtkRenderer()->AddViewProp(renderProp);
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Inserting the sphere into the foreground of the VtkLayerController: ";
+ std::cout << "Inserting the sphere into the foreground of the VtkLayerController: ";
mitk::VtkLayerController::GetInstance(renderWindow)->InsertForegroundRenderer(sphereRenderer,true);
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
// mouse interaction for debugging
//vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
//iren->SetRenderWindow(renderWindow);
-// std::cout << "Setting and getting size of renderWindow: ";
+ std::cout << "Setting and getting size of renderWindow: ";
renderWindow->SetSize(400, 400);
int *size = renderWindow->GetSize();
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// std::cout << "Do the rendering: ";
+ std::cout << "Do the rendering: ";
renderWindow->Render();
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
//iren->Start();
@@ -164,20 +167,20 @@
propRenderer->PickWorldPoint(p, p_mm);
std::cout << "returned world position: " << p_mm << "\n";
-// std::cout << "Creating vtkUnsignedCharArray: ";
+ std::cout << "Creating vtkUnsignedCharArray: ";
vtkUnsignedCharArray *vtkImage = vtkUnsignedCharArray::New();
-// std::cout<<"[PASSED]"<<std::endl;
+ std::cout<<"[PASSED]"<<std::endl;
-// cout << "Reading image from renderWindow" << std::endl;
+ cout << "Reading image from renderWindow" << std::endl;
renderWindow->GetRGBACharPixelData(0, 0, size[0]-1, size[1]-1, 0, vtkImage);
-// cout << "Read " << size[0]*size[1] << " data points\n";
+ cout << "Read " << size[0]*size[1] << " data points\n";
cout << "Computing sum of all RGBA values..\n";
long int sum_now = 0;
for(int i=0;i<size[0]*size[1];i++)
sum_now += vtkImage->GetValue(i);
std::cout << "Sum of all RGBA values: " << sum_now << "\n";
-// std::cout << "Sum should be: " << sum_orig_Pic3D_pic_gz << "\n";
+ std::cout << "Sum should be: " << sum_orig_Pic3D_pic_gz << "\n";
//std::string Pic3d_pic_gz_str("Pic3D.pic.gz");
//std::cout << "pic3d " << Pic3d_pic_gz_str << "\n";
@@ -195,6 +198,11 @@
// return EXIT_FAILURE;
// }
// std::cout<<"[PASSED]"<<std::endl;
+ //}
+ //else
+ //{
+ // std::cout<<"Unknown image, comparison test skipped"<<std::endl;
+ //}
std::stringstream filename;
filename << "darttempimage.png";
@@ -236,8 +244,14 @@
std::cout << filename.str();
std::cout << "</DartMeasurementFile>" << std::endl;
+ propRenderer->GetVtkRenderer()->RemoveViewProp(renderProp);
+ renderProp->Delete();
+ propRenderer = NULL;
+ sphereRenderer->Delete();
renderWindow->Delete();
+
+ vtkImage->Delete();
tree = NULL; // As the tree has been registered explicitely, destroy it again.
std::cout<<"[TEST DONE]"<<std::endl;
Index: mitk/Core/Algorithms/mitkManualSegmentationToSurfaceFilter.cpp
===================================================================
--- mitk/Core/Algorithms/mitkManualSegmentationToSurfaceFilter.cpp (revision 14801)
+++ mitk/Core/Algorithms/mitkManualSegmentationToSurfaceFilter.cpp (working copy)
@@ -17,6 +17,7 @@
#include <mitkManualSegmentationToSurfaceFilter.h>
+#include <vtkSmartPointer.h>
mitk::ManualSegmentationToSurfaceFilter::ManualSegmentationToSurfaceFilter()
{
@@ -49,11 +50,8 @@
for( int t=tstart; t<tmax; t++ )
{
- vtkImageData *vtkimage = image->GetVtkImageData(t);
+ vtkSmartPointer<vtkImageData> vtkimage = image->GetVtkImageData(t);
- //Inkrement Referenzcounter Counter (hier: RC)
- vtkimage->Register(NULL);
-
// Median -->smooth 3D
if(m_MedianFilter3D)
{
@@ -63,9 +61,7 @@
median->ReleaseDataFlagOn();
median->UpdateInformation();
median->Update();
- vtkimage->Delete(); //->Input
vtkimage = median->GetOutput(); //->Out
- vtkimage->Register(NULL);
median->Delete();
}
@@ -81,9 +77,7 @@
imageresample->SetAxisOutputSpacing(2, m_MedianKernelSizeZ);
imageresample->UpdateInformation();
imageresample->Update();
- vtkimage->Delete(); //->Input
vtkimage=imageresample->GetOutput();//->Output
- vtkimage->Register(NULL);
imageresample->Delete();
}
@@ -101,15 +95,14 @@
vtkImageGaussianSmooth *gaussian = vtkImageGaussianSmooth::New();
gaussian->SetInput(vtkimagethreshold->GetOutput());
+ vtkimagethreshold->Delete();
gaussian->SetDimensionality(3);
gaussian->SetRadiusFactor(0.49);
gaussian->SetStandardDeviation( m_GaussianStandardDeviation );
gaussian->ReleaseDataFlagOn();
gaussian->UpdateInformation();
gaussian->Update();
- vtkimage->Delete();//->Input
vtkimage = gaussian->GetOutput(); //->Out
- gaussian->Register(NULL);
gaussian->Delete();
}
Index: mitk/Core/Controllers/mitkSlicesRotator.cpp
===================================================================
--- mitk/Core/Controllers/mitkSlicesRotator.cpp (revision 14801)
+++ mitk/Core/Controllers/mitkSlicesRotator.cpp (working copy)
@@ -48,12 +48,7 @@
SlicesRotator::Pointer SlicesRotator::New()
{
- // from itkNewMacro()
- Pointer smartPtr;
- SlicesRotator* rawPtr = new SlicesRotator("slices-rotator");
- smartPtr = rawPtr;
- rawPtr->UnRegister();
- return smartPtr;
+ return SlicesRotator::New("slices-rotator");
}
SlicesRotator::SlicesRotator(const char* machine)
Index: mitk/Core/Controllers/mitkSlicesRotator.h
===================================================================
--- mitk/Core/Controllers/mitkSlicesRotator.h (revision 14801)
+++ mitk/Core/Controllers/mitkSlicesRotator.h (working copy)
@@ -66,11 +66,13 @@
mitkClassMacro(SlicesRotator, SlicesCoordinator);
- /// @TODO FIX StateMachine smart pointer handling (or learn about the reason)
static Pointer New();
- /// @TODO public ONLY because of StateMachine's meddling with m_ReferenceCount
- SlicesRotator(const char* machine);
+ /**
+ * @brief New Macro with one parameter for creating this object with static New(..) method
+ **/
+ mitkNewMacro1Param(Self, const char*);
+
virtual void SetGeometry(const itk::EventObject& EventObject);
virtual void RotateToPoint( SliceNavigationController *rotationPlaneSNC,
@@ -79,6 +81,7 @@
protected:
+ SlicesRotator(const char* machine);
// clear list of controllers
virtual ~SlicesRotator();
Index: mitk/Core/Controllers/mitkSlicesSwiveller.cpp
===================================================================
--- mitk/Core/Controllers/mitkSlicesSwiveller.cpp (revision 14801)
+++ mitk/Core/Controllers/mitkSlicesSwiveller.cpp (working copy)
@@ -47,12 +47,7 @@
SlicesSwiveller::Pointer SlicesSwiveller::New()
{
- // from itkNewMacro()
- Pointer smartPtr;
- SlicesSwiveller* rawPtr = new SlicesSwiveller("slices-rotator");
- smartPtr = rawPtr;
- rawPtr->UnRegister();
- return smartPtr;
+ return SlicesSwiveller::New("slices-rotator");
}
SlicesSwiveller::SlicesSwiveller(const char* machine)
Index: mitk/Core/Controllers/mitkSlicesSwiveller.h
===================================================================
--- mitk/Core/Controllers/mitkSlicesSwiveller.h (revision 14801)
+++ mitk/Core/Controllers/mitkSlicesSwiveller.h (working copy)
@@ -67,14 +67,16 @@
mitkClassMacro(SlicesSwiveller, SlicesCoordinator);
- /// @TODO FIX StateMachine smart pointer handling (or learn about the reason)
static Pointer New();
- /// @TODO public ONLY because of StateMachine's meddling with m_ReferenceCount
- SlicesSwiveller(const char* machine);
+ /**
+ * @brief New Macro with one parameter for creating this object with static New(..) method
+ **/
+ mitkNewMacro1Param(Self, const char*);
virtual void SetGeometry(const itk::EventObject& EventObject);
protected:
+ SlicesSwiveller(const char* machine);
// clear list of controllers
virtual ~SlicesSwiveller();
Index: mitk/Core/Controllers/mitkUndoController.cpp
===================================================================
--- mitk/Core/Controllers/mitkUndoController.cpp (revision 14801)
+++ mitk/Core/Controllers/mitkUndoController.cpp (working copy)
@@ -62,6 +62,18 @@
}
}
+mitk::UndoController::~UndoController()
+{
+ // sth like the following has to be done here
+ //UndoModelMapIter undoModelIter = m_UndoModelList.begin();
+ //while(undoModelIter != m_UndoModelList.end())
+ //{
+ // delete (*undoModelIter).second;
+ // ++undoModelIter;
+ //}
+ //m_UndoModelList.clear();
+}
+
//##ModelId=3E5F543402C5
bool mitk::UndoController::SetOperationEvent(UndoStackItem* operationEvent)
{
Index: mitk/Core/Controllers/mitkUndoController.h
===================================================================
--- mitk/Core/Controllers/mitkUndoController.h (revision 14801)
+++ mitk/Core/Controllers/mitkUndoController.h (working copy)
@@ -48,6 +48,7 @@
//## Constructor; Adds the new UndoType or if undoType exists ,
//## switches it to undoType; for UndoTypes see definitionmitkInteractionConst.h
UndoController(UndoType undoType = DEFAULTUNDOMODEL);
+ virtual ~UndoController();
//##ModelId=3E5F543402C5
bool SetOperationEvent(UndoStackItem* operationEvent);
Index: mitk/Core/DataStructures/itkVtkAbstractTransform.txx
===================================================================
--- mitk/Core/DataStructures/itkVtkAbstractTransform.txx (revision 14801)
+++ mitk/Core/DataStructures/itkVtkAbstractTransform.txx (working copy)
@@ -16,6 +16,8 @@
template <class TScalarType>
itk::VtkAbstractTransform<TScalarType>::~VtkAbstractTransform()
{
+ if(m_VtkAbstractTransform!=NULL)
+ m_VtkAbstractTransform->UnRegister(NULL);
}
template <class TScalarType>
@@ -39,15 +41,11 @@
if(m_VtkAbstractTransform!=NULL)
m_VtkAbstractTransform->UnRegister(NULL);
- if(m_InverseVtkAbstractTransform!=NULL)
- m_InverseVtkAbstractTransform->UnRegister(NULL);
-
m_VtkAbstractTransform=aVtkAbstractTransform;
if(m_VtkAbstractTransform!=NULL)
{
m_VtkAbstractTransform->Register(NULL);
- m_InverseVtkAbstractTransform=m_VtkAbstractTransform->GetInverse();
- m_InverseVtkAbstractTransform->Register(NULL);
+ m_InverseVtkAbstractTransform=m_VtkAbstractTransform->GetInverse(); // memory managed by m_VtkAbstractTransform
}
m_LastVtkAbstractTransformTimeStamp = m_VtkAbstractTransform->GetMTime();
Index: mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.cpp
===================================================================
--- mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.cpp (revision 14801)
+++ mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.cpp (working copy)
@@ -37,6 +37,18 @@
mitk::DataStorage::~DataStorage()
{
+ if(m_DataTree.IsNotNull())
+ {
+ m_DataTree->RemoveObserver(m_DeleteInTreeObserverTag);
+ }
+
+ // workaround for bug #343: do another UnRegister in case we re-create a DataStorage
+ // which happens when a PlugIn is re-initialized within Chili
+ if(s_Instance.IsNotNull())
+ {
+ s_Instance->m_DataTree->UnRegister();
+ }
+
m_DataTree = NULL;
}
@@ -444,3 +456,12 @@
return result;
}
+
+void mitk::DataStorage::ShutdownSingleton()
+{
+ if(s_Instance.IsNotNull())
+ {
+ s_Instance->m_DataTree->UnRegister();
+ }
+ s_Instance = NULL;
+}
\ No newline at end of file
Index: mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.h
===================================================================
--- mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.h (revision 14801)
+++ mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.h (working copy)
@@ -61,8 +61,12 @@
static DataStorage* CreateInstance(mitk::DataTree* tree); // create method that initializes singleton object
static DataStorage* GetInstance(); // Singleton pattern like access method
-
+
//##Documentation
+ //## @brief Shutdown the singleton. Workaround for bug #1446
+ static void ShutdownSingleton();
+
+ //##Documentation
//## @brief A Container of objects that is used as a resultset of GetSubset() query operations (Set of SmartPointers to DataTreeNodes).
typedef itk::VectorContainer<unsigned int, mitk::DataTreeNode::Pointer> SetOfObjects;
Index: mitk/Core/DataStructures/mitkDataTreeNode.cpp
===================================================================
--- mitk/Core/DataStructures/mitkDataTreeNode.cpp (revision 14801)
+++ mitk/Core/DataStructures/mitkDataTreeNode.cpp (working copy)
@@ -104,10 +104,12 @@
{
Interactor* interactor = this->GetInteractor();
- if ( interactor )
+ if ( ( interactor ) && ( mitk::GlobalInteraction::HasInstance() ) )
{
mitk::GlobalInteraction::GetInstance()->RemoveInteractor( interactor );
}
+ m_Mappers.clear();
+ m_Data = NULL;
}
//##ModelId=3E33F5D7032D
Index: mitk/Core/DataStructures/mitkLevelWindowPreset.cpp
===================================================================
--- mitk/Core/DataStructures/mitkLevelWindowPreset.cpp (revision 14801)
+++ mitk/Core/DataStructures/mitkLevelWindowPreset.cpp (working copy)
@@ -17,11 +17,14 @@
#include "mitkLevelWindowPreset.h"
#include "mitkStandardFileLocations.h"
+#include <vtkObjectFactory.h>
namespace mitk {
- const std::string LevelWindowPreset::PRESET = "preset";
+const std::string LevelWindowPreset::PRESET = "preset";
+vtkStandardNewMacro(LevelWindowPreset);
+
LevelWindowPreset::LevelWindowPreset()
{
}
@@ -142,4 +145,5 @@
m_Window = newWindow;
save();
}
+
}
Index: mitk/Core/DataStructures/mitkLevelWindowPreset.h
===================================================================
--- mitk/Core/DataStructures/mitkLevelWindowPreset.h (revision 14801)
+++ mitk/Core/DataStructures/mitkLevelWindowPreset.h (working copy)
@@ -25,38 +25,39 @@
namespace mitk {
- class MITK_CORE_EXPORT LevelWindowPreset : public vtkXMLParser
- {
- public:
- LevelWindowPreset();
- ~LevelWindowPreset();
+class MITK_CORE_EXPORT LevelWindowPreset : public vtkXMLParser
+{
+public:
+ static LevelWindowPreset *New();
+ vtkTypeMacro(LevelWindowPreset,vtkXMLParser);
- bool LoadPreset();
- bool LoadPreset(std::string fileName);
- double getLevel(std::string name);
- double getWindow(std::string window);
- std::map<std::string, double>& getLevelPresets();
- std::map<std::string, double>& getWindowPresets();
- void newPresets(std::map<std::string, double> newLevel, std::map<std::string, double> newWindow);
-
+ bool LoadPreset();
+ bool LoadPreset(std::string fileName);
+ double getLevel(std::string name);
+ double getWindow(std::string window);
+ std::map<std::string, double>& getLevelPresets();
+ std::map<std::string, double>& getWindowPresets();
+ void newPresets(std::map<std::string, double> newLevel, std::map<std::string, double> newWindow);
+protected:
+ LevelWindowPreset();
+ ~LevelWindowPreset();
- private:
+private:
+ //##Documentation
+ //## @brief method used in XLM-Reading; gets called when a start-tag is read
+ void StartElement (const char *elementName, const char **atts);
- //##Documentation
- //## @brief method used in XLM-Reading; gets called when a start-tag is read
- void StartElement (const char *elementName, const char **atts);
-
- void saveXML(mitk::XMLWriter& xmlWriter);
- void save();
+ void saveXML(mitk::XMLWriter& xmlWriter);
+ void save();
- //##Documentation
- //## @brief reads an XML-String-Attribute
- std::string ReadXMLStringAttribut( std::string name, const char** atts);
+ //##Documentation
+ //## @brief reads an XML-String-Attribute
+ std::string ReadXMLStringAttribut( std::string name, const char** atts);
- static const std::string PRESET;
- std::map<std::string, double> m_Level;
- std::map<std::string, double> m_Window;
- std::string m_XmlFileName;
- };
+ static const std::string PRESET;
+ std::map<std::string, double> m_Level;
+ std::map<std::string, double> m_Window;
+ std::string m_XmlFileName;
+};
}
#endif
Index: mitk/Core/DataStructures/mitkThinPlateSplineCurvedGeometry.cpp
===================================================================
--- mitk/Core/DataStructures/mitkThinPlateSplineCurvedGeometry.cpp (revision 14801)
+++ mitk/Core/DataStructures/mitkThinPlateSplineCurvedGeometry.cpp (working copy)
@@ -31,6 +31,14 @@
mitk::ThinPlateSplineCurvedGeometry::~ThinPlateSplineCurvedGeometry()
{
+ // don't need to delete m_ThinPlateSplineTransform, because it is
+ // the same as m_InterpolatingAbstractTransform, which will be deleted
+ // by the superclass.
+
+ if(m_VtkTargetLandmarks!=NULL)
+ m_VtkTargetLandmarks->Delete();
+ if(m_VtkProjectedLandmarks!=NULL)
+ m_VtkProjectedLandmarks->Delete();
}
bool mitk::ThinPlateSplineCurvedGeometry::IsValid() const
Index: mitk/Core/DataStructures/mitkTransferFunctionProperty.h
===================================================================
--- mitk/Core/DataStructures/mitkTransferFunctionProperty.h (revision 14801)
+++ mitk/Core/DataStructures/mitkTransferFunctionProperty.h (working copy)
@@ -83,6 +83,10 @@
: BaseProperty()
{};
+ virtual ~TransferFunctionProperty()
+ {
+ };
+
TransferFunctionProperty( mitk::TransferFunction::Pointer value )
: BaseProperty(), m_Value( value )
{};
Index: mitk/Core/Interactions/mitkCoordinateSupplier.cpp
===================================================================
--- mitk/Core/Interactions/mitkCoordinateSupplier.cpp (revision 14801)
+++ mitk/Core/Interactions/mitkCoordinateSupplier.cpp (working copy)
@@ -31,14 +31,17 @@
#include "mitkAction.h"
-//##ModelId=3F0189F0025B
mitk::CoordinateSupplier::CoordinateSupplier(const char * type, mitk::OperationActor* operationActor)
: mitk::StateMachine(type), m_Destination(operationActor)
{
m_CurrentPoint.Fill(0);
}
-//##ModelId=3F0189F00269
+mitk::CoordinateSupplier::~CoordinateSupplier()
+{
+
+}
+
bool mitk::CoordinateSupplier::ExecuteAction(Action* action, mitk::StateEvent const* stateEvent)
{
bool ok = false;
Index: mitk/Core/Interactions/mitkCoordinateSupplier.h
===================================================================
--- mitk/Core/Interactions/mitkCoordinateSupplier.h (revision 14801)
+++ mitk/Core/Interactions/mitkCoordinateSupplier.h (working copy)
@@ -49,6 +49,8 @@
//## @param operationActor: the Data, operations (+ points) are send to
CoordinateSupplier(const char * type, OperationActor* operationActor);
+ ~CoordinateSupplier();
+
//##Documentation
//## @brief executes the actions that are sent to this statemachine
//## derived from StateMachine
Index: mitk/Core/Interactions/mitkEventMapper.cpp
===================================================================
--- mitk/Core/Interactions/mitkEventMapper.cpp (revision 14801)
+++ mitk/Core/Interactions/mitkEventMapper.cpp (working copy)
@@ -44,6 +44,12 @@
#include <itksys/SystemTools.hxx>
#include "mitkCoreObjectFactory.h"
+#include <vtkObjectFactory.h>
+namespace mitk
+{
+vtkStandardNewMacro(EventMapper);
+}
+
#ifdef MBI_INTERNAL_CONFERENCE
#include <mitkGeometry3D.h>
#include <mitkDisplayPositionEvent.h>
@@ -554,7 +560,7 @@
if ( fileName.empty() )
return false;
- mitk::EventMapper* eventMapper = new EventMapper();
+ mitk::EventMapper* eventMapper = EventMapper::New();
eventMapper->SetFileName( fileName.c_str() );
if ( ! eventMapper->Parse() )
Index: mitk/Core/Interactions/mitkEventMapper.h
===================================================================
--- mitk/Core/Interactions/mitkEventMapper.h (revision 14801)
+++ mitk/Core/Interactions/mitkEventMapper.h (working copy)
@@ -60,10 +60,8 @@
class MITK_CORE_EXPORT EventMapper : public vtkXMLParser
{
public:
- //##ModelId=3F02F896006D
- EventMapper();
- //##ModelId=3F02F896008C
- ~EventMapper();
+ static EventMapper *New();
+ vtkTypeMacro(EventMapper,vtkXMLParser);
//##ModelId=3F0177080269
typedef std::vector<mitk::EventDescription> EventDescriptionVec;
@@ -124,6 +122,9 @@
friend class mitk::GlobalInteraction;
protected:
+ EventMapper();
+ ~EventMapper();
+
//##Documentation
//##@brief method only for GlobalInteraction to change the Event (from DiplayPositionEvent to PositionEvent)
static void SetStateEvent(Event* event);
Index: mitk/Core/Interactions/mitkGlobalInteraction.cpp
===================================================================
--- mitk/Core/Interactions/mitkGlobalInteraction.cpp (revision 14801)
+++ mitk/Core/Interactions/mitkGlobalInteraction.cpp (working copy)
@@ -349,6 +349,11 @@
return s_GlobalInteraction.GetPointer();
}
+bool mitk::GlobalInteraction::HasInstance()
+{
+ return s_GlobalInteraction.IsNotNull();
+}
+
bool mitk::GlobalInteraction::AddToSelectedInteractors(mitk::Interactor* interactor)
{
InteractorListIter position = std::find(m_SelectedList.begin(), m_SelectedList.end(),interactor);
Index: mitk/Core/Interactions/mitkGlobalInteraction.h
===================================================================
--- mitk/Core/Interactions/mitkGlobalInteraction.h (revision 14801)
+++ mitk/Core/Interactions/mitkGlobalInteraction.h (working copy)
@@ -135,8 +135,15 @@
static bool StandardInteractionSetup(const char * XMLbehaviorFile = NULL, const char * globalInteractionName = NULL);
+ //##Documentation
+ //## @brief Returns the global (singleton) instance of
+ //## GlobalInteraction. Create it, if it does not exist.
static GlobalInteraction* GetInstance();
+ //##Documentation
+ //## @brief Returns whether an instance exists
+ static bool HasInstance();
+
//so that the interactors can call AddToSelectedInteractors() and RemoveFromSelectedInteractors()
friend class Interactor;
Index: mitk/Core/Interactions/mitkStateMachineFactory.cpp
===================================================================
--- mitk/Core/Interactions/mitkStateMachineFactory.cpp (revision 14801)
+++ mitk/Core/Interactions/mitkStateMachineFactory.cpp (working copy)
@@ -55,6 +55,12 @@
const std::string mitk::StateMachineFactory::STRING_PARAMETER = "stringParameter";
const std::string mitk::StateMachineFactory::VALUE = "VALUE";
+#include <vtkObjectFactory.h>
+namespace mitk
+{
+vtkStandardNewMacro(StateMachineFactory);
+}
+
mitk::StateMachineFactory::StateMachineFactory()
: m_AktStateMachineName("")
{}
@@ -97,7 +103,7 @@
s_LastLoadedBehavior = fileName;
//call a new instance of this class and let it build up static containers
- mitk::StateMachineFactory* stateMachineFactory = new StateMachineFactory();
+ mitk::StateMachineFactory* stateMachineFactory = StateMachineFactory::New();
stateMachineFactory->SetFileName( fileName.c_str() );
InteractionDebug::SetXMLFileName( "StateMachine.xml" );
Index: mitk/Core/Interactions/mitkStateMachineFactory.h
===================================================================
--- mitk/Core/Interactions/mitkStateMachineFactory.h (revision 14801)
+++ mitk/Core/Interactions/mitkStateMachineFactory.h (working copy)
@@ -43,6 +43,9 @@
class MITK_CORE_EXPORT StateMachineFactory : public vtkXMLParser
{
public:
+ static StateMachineFactory *New();
+ vtkTypeMacro(StateMachineFactory,vtkXMLParser);
+
/**
* @brief Typedef for all states that are defined as start-states
**/
@@ -66,16 +69,6 @@
typedef std::map<std::string, StateMachineMapType* > AllStateMachineMapType;
/**
- * @brief Default Constructor
- **/
- StateMachineFactory();
-
- /**
- * @brief Default Destructor
- **/
- ~StateMachineFactory();
-
- /**
* @brief Returns the StartState of the StateMachine with the name type;
*
* Returns NULL if no entry with name type is found.
@@ -119,6 +112,17 @@
**/
friend class StateMachine;
+ protected:
+ /**
+ * @brief Default Constructor
+ **/
+ StateMachineFactory();
+
+ /**
+ * @brief Default Destructor
+ **/
+ ~StateMachineFactory();
+
private:
/**
* @brief Derived from XMLReader
Index: mitk/Core/IO/mitkPointSetReader.cpp
===================================================================
--- mitk/Core/IO/mitkPointSetReader.cpp (revision 14801)
+++ mitk/Core/IO/mitkPointSetReader.cpp (working copy)
@@ -53,7 +53,7 @@
}
in.close();
- mitk::vtkPointSetXMLParser* parser = new mitk::vtkPointSetXMLParser();
+ mitk::vtkPointSetXMLParser* parser = mitk::vtkPointSetXMLParser::New();
parser->SetFileName( m_FileName.c_str() );
if ( parser->Parse() == 0 ) //Parse returns zero as error indicator
{
Index: mitk/Core/IO/vtkPointSetXMLParser.cpp
===================================================================
--- mitk/Core/IO/vtkPointSetXMLParser.cpp (revision 14801)
+++ mitk/Core/IO/vtkPointSetXMLParser.cpp (working copy)
@@ -1,12 +1,24 @@
#include "vtkPointSetXMLParser.h"
+#include "vtkObjectFactory.h"
#include "mitkPointSetWriter.h"
#include "mitkOperation.h"
#include "mitkInteractionConst.h"
#include "mitkPointOperation.h"
+namespace mitk
+{
+vtkStandardNewMacro(vtkPointSetXMLParser);
+}
+mitk::vtkPointSetXMLParser::vtkPointSetXMLParser()
+{
+}
+mitk::vtkPointSetXMLParser::~vtkPointSetXMLParser()
+{
+}
+
void mitk::vtkPointSetXMLParser::StartElement ( const char *name, const char ** /*atts */)
{
std::string currentElement = name;
Index: mitk/Core/IO/vtkPointSetXMLParser.h
===================================================================
--- mitk/Core/IO/vtkPointSetXMLParser.h (revision 14801)
+++ mitk/Core/IO/vtkPointSetXMLParser.h (working copy)
@@ -22,6 +22,10 @@
class MITK_CORE_EXPORT vtkPointSetXMLParser : public vtkXMLParser
{
public:
+ vtkTypeMacro(vtkPointSetXMLParser,vtkXMLParser);
+
+ static vtkPointSetXMLParser* New();
+
typedef mitk::PointSet PointSetType;
typedef std::stack< std::string > ParseStack;
@@ -69,6 +73,8 @@
virtual PointSetList GetParsedPointSets();
protected:
+ vtkPointSetXMLParser();
+ virtual ~vtkPointSetXMLParser();
/**
* A stack containing the parsed start-tags.
Index: mitk/Core/Rendering/mitkBaseRenderer.cpp
===================================================================
--- mitk/Core/Rendering/mitkBaseRenderer.cpp (revision 14801)
+++ mitk/Core/Rendering/mitkBaseRenderer.cpp (working copy)
@@ -180,14 +180,9 @@
m_CameraRotationController->AcquireCamera();
m_CameraController = VtkInteractorCameraController::New(); //B/
-
- m_ReferenceCountLock.Lock();
- m_ReferenceCount = 0;
- m_ReferenceCountLock.Unlock();
+ m_VtkRenderer = vtkRenderer::New();
- m_VtkRenderer = vtkRenderer::New();
-
if (mitk::VtkLayerController::GetInstance(m_RenderWindow) == NULL)
{
mitk::VtkLayerController::AddInstance(m_RenderWindow,m_VtkRenderer);
@@ -201,6 +196,12 @@
//##ModelId=3E3D2F12008C
mitk::BaseRenderer::~BaseRenderer()
{
+ if(m_VtkRenderer!=NULL)
+ {
+ m_VtkRenderer->Delete();
+ m_VtkRenderer = NULL;
+ }
+
if(m_CameraController.IsNotNull())
m_CameraController->SetRenderer(NULL);
Index: mitk/Core/Rendering/mitkColoredRectangleRendering.cpp
===================================================================
--- mitk/Core/Rendering/mitkColoredRectangleRendering.cpp (revision 14801)
+++ mitk/Core/Rendering/mitkColoredRectangleRendering.cpp (working copy)
@@ -92,7 +92,9 @@
rect->SetColor(col1, col2, col3);
m_RectangleRenderer->AddViewProp(rect);
-
+
+ rect->Delete();
+
if(!mitk::VtkLayerController::GetInstance(m_RenderWindow)->IsRendererInserted( m_RectangleRenderer ))
{
#if ( VTK_MAJOR_VERSION >= 5 )
Index: mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.cpp
===================================================================
--- mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.cpp (revision 14801)
+++ mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.cpp (working copy)
@@ -93,9 +93,12 @@
m_BackgroundActor->GetProperty()->SetColor( 0.0, 0.0, 0.0 );
m_BackgroundActor->GetProperty()->SetOpacity( 1.0 );
m_BackgroundActor->SetMapper( m_BackgroundMapper );
- m_BackgroundActor->SetBackfaceProperty( m_BackgroundActor->MakeProperty() );
- m_BackgroundActor->GetBackfaceProperty()->SetColor( 0.0, 0.0, 0.0 );
+ vtkProperty * backfaceProperty = m_BackgroundActor->MakeProperty();
+ backfaceProperty->SetColor( 0.0, 0.0, 0.0 );
+ m_BackgroundActor->SetBackfaceProperty( backfaceProperty );
+ backfaceProperty->Delete();
+
m_FrontHedgeHog = vtkHedgeHog::New();
m_BackHedgeHog = vtkHedgeHog::New();
@@ -152,12 +155,12 @@
m_BackHedgeHog->Delete();
// Delete entries in m_ImageActors list one by one
- ActorList::iterator it;
-
- for ( it = m_ImageActors.begin(); it != m_ImageActors.end(); ++it )
- {
- it->second->Delete();
- }
+ m_ImageActors.clear();
+ //ActorList::iterator it;
+ //for ( it = m_ImageActors.begin(); it != m_ImageActors.end(); ++it )
+ //{
+ // it->second->Delete();
+ //}
}
@@ -286,7 +289,7 @@
{
if ( m_ImageActors.count( imageMapper ) > 0)
{
- m_ImageActors[imageMapper]->Delete();
+ m_ImageActors[imageMapper].m_Sender = NULL; // sender is already destroying itself
m_ImageActors.erase( imageMapper );
}
if ( m_LookupTableProperties.count( imageMapper ) > 0 )
@@ -548,19 +551,14 @@
texture->UnRegister( NULL );
// Store the actor so that it may be accessed in following
- // passes.
- m_ImageActors[imageMapper] = imageActor;
-
- // Get informed when ImageMapper object is deleted, so that
- // the datastructures built here can be deleted as well
- imageMapper->AddObserver(
- itk::DeleteEvent(), m_ImageMapperDeletedCommand );
+ // passes.
+ m_ImageActors[imageMapper].Initialize(imageActor, imageMapper, m_ImageMapperDeletedCommand);
}
else
{
// Else, retrieve the actor and associated objects from the
// previous pass.
- imageActor = m_ImageActors[imageMapper];
+ imageActor = m_ImageActors[imageMapper].m_Actor;
dataSetMapper = (vtkDataSetMapper *)imageActor->GetMapper();
texture = imageActor->GetTexture();
lookupTable = texture->GetLookupTable();
@@ -771,5 +769,31 @@
}
+void
+Geometry2DDataVtkMapper3D::ActorInfo::Initialize(vtkActor* actor, itk::Object* sender, itk::Command* command)
+{
+ m_Actor = actor;
+ m_Sender = sender;
+ // Get informed when ImageMapper object is deleted, so that
+ // the data structures built here can be deleted as well
+ m_ObserverID = sender->AddObserver( itk::DeleteEvent(), command );
+}
+
+Geometry2DDataVtkMapper3D::ActorInfo::ActorInfo() : m_Actor(NULL), m_Sender(NULL), m_ObserverID(0)
+{
+}
+
+Geometry2DDataVtkMapper3D::ActorInfo::~ActorInfo()
+{
+ if(m_Sender != NULL)
+ {
+ m_Sender->RemoveObserver(m_ObserverID);
+ }
+ if(m_Actor != NULL)
+ {
+ m_Actor->Delete();
+ }
+}
+
} // namespace mitk
Index: mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.h
===================================================================
--- mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.h (revision 14801)
+++ mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.h (working copy)
@@ -201,11 +201,26 @@
/** A default grayscale lookup-table, used for reference */
vtkLookupTable *m_DefaultLookupTable;
+ class MITK_CORE_EXPORT ActorInfo
+ {
+ public:
+ vtkActor * m_Actor;
+ // we do not need a smart-pointer, because we delete our
+ // connection, when the referenced mapper is destroyed
+ itk::Object* m_Sender;
+ unsigned long m_ObserverID;
+ void Initialize(vtkActor* actor, itk::Object* sender, itk::Command* command);
+
+ ActorInfo();
+
+ ~ActorInfo();
+ };
+
/** \brief List holding the vtkActor to map the image into 3D for each
* ImageMapper
*/
- typedef std::map< ImageMapper2D *, vtkActor * > ActorList;
+ typedef std::map< ImageMapper2D *, ActorInfo > ActorList;
ActorList m_ImageActors;
struct LookupTableProperties
Index: mitk/Core/Rendering/mitkGradientBackground.cpp
===================================================================
--- mitk/Core/Rendering/mitkGradientBackground.cpp (revision 14801)
+++ mitk/Core/Rendering/mitkGradientBackground.cpp (working copy)
@@ -68,6 +68,10 @@
m_Plane->SetPolys( cellArray );
m_Plane->GetPointData()->SetScalars( data );
+ points->Delete();
+ cellArray->Delete();
+ data->Delete();
+
m_Lut->SetNumberOfColors( 2 );
m_Lut->Build();
m_Lut->SetTableValue( m_Lut->GetIndex(0), 1, 1, 1 );
Index: mitk/Core/Rendering/mitkLogoRendering.cpp
===================================================================
--- mitk/Core/Rendering/mitkLogoRendering.cpp (revision 14801)
+++ mitk/Core/Rendering/mitkLogoRendering.cpp (working copy)
@@ -188,7 +188,7 @@
*dest++ = a;
}
- m_VtkImageImport->SetImportVoidPointer(m_ImageData);
+ m_VtkImageImport->SetImportVoidPointer(m_ImageData, 0 /*delete on destruct*/);
m_VtkImageImport->Modified();
m_VtkImageImport->Update();
Index: mitk/Core/Rendering/mitkPointSetVtkMapper3D.cpp
===================================================================
--- mitk/Core/Rendering/mitkPointSetVtkMapper3D.cpp (revision 14801)
+++ mitk/Core/Rendering/mitkPointSetVtkMapper3D.cpp (working copy)
@@ -80,12 +80,20 @@
{
m_PointsAssembly->Delete();
- //m_SelectedActor->Delete(); //leads to an exeption
+ m_SelectedActor->Delete();
m_UnselectedActor->Delete();
m_ContourActor->Delete();
}
+void mitk::PointSetVtkMapper3D::ReleaseGraphicsResources(vtkWindow *renWin)
+{
+ m_PointsAssembly->ReleaseGraphicsResources(renWin);
+ m_SelectedActor->ReleaseGraphicsResources(renWin);
+ m_UnselectedActor->ReleaseGraphicsResources(renWin);
+ m_ContourActor->ReleaseGraphicsResources(renWin);
+}
+
void mitk::PointSetVtkMapper3D::GenerateData()
{
m_PointsAssembly->VisibilityOn();
@@ -340,7 +348,6 @@
{
m_VtkSelectedPolyDataMapper = vtkPolyDataMapper::New();
m_VtkSelectedPolyDataMapper->SetInput(m_vtkSelectedPointList->GetOutput());
- m_vtkSelectedPointList->Delete();
//create a new instance of the actor
m_SelectedActor->Delete();
@@ -350,12 +357,12 @@
m_VtkSelectedPolyDataMapper->Delete();
m_PointsAssembly->AddPart(m_SelectedActor);
}
+ m_vtkSelectedPointList->Delete();
if (m_NumberOfUnselectedAdded > 0)
{
m_VtkUnselectedPolyDataMapper = vtkPolyDataMapper::New();
m_VtkUnselectedPolyDataMapper->SetInput(m_vtkUnselectedPointList->GetOutput());
- m_vtkUnselectedPointList->Delete();
//create a new instance of the actor
m_UnselectedActor->Delete();
@@ -365,6 +372,7 @@
m_VtkUnselectedPolyDataMapper->Delete();
m_PointsAssembly->AddPart(m_UnselectedActor);
}
+ m_vtkUnselectedPointList->Delete();
//apply props
Superclass::ApplyProperties( m_ContourActor, NULL );
Index: mitk/Core/Rendering/mitkPointSetVtkMapper3D.h
===================================================================
--- mitk/Core/Rendering/mitkPointSetVtkMapper3D.h (revision 14801)
+++ mitk/Core/Rendering/mitkPointSetVtkMapper3D.h (working copy)
@@ -80,6 +80,8 @@
static void SetDefaultProperties(mitk::DataTreeNode* node, mitk::BaseRenderer* renderer = NULL, bool overwrite = false);
+ void ReleaseGraphicsResources(vtkWindow *renWin);
+
protected:
PointSetVtkMapper3D();
Index: mitk/Core/Rendering/mitkVolumeDataVtkMapper3D.cpp
===================================================================
--- mitk/Core/Rendering/mitkVolumeDataVtkMapper3D.cpp (revision 14801)
+++ mitk/Core/Rendering/mitkVolumeDataVtkMapper3D.cpp (working copy)
@@ -164,6 +164,10 @@
m_VolumeLOD->Delete();
m_ClippingPlane->Delete();
m_PlaneWidget->Delete();
+ m_Prop3DAssembly->Delete();
+ m_BoundingBox->Delete();
+ m_BoundingBoxMapper->Delete();
+ m_BoundingBoxActor->Delete();
m_ImageMaskFilter->Delete();
if (m_Mask)
Index: mitk/Core/Rendering/vtkMitkRectangleProp.h
===================================================================
--- mitk/Core/Rendering/vtkMitkRectangleProp.h (revision 14801)
+++ mitk/Core/Rendering/vtkMitkRectangleProp.h (working copy)
@@ -27,8 +27,8 @@
class MITK_CORE_EXPORT vtkMitkRectangleProp : public vtkProp
{
public:
-
static vtkMitkRectangleProp* New();
+ vtkTypeMacro(vtkMitkRectangleProp,vtkProp);
int RenderOpaqueGeometry(vtkViewport* viewport);
int RenderTranslucentGeometry(vtkViewport* viewport);
Index: mitk/Core/Rendering/vtkMitkRenderProp.h
===================================================================
--- mitk/Core/Rendering/vtkMitkRenderProp.h (revision 14801)
+++ mitk/Core/Rendering/vtkMitkRenderProp.h (working copy)
@@ -38,8 +38,8 @@
class MITK_CORE_EXPORT vtkMitkRenderProp : public vtkProp
{
public:
-
static vtkMitkRenderProp *New();
+ vtkTypeMacro(vtkMitkRenderProp,vtkProp);
void SetPropRenderer(mitk::VtkPropRenderer::Pointer propRenderer);
Index: mitk/Q4mitk/QmitkRenderWindow.cpp
===================================================================
--- mitk/Q4mitk/QmitkRenderWindow.cpp (revision 14801)
+++ mitk/Q4mitk/QmitkRenderWindow.cpp (working copy)
@@ -39,7 +39,7 @@
{
if(m_Renderer.IsNull())
{
- m_Renderer = new mitk::VtkPropRenderer( qPrintable(name), GetRenderWindow());
+ m_Renderer = mitk::VtkPropRenderer::New( qPrintable(name), GetRenderWindow());
}
m_Renderer->InitRenderer(this->GetRenderWindow());
Index: mitk/QApplications/Tutorial/Step6.cpp
===================================================================
--- mitk/QApplications/Tutorial/Step6.cpp (revision 14801)
+++ mitk/QApplications/Tutorial/Step6.cpp (working copy)
@@ -106,9 +106,6 @@
// Part I: Basic initialization
//*************************************************************************
- // Create a tree
- m_Tree=mitk::DataTree::New();
-
// Create an iterator on the tree
mitk::DataTreePreOrderIterator it(m_Tree);
Index: mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui
===================================================================
--- mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui (revision 14801)
+++ mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui (working copy)
@@ -1327,6 +1327,7 @@
<forward>class QmitkSimpleExampleFunctionality</forward>
<forward>class QmitkStdMultiWidget</forward>
<forward>class QmitkSelectableGLWidget</forward>
+ <forward>class posOutputType</forward>
</forwards>
<variables>
<variable>bool m_InOptionsUpdate;</variable>
@@ -1343,6 +1344,7 @@
<variable>mitk::UndoController* m_UndoController;</variable>
<variable access="private">static QmitkMainTemplate* m_Instance;</variable>
<variable>QPalette m_StandardPalette;</variable>
+ <variable access="private">posOutputType* m_PosOutput;</variable>
</variables>
<signals>
<signal>ShowWidgetPlanesToggled(bool)</signal>
Index: mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui.h
===================================================================
--- mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui.h (revision 14801)
+++ mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui.h (working copy)
@@ -724,6 +724,7 @@
m_StandardPalette = QApplication::palette();
m_FirstFileOpen = true;
m_NoMITKOptions = false;
+ m_PosOutput = NULL;
//creating a QmitkStatusBar for Output on the QStatusBar and connecting it with the MainStatusBar
QmitkStatusBar *statusBar = new QmitkStatusBar(this->statusBar());
@@ -799,9 +800,9 @@
//could the behavior file be found?
if ( smLoadOK )
{
- posOutputType* posOutput = new posOutputType(&it);
+ m_PosOutput = new posOutputType(&it);
- mitk::GlobalInteraction::GetInstance()->AddListener(mitk::CoordinateSupplier::New("navigation", posOutput)); //sends PointOperations
+ mitk::GlobalInteraction::GetInstance()->AddListener(mitk::CoordinateSupplier::New("navigation", m_PosOutput)); //sends PointOperations
}
else
{
@@ -1276,6 +1277,9 @@
delete m_SceneWidget;
#endif
+ delete m_PosOutput;
+
+ mitk::DataStorage::GetInstance()->ShutdownSingleton();
m_Tree = NULL;
}
Index: mitk/Qmitk/QmitkLevelWindowWidgetContextMenu.cpp
===================================================================
--- mitk/Qmitk/QmitkLevelWindowWidgetContextMenu.cpp (revision 14801)
+++ mitk/Qmitk/QmitkLevelWindowWidgetContextMenu.cpp (working copy)
@@ -24,7 +24,7 @@
QmitkLevelWindowWidgetContextMenu::QmitkLevelWindowWidgetContextMenu(QWidget * parent, const char * name, WFlags f )
: QWidget( parent, name, f )
{
- m_LevelWindowPreset = new mitk::LevelWindowPreset();
+ m_LevelWindowPreset = mitk::LevelWindowPreset::New();
m_LevelWindowPreset->LoadPreset();
}
Index: mitk/Qmitk/QmitkStdMultiWidget.ui
===================================================================
--- mitk/Qmitk/QmitkStdMultiWidget.ui (revision 14801)
+++ mitk/Qmitk/QmitkStdMultiWidget.ui (working copy)
@@ -191,8 +191,8 @@
<variable>mitk::PositionTracker::Pointer m_PositionTracker;</variable>
<variable>mitk::DataTreeNode::Pointer m_PositionTrackerNode;</variable>
<variable>mitk::DataTreeBase::Pointer m_Tree;</variable>
- <variable>mitk::SlicesRotator *m_SlicesRotator;</variable>
- <variable>mitk::SlicesSwiveller *m_SlicesSwiveller;</variable>
+ <variable>mitk::SlicesRotator::Pointer m_SlicesRotator;</variable>
+ <variable>mitk::SlicesSwiveller::Pointer m_SlicesSwiveller;</variable>
<variable>mitk::GradientBackground::Pointer m_GradientBackground1;</variable>
<variable>mitk::GradientBackground::Pointer m_GradientBackground2;</variable>
<variable>mitk::LogoRendering::Pointer m_LogoRendering1;</variable>
Index: mitk/Qmitk/QmitkStdMultiWidget.ui.h
===================================================================
--- mitk/Qmitk/QmitkStdMultiWidget.ui.h (revision 14801)
+++ mitk/Qmitk/QmitkStdMultiWidget.ui.h (working copy)
@@ -98,7 +98,7 @@
// m_SlicesRotator = mitk::SlicesRotator::New();
// @TODO next line causes sure memory leak
// rotator will be created nonetheless (will be switched on and off)
- m_SlicesRotator = new mitk::SlicesRotator("slices-rotator");
+ m_SlicesRotator = mitk::SlicesRotator::New("slices-rotator");
m_SlicesRotator->AddSliceController(
mitkWidget1->GetSliceNavigationController() );
m_SlicesRotator->AddSliceController(
@@ -107,7 +107,7 @@
mitkWidget3->GetSliceNavigationController() );
// create a slice swiveller (using the same state-machine as SlicesRotator)
- m_SlicesSwiveller = new mitk::SlicesSwiveller("slices-rotator");
+ m_SlicesSwiveller = mitk::SlicesSwiveller::New("slices-rotator");
m_SlicesSwiveller->AddSliceController(
mitkWidget1->GetSliceNavigationController() );
m_SlicesSwiveller->AddSliceController(
Index: mitk/Testing/mitkContourMapper2DTest.cpp
===================================================================
--- mitk/Testing/mitkContourMapper2DTest.cpp (revision 14801)
+++ mitk/Testing/mitkContourMapper2DTest.cpp (working copy)
@@ -44,8 +44,8 @@
}
else {
std::cout<<"[PASSED]"<<std::endl;
- }
-
+ }
+
contourMapper->SetDataTreeNode( node );
contourMapper->Update(NULL);
mitk::Contour* testContour = (mitk::Contour*)contourMapper->GetInput();
@@ -53,27 +53,26 @@
mitk::DataTree::Pointer dataTree = mitk::DataTree::New();
mitk::DataTreePreOrderIterator it(dataTree);
-
+
it.Add( node );
-
+
mitk::BoundingBox::Pointer bounds = mitk::DataTree::ComputeBoundingBox(&it);
-
+
std::cout << "bounds: " << bounds << std::endl;
bounds = mitk::DataTree::ComputeVisibleBoundingBox(&it);
std::cout << "visible bounds: " << bounds << std::endl;
-
+
vtkRenderWindow* renWin = vtkRenderWindow::New();
- mitk::VtkPropRenderer * renderer = new mitk::VtkPropRenderer("ContourRenderer",renWin);
-
+ mitk::VtkPropRenderer::Pointer renderer = mitk::VtkPropRenderer::New("ContourRenderer",renWin);
+
std::cout<<"Testing mitk::BaseRenderer::SetData()"<<std::endl;
-
+
renderer->SetData(&it);
std::cout<<"[TEST DONE]"<<std::endl;
renWin->Delete();
- renderer->Delete();
return EXIT_SUCCESS;
}
Index: mitk/Testing/mitkEventTest.cpp
===================================================================
--- mitk/Testing/mitkEventTest.cpp (revision 14801)
+++ mitk/Testing/mitkEventTest.cpp (working copy)
@@ -23,11 +23,11 @@
int mitkEventTest(int /*argc*/, char* /*argv*/[])
{
vtkRenderWindow* renWin = vtkRenderWindow::New();
- mitk::VtkPropRenderer * renderer = new mitk::VtkPropRenderer("ContourRenderer",renWin);
-
+ mitk::VtkPropRenderer::Pointer renderer = mitk::VtkPropRenderer::New("ContourRenderer",renWin);
+
//Create Event
mitk::Event * event = new mitk::Event(renderer, 0, 1, 2, 3);
-
+
//check Get...
std::cout << "check the get methods of the Event";
if (event->GetSender() != renderer ||
@@ -44,7 +44,6 @@
std::cout<<"[PASSED]"<<std::endl;
renWin->Delete();
- renderer->Delete();
std::cout<<"[TEST DONE]"<<std::endl;
return EXIT_SUCCESS;
Index: mitk/Testing/mitkImageMapper2DTest.cpp
===================================================================
--- mitk/Testing/mitkImageMapper2DTest.cpp (revision 14801)
+++ mitk/Testing/mitkImageMapper2DTest.cpp (working copy)
@@ -23,9 +23,14 @@
#include <mitkLevelWindow.h>
#include <mitkLevelWindowProperty.h>
#include <mitkVtkPropRenderer.h>
+#include <mitkVolumeDataVtkMapper3D.h>
+#include <mitkTransferFunctionProperty.h>
+#include <mitkTransferFunction.h>
#include <mitkNativeRenderWindowInteractor.h>
+#include "mitkReferenceCountWatcher.h"
+
#include <fstream>
int mitkImageMapper2DTest(int /*argc*/, char* /*argv*/[])
{
@@ -50,10 +55,28 @@
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Creating tree: ";
- mitk::DataTree* tree;
- (tree=mitk::DataTree::New())->Register(); //@FIXME: da DataTreeIteratorClone keinen Smartpointer auf DataTree h�lt, wird tree sonst gel�scht.
+ mitk::DataTree::Pointer tree;
+ tree=mitk::DataTree::New();
std::cout<<"[PASSED]"<<std::endl;
+ std::cout << "Testing reference count of tree: ";
+ mitk::ReferenceCountWatcher::Pointer treeWatcher = new mitk::ReferenceCountWatcher(tree, "tree");
+ if(treeWatcher->GetReferenceCount()!=1)
+ {
+ std::cout<<treeWatcher->GetReferenceCount()<<"!=1 [FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
+ std::cout << "Testing reference count of node: ";
+ mitk::ReferenceCountWatcher::Pointer nodeWatcher = new mitk::ReferenceCountWatcher(node, "node");
+ if(nodeWatcher->GetReferenceCount()!=1)
+ {
+ std::cout<<nodeWatcher->GetReferenceCount()<<"!=1 [FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
std::cout << "Creating iterator on tree: ";
mitk::DataTreePreOrderIterator it(tree);
std::cout<<"[PASSED]"<<std::endl;
@@ -72,24 +95,113 @@
std::cout << "Creating VtkPropRenderer: ";
vtkRenderWindow *renderWindow = vtkRenderWindow::New();
- mitk::VtkPropRenderer *propRenderer = new mitk::VtkPropRenderer( "the renderer", renderWindow );
+ mitk::VtkPropRenderer::Pointer propRenderer = mitk::VtkPropRenderer::New( "the renderer", renderWindow );
std::cout<<"[PASSED]"<<std::endl;
std::cout << "BaseRenderer::SetData(iterator): ";
propRenderer->SetData(&it);
std::cout<<"[PASSED]"<<std::endl;
+ std::cout << "Testing reference count of node: ";
+ if(nodeWatcher->GetReferenceCount()!=2)
+ {
+ std::cout<<nodeWatcher->GetReferenceCount()<<"!=2 [FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
std::cout << "Testing if an mitk::ImageMapper2D was created: ";
- if(dynamic_cast<mitk::ImageMapper2D*>(node->GetMapper(1))==NULL)
+ if(dynamic_cast<mitk::ImageMapper2D*>(node->GetMapper(mitk::BaseRenderer::Standard2D))==NULL)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
+ std::cout << "Testing if an mitk::VolumeDataVtkMapper3D was created: ";
+ if(dynamic_cast<mitk::VolumeDataVtkMapper3D*>(node->GetMapper(mitk::BaseRenderer::Standard3D))==NULL)
+ {
+ std::cout<<"[FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
+ std::cout << "Testing if an mitk::TransferFunctionProperty was created: ";
+ mitk::TransferFunctionProperty::Pointer transferFctProperty;
+ if(node->GetProperty<mitk::TransferFunctionProperty>(transferFctProperty, "TransferFunction") == false)
+ {
+ std::cout<<"[FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
+ std::cout << "Testing if an mitk::TransferFunctionProperty contains an mitk::TransferFunction: ";
+ mitk::TransferFunction::Pointer transferFct = transferFctProperty->GetValue();
+ if(transferFct.IsNull())
+ {
+ std::cout<<"[FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
+ std::cout << "Testing reference count of mitk::TransferFunctionProperty: ";
+ mitk::ReferenceCountWatcher::Pointer transferFctPropertyWatcher = new mitk::ReferenceCountWatcher(transferFctProperty, "transferFctProperty");
+ transferFctProperty = NULL;
+ if(transferFctPropertyWatcher->GetReferenceCount()!=1)
+ {
+ std::cout<<transferFctPropertyWatcher->GetReferenceCount()<<"!=1 [FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
+ std::cout << "Testing reference count of mitk::TransferFunctionProperty: ";
+ mitk::ReferenceCountWatcher::Pointer transferFctWatcher = new mitk::ReferenceCountWatcher(transferFct, "transferFct");
+ transferFct = NULL;
+ if(transferFctWatcher->GetReferenceCount()!=1)
+ {
+ std::cout<<transferFctWatcher->GetReferenceCount()<<"!=1 [FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
+ std::cout << "Deleting renderwindow, node and tree: ";
renderWindow->Delete();
- tree = NULL; // As the tree has been registered explicitely, destroy it again.
+ node = NULL;
+ tree = NULL;
+ std::cout<<"[PASSED]"<<std::endl;
+ std::cout << "Testing reference count of tree: ";
+ if(treeWatcher->GetReferenceCount()!=0)
+ {
+ std::cout<<treeWatcher->GetReferenceCount()<<"!=0 [FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
+ std::cout << "Testing reference count of node: ";
+ if(nodeWatcher->GetReferenceCount()!=0)
+ {
+ std::cout<<nodeWatcher->GetReferenceCount()<<"!=0 [FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
+ std::cout << "Testing reference count of mitk::TransferFunctionProperty: ";
+ if(transferFctPropertyWatcher->GetReferenceCount()!=0)
+ {
+ std::cout<<transferFctPropertyWatcher->GetReferenceCount()<<"!=0 [FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
+ std::cout << "Testing reference count of mitk::TransferFunctionProperty: ";
+ if(transferFctWatcher->GetReferenceCount()!=0)
+ {
+ std::cout<<transferFctWatcher->GetReferenceCount()<<"!=0 [FAILED]"<<std::endl;
+ return EXIT_FAILURE;
+ }
+ std::cout<<"[PASSED]"<<std::endl;
+
std::cout<<"[TEST DONE]"<<std::endl;
return EXIT_SUCCESS;
}
Index: mitk/Testing/mitkManualSegmentationToSurfaceFilterTest.cpp
===================================================================
--- mitk/Testing/mitkManualSegmentationToSurfaceFilterTest.cpp (revision 14801)
+++ mitk/Testing/mitkManualSegmentationToSurfaceFilterTest.cpp (working copy)
@@ -52,7 +52,7 @@
mitk::DataTreeNodeFactory::Pointer factory = mitk::DataTreeNodeFactory::New();
try
{
- std::cout << "Loading file: ";
+ std::cout << "Loading file: "<<std::flush;
factory->SetFileName( fileIn.c_str() );
factory->Update();
Index: mitk/Testing/mitkStateMachineFactoryTest.cpp
===================================================================
--- mitk/Testing/mitkStateMachineFactoryTest.cpp (revision 14801)
+++ mitk/Testing/mitkStateMachineFactoryTest.cpp (working copy)
@@ -23,7 +23,7 @@
int mitkStateMachineFactoryTest(int /*argc*/, char* /*argv*/[])
{
//create statemachinefactory
- mitk::StateMachineFactory* statemachineFactory = new mitk::StateMachineFactory();
+ mitk::StateMachineFactory* statemachineFactory = mitk::StateMachineFactory::New();
//load standard behavior
std::cout << "Testing LoadStandardBehavior(): ";
Index: mitk/Testing/mitkVtkPropRendererTest.cpp
===================================================================
--- mitk/Testing/mitkVtkPropRendererTest.cpp (revision 14801)
+++ mitk/Testing/mitkVtkPropRendererTest.cpp (working copy)
@@ -75,8 +75,8 @@
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Creating tree: ";
- mitk::DataTree* tree;
- (tree=mitk::DataTree::New())->Register(); //@FIXME: da DataTreeIteratorClone keinen Smartpointer auf DataTree h�lt, wird tree sonst gel�scht.
+ mitk::DataTree::Pointer tree;
+ tree=mitk::DataTree::New();
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Creating iterator on tree: ";
@@ -103,21 +103,24 @@
vtkPolyDataMapper *map = vtkPolyDataMapper::New();
map->SetInput(sphere->GetOutput());
+ sphere->Delete();
vtkActor *aSphere = vtkActor::New();
aSphere->SetMapper(map);
+ map->Delete();
aSphere->GetProperty()->SetColor(0,0,1); // sphere color blue
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Creating a renderer for the sphere: ";
vtkRenderer *sphereRenderer = vtkRenderer::New();
sphereRenderer->AddActor(aSphere);
+ aSphere->Delete();
//sphereRenderer->SetBackground(1,1,1); // Background color white
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Creating vtkRenderWindow and VtkPropRenderer: ";
vtkRenderWindow *renderWindow = vtkRenderWindow::New();
- mitk::VtkPropRenderer *propRenderer = new mitk::VtkPropRenderer( "the renderer", renderWindow );
+ mitk::VtkPropRenderer::Pointer propRenderer = mitk::VtkPropRenderer::New( "the renderer", renderWindow );
//propRenderer->SetMapperID(2);
std::cout<<"[PASSED]"<<std::endl;
@@ -198,7 +201,15 @@
// std::cout<<"Unknown image, comparison test skipped"<<std::endl;
//}
+
+ propRenderer->GetVtkRenderer()->RemoveViewProp(renderProp);
+ renderProp->Delete();
+ propRenderer = NULL;
+ sphereRenderer->Delete();
+
renderWindow->Delete();
+
+ vtkImage->Delete();
tree = NULL; // As the tree has been registered explicitely, destroy it again.
std::cout<<"[TEST DONE]"<<std::endl;
File Metadata
Details
Attached
Mime Type
text/plain
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
110
Default Alt Text
vtkDebugLeaksPatch2.patch (58 KB)
Attached To
Mode
T1432: EASY: Fix problems detected by vtkDebugLeaks
Attached
Detach File
Event Timeline
ivo
added a comment.
Jul 23 2008, 7:47 PM
2008-07-23 19:47:31 (UTC+2)
Comment Actions
Second version of patch
Log In to Comment