[pitivi] undo:timeline: Disconnect from clips child-added/removed signals



commit 8bb54250d55f4589e45ce47a5a922654940aac4e
Author: Thibault Saunier <tsaunier gnome org>
Date:   Sun Nov 16 17:57:33 2014 +0100

    undo:timeline: Disconnect from clips child-added/removed signals
    
    Otherwize we can have several connection to that object which would
    lead to ugly backtrace trying to disconnect from bindings
    
    + Make TimelineLogObserver a Loggable so we can start adding debug logs
    as necessary

 pitivi/undo/timeline.py |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
---
diff --git a/pitivi/undo/timeline.py b/pitivi/undo/timeline.py
index d785cc7..722affb 100644
--- a/pitivi/undo/timeline.py
+++ b/pitivi/undo/timeline.py
@@ -23,6 +23,7 @@ from gi.repository import Gst
 from gi.repository import GES
 from gi.repository import GObject
 
+from pitivi.utils.loggable import Loggable
 from pitivi.undo.undo import PropertyChangeTracker, UndoableAction
 from pitivi.effects import PROPS_TO_IGNORE
 
@@ -487,7 +488,7 @@ class ActivePropertyChanged(UndoableAction):
         self._undone()
 
 
-class TimelineLogObserver(object):
+class TimelineLogObserver(Loggable):
     timelinePropertyChangedAction = ClipPropertyChanged
     activePropertyChangedAction = ActivePropertyChanged
 
@@ -497,6 +498,7 @@ class TimelineLogObserver(object):
         self.control_source_keyframe_trackers = {}
         self.children_props_tracker = TrackElementChildPropertyTracker(log)
         self._pipeline = None
+        Loggable.__init__(self)
 
     def setPipeline(self, pipeline):
         self._pipeline = pipeline
@@ -557,6 +559,8 @@ class TimelineLogObserver(object):
         if isinstance(clip, GES.TransitionClip):
             return
 
+        clip.disconnect_by_func(self._clipTrackElementAddedCb)
+        clip.disconnect_by_func(self._clipTrackElementRemovedCb)
         tracker = self.clip_property_trackers.pop(clip)
         tracker.disconnectFromObject(clip)
         tracker.disconnect_by_func(self._clipPropertyChangedCb)
@@ -646,6 +650,7 @@ class TimelineLogObserver(object):
             self.log.push(action)
 
     def _clipTrackElementRemovedCb(self, clip, track_element):
+        self.debug("%s REMOVED from (%s)" % (track_element, clip))
         self._disconnectFromTrackElement(track_element)
         if isinstance(track_element, GES.BaseEffect):
             action = TrackElementRemoved(clip, track_element,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]