Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F362
bugfix2817.patch
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
baumhaue
Nov 7 2009, 6:44 PM
2009-11-07 18:44:50 (UTC+1)
Size
6 KB
Referenced Files
None
Subscribers
None
bugfix2817.patch
View Options
Index: mitk/CoreUI/Qmitk/QmitkDataStorageComboBox.cpp
===================================================================
--- mitk/CoreUI/Qmitk/QmitkDataStorageComboBox.cpp (revision 19915)
+++ mitk/CoreUI/Qmitk/QmitkDataStorageComboBox.cpp (working copy)
@@ -29,6 +29,18 @@
QmitkDataStorageComboBox::~QmitkDataStorageComboBox()
{
+ // if there was an old storage, remove listeners
+ if(m_DataStorage.IsNotNull())
+ {
+ this->m_DataStorage->AddNodeEvent.RemoveListener( mitk::MessageDelegate1<QmitkDataStorageComboBox
+ , const mitk::DataTreeNode*>( this, &QmitkDataStorageComboBox::AddNode ) );
+
+ this->m_DataStorage->RemoveNodeEvent.RemoveListener( mitk::MessageDelegate1<QmitkDataStorageComboBox
+ , const mitk::DataTreeNode*>( this, &QmitkDataStorageComboBox::RemoveNode ) );
+ }
+
+ while(m_Nodes.size() > 0)
+ RemoveNode(0);
}
//#PUBLIC GETTER
Index: mitk/CoreUI/Qmitk/QmitkStdMultiWidget.cpp
===================================================================
--- mitk/CoreUI/Qmitk/QmitkStdMultiWidget.cpp (revision 19915)
+++ mitk/CoreUI/Qmitk/QmitkStdMultiWidget.cpp (working copy)
@@ -407,10 +407,13 @@
{
if (m_PlaneNode1.IsNotNull() && m_PlaneNode2.IsNotNull() && m_PlaneNode3.IsNotNull() && m_Node.IsNotNull())
{
- m_DataStorage->Remove(m_PlaneNode1);
- m_DataStorage->Remove(m_PlaneNode2);
- m_DataStorage->Remove(m_PlaneNode3);
- m_DataStorage->Remove(m_Node);
+ if(m_DataStorage.IsNotNull())
+ {
+ m_DataStorage->Remove(m_PlaneNode1);
+ m_DataStorage->Remove(m_PlaneNode2);
+ m_DataStorage->Remove(m_PlaneNode3);
+ m_DataStorage->Remove(m_Node);
+ }
}
}
Index: mitk/Modules/QmitkExt/QmitkSlicesInterpolator.cpp
===================================================================
--- mitk/Modules/QmitkExt/QmitkSlicesInterpolator.cpp (revision 19915)
+++ mitk/Modules/QmitkExt/QmitkSlicesInterpolator.cpp (working copy)
@@ -173,12 +173,14 @@
{
itk::MemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::MemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnTransversalTimeChanged );
+ slicer->RemoveObserver(TTimeObserverTag);
TTimeObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometryTimeEvent(NULL, 0), command );
}
{
itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnTransversalSliceChanged );
+ slicer->RemoveObserver(TSliceObserverTag);
TSliceObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometrySliceEvent(NULL, 0), command );
}
@@ -188,12 +190,14 @@
{
itk::MemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::MemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnSagittalTimeChanged );
+ slicer->RemoveObserver(STimeObserverTag);
STimeObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometryTimeEvent(NULL, 0), command );
}
{
itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnSagittalSliceChanged );
+ slicer->RemoveObserver(SSliceObserverTag);
SSliceObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometrySliceEvent(NULL, 0), command );
}
@@ -203,12 +207,14 @@
{
itk::MemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::MemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnFrontalTimeChanged );
+ slicer->RemoveObserver(FTimeObserverTag);
FTimeObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometryTimeEvent(NULL, 0), command );
}
{
itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::Pointer command = itk::ReceptorMemberCommand<QmitkSlicesInterpolator>::New();
command->SetCallbackFunction( this, &QmitkSlicesInterpolator::OnFrontalSliceChanged );
+ slicer->RemoveObserver(FSliceObserverTag);
FSliceObserverTag = slicer->AddObserver( mitk::SliceNavigationController::GeometrySliceEvent(NULL, 0), command );
}
}
@@ -218,7 +224,29 @@
}
QmitkSlicesInterpolator::~QmitkSlicesInterpolator()
-{
+{
+ if (m_MultiWidget)
+ {
+ mitk::SliceNavigationController* slicer;
+ if(m_MultiWidget->mitkWidget1 != NULL)
+ {
+ slicer = m_MultiWidget->mitkWidget1->GetSliceNavigationController();
+ slicer->RemoveObserver( TSliceObserverTag );
+ slicer->RemoveObserver( TTimeObserverTag );
+ }
+ if(m_MultiWidget->mitkWidget2 != NULL)
+ {
+ slicer = m_MultiWidget->mitkWidget2->GetSliceNavigationController();
+ slicer->RemoveObserver( SSliceObserverTag );
+ slicer->RemoveObserver( STimeObserverTag );
+ }
+ if(m_MultiWidget->mitkWidget3 != NULL)
+ {
+ slicer = m_MultiWidget->mitkWidget3->GetSliceNavigationController();
+ slicer->RemoveObserver( FSliceObserverTag );
+ slicer->RemoveObserver( FTimeObserverTag );
+ }
+ }
}
void QmitkSlicesInterpolator::OnToolManagerWorkingDataModified()
@@ -314,7 +342,7 @@
const mitk::SliceNavigationController::GeometrySliceEvent& event = dynamic_cast<const mitk::SliceNavigationController::GeometrySliceEvent&>(e);
mitk::TimeSlicedGeometry* tsg = event.GetTimeSlicedGeometry();
- if (tsg)
+ if (tsg && m_TimeStep.size() > windowID)
{
mitk::SlicedGeometry3D* slicedGeometry = dynamic_cast<mitk::SlicedGeometry3D*>(tsg->GetGeometry3D(m_TimeStep[windowID]));
if (slicedGeometry)
@@ -322,7 +350,7 @@
mitk::PlaneGeometry* plane = dynamic_cast<mitk::PlaneGeometry*>(slicedGeometry->GetGeometry2D( event.GetPos() ));
Interpolate( plane, m_TimeStep[windowID] );
return true;
- }
+ }
}
}
catch(std::bad_cast)
File Metadata
Details
Attached
Mime Type
text/plain
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
346
Default Alt Text
bugfix2817.patch (6 KB)
Attached To
Mode
T2817: MITK crashes on close after some Bundles have been closed
Attached
Detach File
Event Timeline
baumhaue
added a comment.
Nov 7 2009, 6:44 PM
2009-11-07 18:44:50 (UTC+1)
Comment Actions
bugfix2817.patch
Log In to Comment