msmith - in flumotion/branches/platform-3: .
flumotion/component/base flumotion/component/producers/playlist
flumotion-commit at lists.fluendo.com
flumotion-commit at lists.fluendo.com
Wed Jul 4 16:48:53 CEST 2007
Author: msmith
Date: Wed Jul 4 16:48:48 2007
New Revision: 5300
Modified:
flumotion/branches/platform-3/ChangeLog
flumotion/branches/platform-3/flumotion/component/base/watcher.py
flumotion/branches/platform-3/flumotion/component/producers/playlist/playlist.py
flumotion/branches/platform-3/flumotion/component/producers/playlist/playlistparser.py
Log:
* flumotion/component/base/watcher.py:
* flumotion/component/producers/playlist/playlist.py:
* flumotion/component/producers/playlist/playlistparser.py:
Backport r5296, r5298: fixes to playlist producer unscheduling
items.
Modified: flumotion/branches/platform-3/ChangeLog
==============================================================================
--- flumotion/branches/platform-3/ChangeLog (original)
+++ flumotion/branches/platform-3/ChangeLog Wed Jul 4 16:48:48 2007
@@ -1,3 +1,11 @@
+2007-07-04 Michael Smith <msmith at fluendo.com>
+
+ * flumotion/component/base/watcher.py:
+ * flumotion/component/producers/playlist/playlist.py:
+ * flumotion/component/producers/playlist/playlistparser.py:
+ Backport r5296, r5298: fixes to playlist producer unscheduling
+ items.
+
2007-07-03 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* flumotion/admin/admin.py (AdminModel.disconnected,
Modified: flumotion/branches/platform-3/flumotion/component/base/watcher.py
==============================================================================
--- flumotion/branches/platform-3/flumotion/component/base/watcher.py (original)
+++ flumotion/branches/platform-3/flumotion/component/base/watcher.py Wed Jul 4 16:48:48 2007
@@ -160,7 +160,7 @@
stat = os.stat(f)
ret[f] = (stat.st_mtime, stat.st_size)
except OSError, e:
- self.debug('could not read file %f: %s', f,
+ self.debug('could not read file %s: %s', f,
log.getExceptionMessage(e))
return ret
Modified: flumotion/branches/platform-3/flumotion/component/producers/playlist/playlist.py
==============================================================================
--- flumotion/branches/platform-3/flumotion/component/producers/playlist/playlist.py (original)
+++ flumotion/branches/platform-3/flumotion/component/producers/playlist/playlist.py Wed Jul 4 16:48:48 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,14 +276,15 @@
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)
- if self._hasVideo and item.hasVideo:
+ if self._hasVideo and item.hasVideo and item in self._vsrcs:
vsrc = self._vsrcs.pop(item)
self.videocomp.remove(vsrc)
vsrc.set_state(gst.STATE_NULL)
- if self._hasAudio and item.hasAudio:
+ if self._hasAudio and item.hasAudio and item in self._asrcs:
asrc = self._asrcs.pop(item)
self.audiocomp.remove(asrc)
asrc.set_state(gst.STATE_NULL)
Modified: flumotion/branches/platform-3/flumotion/component/producers/playlist/playlistparser.py
==============================================================================
--- flumotion/branches/platform-3/flumotion/component/producers/playlist/playlistparser.py (original)
+++ flumotion/branches/platform-3/flumotion/component/producers/playlist/playlistparser.py Wed Jul 4 16:48:48 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
More information about the flumotion-commit
mailing list