[pitivi: 1/7] mixer: Consider transitions when aggregating alpha state



commit 77b5bc47644ad60eab5938787631cef2c9f3cfdd
Author: Robert Swain <robert swain collabora co uk>
Date:   Thu Aug 19 10:11:40 2010 +0200

    mixer: Consider transitions when aggregating alpha state

 pitivi/elements/mixer.py |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/pitivi/elements/mixer.py b/pitivi/elements/mixer.py
index 027e7d8..f03cdc3 100644
--- a/pitivi/elements/mixer.py
+++ b/pitivi/elements/mixer.py
@@ -209,6 +209,8 @@ class SmartVideomixerBinPropertyHelper(Signallable):
         # connect track-object-{added,removed} signals from track to callbacks
         track.connect("track-object-added", self._trackAddedCb)
         track.connect("track-object-removed", self._trackRemovedCb)
+        track.connect("transition-added", self._transitionAddedCb)
+        track.connect("transition-removed", self._transitionRemovedCb)
         # configure initial alpha state
         self.alphaStateChanged(False)
 
@@ -266,6 +268,17 @@ class SmartVideomixerBinPropertyHelper(Signallable):
         elif old_alpha_count > 0 and self.alpha_count == 0:
             self.alphaStateChanged(False)
 
+    def _transitionAddedCb(self, track, transition):
+        # FIXME - this assumes transitions need alpha, change it if they don't
+        if self.alpha_count == 0:
+            self.alphaStateChanged(True)
+        self.alpha_count += 1
+
+    def _transitionRemovedCb(self, track, transition):
+        self.alpha_count -= 1
+        if self.alpha_count == 0:
+            self.alphaStateChanged(False)
+
     def alphaStateChanged(self, has_alpha):
         """Updates capsfilter caps to reflect the alpha state of composition"""
         caps = gst.Caps('video/x-raw-yuv')



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