* morituri/common/task.py:
add task argument to TaskRunner.schedule so we can get exceptions. Add .schedule method to Task to pass self. * morituri/common/checksum.py: * morituri/common/encode.py: * morituri/common/gstreamer.py: * morituri/program/cdparanoia.py: * morituri/program/cdrdao.py: Adapt.
This commit is contained in:
12
ChangeLog
12
ChangeLog
@@ -1,3 +1,15 @@
|
||||
2011-05-24 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* morituri/common/task.py:
|
||||
add task argument to TaskRunner.schedule so we can get exceptions.
|
||||
Add .schedule method to Task to pass self.
|
||||
* morituri/common/checksum.py:
|
||||
* morituri/common/encode.py:
|
||||
* morituri/common/gstreamer.py:
|
||||
* morituri/program/cdparanoia.py:
|
||||
* morituri/program/cdrdao.py:
|
||||
Adapt.
|
||||
|
||||
2011-05-24 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* morituri/test/test_common_encode.py:
|
||||
|
||||
@@ -133,7 +133,7 @@ class ChecksumTask(gstreamer.GstPipelineTask):
|
||||
def play():
|
||||
self.pipeline.set_state(gst.STATE_PLAYING)
|
||||
return False
|
||||
self.runner.schedule(0, play)
|
||||
self.schedule(0, play)
|
||||
|
||||
#self.pipeline.set_state(gst.STATE_PLAYING)
|
||||
self.debug('scheduled setting to play')
|
||||
@@ -193,13 +193,13 @@ class ChecksumTask(gstreamer.GstPipelineTask):
|
||||
framesDone = frame - self._frameStart
|
||||
progress = float(framesDone) / float((self._frameLength))
|
||||
# marshall to the main thread
|
||||
self.runner.schedule(0, self.setProgress, progress)
|
||||
self.schedule(0, self.setProgress, progress)
|
||||
|
||||
def _eos_cb(self, sink):
|
||||
# get the last one; FIXME: why does this not get to us before ?
|
||||
#self._new_buffer_cb(sink)
|
||||
self.debug('eos, scheduling stop')
|
||||
self.runner.schedule(0, self.stop)
|
||||
self.schedule(0, self.stop)
|
||||
|
||||
class CRC32Task(ChecksumTask):
|
||||
"""
|
||||
@@ -311,7 +311,7 @@ class TRMTask(gstreamer.GstPipelineTask):
|
||||
# in the case of checksum
|
||||
def bus_eos_cb(self, bus, message):
|
||||
gst.debug('eos, scheduling stop')
|
||||
self.runner.schedule(0, self.stop)
|
||||
self.schedule(0, self.stop)
|
||||
|
||||
|
||||
def bus_tag_cb(self, bus, message):
|
||||
|
||||
@@ -217,7 +217,7 @@ class EncodeTask(gstreamer.GstPipelineTask):
|
||||
# update progress based on buffer offset (expected to be in samples)
|
||||
# versus length in samples
|
||||
# marshal to main thread
|
||||
self.runner.schedule(0, self.setProgress,
|
||||
self.schedule(0, self.setProgress,
|
||||
float(buffer.offset) / self._length)
|
||||
|
||||
# don't drop the buffer
|
||||
@@ -225,7 +225,7 @@ class EncodeTask(gstreamer.GstPipelineTask):
|
||||
|
||||
def bus_eos_cb(self, bus, message):
|
||||
self.debug('eos, scheduling stop')
|
||||
self.runner.schedule(0, self.stop)
|
||||
self.schedule(0, self.stop)
|
||||
|
||||
def _message_element_cb(self, bus, message):
|
||||
if message.src != self._level:
|
||||
@@ -281,7 +281,7 @@ class TagReadTask(gstreamer.GstPipelineTask):
|
||||
|
||||
def bus_eos_cb(self, bus, message):
|
||||
self.debug('eos, scheduling stop')
|
||||
self.runner.schedule(0, self.stop)
|
||||
self.schedule(0, self.stop)
|
||||
|
||||
def bus_tag_cb(self, bus, message):
|
||||
taglist = message.parse_tag()
|
||||
@@ -344,14 +344,14 @@ class TagWriteTask(task.Task):
|
||||
def play():
|
||||
self._pipeline.set_state(gst.STATE_PLAYING)
|
||||
return False
|
||||
self.runner.schedule(0, play)
|
||||
self.schedule(0, play)
|
||||
|
||||
#self._pipeline.set_state(gst.STATE_PLAYING)
|
||||
self.debug('scheduled setting to play')
|
||||
|
||||
def _message_eos_cb(self, bus, message):
|
||||
self.debug('eos, scheduling stop')
|
||||
self.runner.schedule(0, self.stop)
|
||||
self.schedule(0, self.stop)
|
||||
|
||||
def stop(self):
|
||||
# here to avoid import gst eating our options
|
||||
|
||||
@@ -106,7 +106,7 @@ class GstPipelineTask(task.Task):
|
||||
|
||||
if self.playing:
|
||||
self.debug('scheduling setting pipeline to PLAYING')
|
||||
self.runner.schedule(0, playLater)
|
||||
self.schedule(0, playLater)
|
||||
|
||||
def stop(self):
|
||||
self.debug('stopping')
|
||||
@@ -169,4 +169,4 @@ class GstPipelineTask(task.Task):
|
||||
exc = GstException(*message.parse_error())
|
||||
self.setAndRaiseException(exc)
|
||||
self.debug('error, scheduling stop')
|
||||
self.runner.schedule(0, self.stop)
|
||||
self.schedule(0, self.stop)
|
||||
|
||||
@@ -155,6 +155,10 @@ class Task(object, log.Loggable):
|
||||
self.debug('set exception, %r, %r' % (
|
||||
exception, self.exceptionMessage))
|
||||
|
||||
def schedule(self, delta, callable, *args, **kwargs):
|
||||
self.runner.schedule(self, delta, callable, *args, **kwargs)
|
||||
|
||||
|
||||
def addListener(self, listener):
|
||||
"""
|
||||
Add a listener for task status changes.
|
||||
@@ -210,7 +214,7 @@ class ITaskListener(object):
|
||||
class DummyTask(Task):
|
||||
def start(self, runner):
|
||||
Task.start(self, runner)
|
||||
self.runner.schedule(1.0, self._wind)
|
||||
self.schedule(1.0, self._wind)
|
||||
|
||||
def _wind(self):
|
||||
self.setProgress(min(self.progress + 0.1, 1.0))
|
||||
@@ -219,7 +223,7 @@ class DummyTask(Task):
|
||||
self.stop()
|
||||
return
|
||||
|
||||
self.runner.schedule(1.0, self._wind)
|
||||
self.schedule(1.0, self._wind)
|
||||
|
||||
class BaseMultiTask(Task, ITaskListener):
|
||||
"""
|
||||
@@ -433,10 +437,16 @@ class SyncRunner(TaskRunner, ITaskListener):
|
||||
self.stopped(task)
|
||||
|
||||
|
||||
def schedule(self, delta, callable, *args, **kwargs):
|
||||
def schedule(self, task, delta, callable, *args, **kwargs):
|
||||
def c():
|
||||
callable(*args, **kwargs)
|
||||
return False
|
||||
try:
|
||||
callable(*args, **kwargs)
|
||||
return False
|
||||
except Exception, e:
|
||||
self.debug('exception when calling scheduled callable %r',
|
||||
callable)
|
||||
task.setException(e)
|
||||
raise
|
||||
gobject.timeout_add(int(delta * 1000L), c)
|
||||
|
||||
### ITaskListener methods
|
||||
|
||||
@@ -274,7 +274,7 @@ class ReadTrackTask(task.Task):
|
||||
|
||||
raise
|
||||
|
||||
self.runner.schedule(1.0, self._read, runner)
|
||||
self.schedule(1.0, self._read, runner)
|
||||
|
||||
def _read(self, runner):
|
||||
ret = self._popen.recv_err()
|
||||
@@ -282,7 +282,7 @@ class ReadTrackTask(task.Task):
|
||||
if self._popen.poll() is not None:
|
||||
self._done()
|
||||
return
|
||||
self.runner.schedule(0.01, self._read, runner)
|
||||
self.schedule(0.01, self._read, runner)
|
||||
return
|
||||
|
||||
self._buffer += ret
|
||||
@@ -315,11 +315,11 @@ class ReadTrackTask(task.Task):
|
||||
|
||||
# 0 does not give us output before we complete, 1.0 gives us output
|
||||
# too late
|
||||
self.runner.schedule(0.01, self._read, runner)
|
||||
self.schedule(0.01, self._read, runner)
|
||||
|
||||
def _poll(self, runner):
|
||||
if self._popen.poll() is None:
|
||||
self.runner.schedule(1.0, self._poll, runner)
|
||||
self.schedule(1.0, self._poll, runner)
|
||||
return
|
||||
|
||||
self._done()
|
||||
|
||||
@@ -270,7 +270,7 @@ class CDRDAOTask(task.Task):
|
||||
self._popen.pid, self.options)
|
||||
self.debug('command: cdrdao %s', ' '.join(self.options))
|
||||
|
||||
self.runner.schedule(1.0, self._read, runner)
|
||||
self.schedule(1.0, self._read, runner)
|
||||
|
||||
def _read(self, runner):
|
||||
try:
|
||||
@@ -288,7 +288,7 @@ class CDRDAOTask(task.Task):
|
||||
|
||||
if self._popen.poll() is None and self.runner:
|
||||
# not finished yet
|
||||
self.runner.schedule(1.0, self._read, runner)
|
||||
self.schedule(1.0, self._read, runner)
|
||||
return
|
||||
|
||||
self._done()
|
||||
|
||||
Reference in New Issue
Block a user