[pitivi] SingleDecodeBin: Don't deactivate elements from a streaming thread.
- From: Edward Hervey <edwardrv src gnome org>
- To: svn-commits-list gnome org
- Subject: [pitivi] SingleDecodeBin: Don't deactivate elements from a streaming thread.
- Date: Mon, 29 Jun 2009 10:32:17 +0000 (UTC)
commit b2d718953406df370829ed6e2abd2d80d8de04a4
Author: Edward Hervey <bilboed bilboed com>
Date: Sat Jun 27 13:46:05 2009 +0200
SingleDecodeBin: Don't deactivate elements from a streaming thread.
This cause many issues like elements being unreffed before they were set
to gst.STATE_NULL.
Funnily enough... it also seems to make loading the timeline faster.
pitivi/elements/singledecodebin.py | 15 ++++++++-------
1 files changed, 8 insertions(+), 7 deletions(-)
---
diff --git a/pitivi/elements/singledecodebin.py b/pitivi/elements/singledecodebin.py
index 5d80346..c93f6e2 100644
--- a/pitivi/elements/singledecodebin.py
+++ b/pitivi/elements/singledecodebin.py
@@ -282,7 +282,7 @@ class SingleDecodeBin(gst.Bin):
if self._srcpad:
return
self._markValidElements(element)
- self._removeUnusedElements(self.typefind)
+ gobject.idle_add(self._removeUnusedElements, self.typefind)
self.log("ghosting pad %s" % pad.get_name())
self._srcpad = gst.GhostPad("src", pad)
self._srcpad.set_active(True)
@@ -310,12 +310,13 @@ class SingleDecodeBin(gst.Bin):
for pad in element.src_pads():
if pad.is_linked():
peer = pad.get_peer().get_parent()
- self._removeUnusedElements(peer)
- if not peer in self._validelements:
- self.log("removing %s" % peer.get_name())
- pad.unlink(pad.get_peer())
- peer.set_state(gst.STATE_NULL)
- self.remove(peer)
+ if isinstance(peer, gst.Element):
+ self._removeUnusedElements(peer)
+ if not peer in self._validelements:
+ self.log("removing %s" % peer.get_name())
+ pad.unlink(pad.get_peer())
+ peer.set_state(gst.STATE_NULL)
+ self.remove(peer)
def _cleanUp(self):
self.log("")
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]