[SCM] morituri/master: * 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.
js at users.alioth.debian.org
js at users.alioth.debian.org
Sun Oct 19 20:09:27 UTC 2014
The following commit has been merged in the master branch:
commit 8bc5eff73c06649d984f3190d134728db4f1c4d0
Author: Thomas Vander Stichele <thomas (at) apestaart (dot) org>
Date: Tue May 24 12:51:40 2011 +0000
* 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.
diff --git a/ChangeLog b/ChangeLog
index 5bb9ec6..98ecad6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
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:
Write a non-sine wave so we have an actual flac file that will
typefind.
diff --git a/morituri/common/checksum.py b/morituri/common/checksum.py
index e28e732..5e6e4b1 100644
--- a/morituri/common/checksum.py
+++ b/morituri/common/checksum.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):
diff --git a/morituri/common/encode.py b/morituri/common/encode.py
index a069f9a..e5edbb3 100644
--- a/morituri/common/encode.py
+++ b/morituri/common/encode.py
@@ -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
diff --git a/morituri/common/gstreamer.py b/morituri/common/gstreamer.py
index 802c6f4..34d9d64 100644
--- a/morituri/common/gstreamer.py
+++ b/morituri/common/gstreamer.py
@@ -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)
diff --git a/morituri/common/task.py b/morituri/common/task.py
index ec71be4..8dd68d8 100644
--- a/morituri/common/task.py
+++ b/morituri/common/task.py
@@ -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
diff --git a/morituri/program/cdparanoia.py b/morituri/program/cdparanoia.py
index 4c3bd1f..1bf560c 100644
--- a/morituri/program/cdparanoia.py
+++ b/morituri/program/cdparanoia.py
@@ -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()
diff --git a/morituri/program/cdrdao.py b/morituri/program/cdrdao.py
index 671832f..6a8d9c8 100644
--- a/morituri/program/cdrdao.py
+++ b/morituri/program/cdrdao.py
@@ -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()
--
morituri packaging
More information about the pkg-multimedia-commits
mailing list