msmith - in flumotion/trunk: .
flumotion/component/producers/playlist flumotion/test
flumotion-commit at lists.fluendo.com
flumotion-commit at lists.fluendo.com
Wed Jul 4 12:29:21 CEST 2007
Author: msmith
Date: Wed Jul 4 12:29:16 2007
New Revision: 5296
Modified:
flumotion/trunk/ChangeLog
flumotion/trunk/flumotion/component/producers/playlist/playlist.py
flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py
flumotion/trunk/flumotion/test/test_component_playlist.py
Log:
* flumotion/component/producers/playlist/playlist.py:
Return item if we successfully scheduled it.
* flumotion/component/producers/playlist/playlistparser.py:
Unlink item from list if we failed to schedule it, so we don't have
stale entries that we can't clean up properly.
* flumotion/test/test_component_playlist.py:
Return item in FakeProducer as API now requires it.
Modified: flumotion/trunk/ChangeLog
==============================================================================
--- flumotion/trunk/ChangeLog (original)
+++ flumotion/trunk/ChangeLog Wed Jul 4 12:29:16 2007
@@ -1,3 +1,12 @@
+2007-07-04 Michael Smith <msmith at fluendo.com>
+ * flumotion/component/producers/playlist/playlist.py:
+ Return item if we successfully scheduled it.
+ * flumotion/component/producers/playlist/playlistparser.py:
+ Unlink item from list if we failed to schedule it, so we don't have
+ stale entries that we can't clean up properly.
+ * flumotion/test/test_component_playlist.py:
+ Return item in FakeProducer as API now requires it.
+
2007-07-04 Andy Wingo <wingo at pobox.com>
* flumotion/common/registry.py (RegistryDirectory.__init__)
Modified: flumotion/trunk/flumotion/component/producers/playlist/playlist.py
==============================================================================
--- flumotion/trunk/flumotion/component/producers/playlist/playlist.py (original)
+++ flumotion/trunk/flumotion/component/producers/playlist/playlist.py Wed Jul 4 12:29:16 2007
@@ -246,7 +246,7 @@
if start < neareststarttime:
if start + item.duration < neareststarttime:
self.debug("Item too late; skipping entirely")
- return
+ return False
else:
change = neareststarttime - start
self.debug("Starting item with offset %d", change)
@@ -276,6 +276,7 @@
self.audiocomp.add(asrc)
self._asrcs[item] = asrc
self.debug("Done scheduling")
+ return True
def unscheduleItem(self, item):
self.debug("Unscheduling item at uri %s", item.uri)
Modified: flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py
==============================================================================
--- flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py (original)
+++ flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py Wed Jul 4 12:29:16 2007
@@ -87,13 +87,7 @@
current.duration):
self.debug("Not removing current item!")
continue
- if item.prev:
- item.prev.next = item.next
- else:
- self.items = item.next
-
- if item.next:
- item.next.prev = item.prev
+ self.unlinkItem(item)
self.producer.unscheduleItem(item)
del self._itemsById[id]
@@ -181,10 +175,23 @@
self.producer.adjustItemScheduling(next)
# Then we need to actually add newitem into the gnonlin timeline
- self.producer.scheduleItem(newitem)
+ if not self.producer.scheduleItem(newitem):
+ self.debug("Failed to schedule item, unlinking")
+ # Failed to schedule it.
+ self.unlinkItem(newitem)
+ return None
return newitem
+ def unlinkItem(self, item):
+ if item.prev:
+ item.prev.next = item.next
+ else:
+ self.items = item.next
+
+ if item.next:
+ item.next.prev = item.prev
+
class PlaylistParser(object, log.Loggable):
def __init__(self, playlist):
self.playlist = playlist
Modified: flumotion/trunk/flumotion/test/test_component_playlist.py
==============================================================================
--- flumotion/trunk/flumotion/test/test_component_playlist.py (original)
+++ flumotion/trunk/flumotion/test/test_component_playlist.py Wed Jul 4 12:29:16 2007
@@ -32,7 +32,7 @@
position = -1
def scheduleItem(self, item):
- pass
+ return item
def unscheduleItem(self, item):
pass
More information about the flumotion-commit
mailing list