* gstreamer.py:

* task.py:
	  Don't rely on the log module; users that want to log
	  should first subclass from a log class that implements
	  warning/info/debug/log
This commit is contained in:
Thomas Vander Stichele
2011-08-05 20:21:31 +00:00
parent 8af605c2c0
commit b5e1e8da7d
3 changed files with 34 additions and 1 deletions

View File

@@ -1,3 +1,11 @@
2011-08-05 Thomas Vander Stichele <thomas at apestaart dot org>
* gstreamer.py:
* task.py:
Don't rely on the log module; users that want to log
should first subclass from a log class that implements
warning/info/debug/log
2011-08-05 Thomas Vander Stichele <thomas at apestaart dot org>
* gstreamer.py:

View File

@@ -126,6 +126,17 @@ class GstPipelineTask(task.Task):
def stop(self):
self.debug('stopping')
# FIXME: in theory this should help clean up properly,
# but in practice we can still get
# python: /builddir/build/BUILD/Python-2.7/Python/pystate.c:595: PyGILState_Ensure: Assertion `autoInterpreterState' failed.
self.pipeline.set_state(self.gst.STATE_READY)
self.debug('set pipeline to READY')
# FIXME: this can block
ret = self.pipeline.get_state()
self.debug('got pipeline to READY: %r', ret)
self.debug('setting state to NULL')
self.pipeline.set_state(self.gst.STATE_NULL)
self.debug('set state to NULL')

View File

@@ -38,7 +38,7 @@ class TaskException(Exception):
self.exceptionMessage = message
self.args = (exception, message, )
class Task(object, log.Loggable):
class Task(object):
"""
I wrap a task in an asynchronous interface.
I can be listened to for starting, stopping, description changes
@@ -67,6 +67,19 @@ class Task(object, log.Loggable):
_listeners = None
### log stubs
def warning(self, message, *args):
pass
def info(self, message, *args):
pass
def debug(self, message, *args):
pass
def log(self, message, *args):
pass
### subclass methods
def start(self, runner):
"""
@@ -90,6 +103,7 @@ class Task(object, log.Loggable):
def stop(self):
"""
Stop the task.
Also resets the runner on the task.
Subclasses should chain up to me at the end.