Преглед на файлове

Split disconnect function

Jean-Christophe Fillion-Robin преди 11 години
родител
ревизия
947e53b684
променени са 2 файла, в които са добавени 18 реда и са изтрити 8 реда
  1. 16 7
      Libs/Visualization/VTK/Core/ctkVTKConnection.cpp
  2. 2 1
      Libs/Visualization/VTK/Core/ctkVTKConnection_p.h

+ 16 - 7
Libs/Visualization/VTK/Core/ctkVTKConnection.cpp

@@ -119,7 +119,7 @@ void ctkVTKConnectionPrivate::connect()
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-void ctkVTKConnectionPrivate::disconnect()
+void ctkVTKConnectionPrivate::disconnectSlots()
 {
 {
   Q_Q(ctkVTKConnection);
   Q_Q(ctkVTKConnection);
   
   
@@ -150,13 +150,18 @@ void ctkVTKConnectionPrivate::disconnect()
       }
       }
     }
     }
 
 
+  this->Connected = false;
+}
+
+//-----------------------------------------------------------------------------
+void ctkVTKConnectionPrivate::disconnectVTKObject()
+{
+  Q_Q(ctkVTKConnection);
   if (this->VTKObject)
   if (this->VTKObject)
     {
     {
     q->removeObserver(this->VTKObject, this->VTKEvent, this->Callback);
     q->removeObserver(this->VTKObject, this->VTKEvent, this->Callback);
     this->VTKObject->RemoveObservers(vtkCommand::DeleteEvent, this->Callback);
     this->VTKObject->RemoveObservers(vtkCommand::DeleteEvent, this->Callback);
     }
     }
-
-  this->Connected = false;
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -207,7 +212,8 @@ ctkVTKConnection::~ctkVTKConnection()
   Q_D(ctkVTKConnection);
   Q_D(ctkVTKConnection);
   if (d->ObserveDeletion)
   if (d->ObserveDeletion)
     {
     {
-    this->disconnect();
+    d->disconnectSlots();
+    d->disconnectVTKObject();
     }
     }
 }
 }
 
 
@@ -434,7 +440,8 @@ bool ctkVTKConnection::deletionObserved()const
 void ctkVTKConnection::disconnect()
 void ctkVTKConnection::disconnect()
 {
 {
   Q_D(ctkVTKConnection);
   Q_D(ctkVTKConnection);
-  d->disconnect();
+  d->disconnectSlots();
+  d->disconnectVTKObject();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -442,7 +449,8 @@ void ctkVTKConnection::vtkObjectDeleted()
 {
 {
   Q_D(ctkVTKConnection);
   Q_D(ctkVTKConnection);
   d->VTKObject = 0;
   d->VTKObject = 0;
-  d->disconnect();
+  d->disconnectSlots();
+  d->disconnectVTKObject();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -450,7 +458,8 @@ void ctkVTKConnection::qobjectDeleted()
 {
 {
   Q_D(ctkVTKConnection);
   Q_D(ctkVTKConnection);
   d->QtObject = 0;
   d->QtObject = 0;
-  d->disconnect();
+  d->disconnectSlots();
+  d->disconnectVTKObject();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------

+ 2 - 1
Libs/Visualization/VTK/Core/ctkVTKConnection_p.h

@@ -53,7 +53,8 @@ public:
   ~ctkVTKConnectionPrivate();
   ~ctkVTKConnectionPrivate();
 
 
   void connect();
   void connect();
-  void disconnect();
+  void disconnectSlots();
+  void disconnectVTKObject();
 
 
   bool IsSameQtSlot(const char* qt_slot)const;
   bool IsSameQtSlot(const char* qt_slot)const;