Author: dmeyer
Date: Tue Feb 13 20:32:03 2007
New Revision: 2486
Modified:
trunk/base/src/notifier/popen.py
trunk/beacon/src/server/videothumb.py
trunk/popcorn/src/backends/gstreamer/player.py
trunk/popcorn/src/backends/mplayer/ipc.py
trunk/popcorn/src/backends/mplayer/player.py
trunk/popcorn/src/backends/xine/player.py
trunk/popcorn/src/utils/ipc.py
Log:
Remove the "completed" signal from Process and return an InProgress
object instead on start(). Since an InProgress object is a Signal
the only difference for current code is that you can only register
after start and need to reregister on each start. There is no problem
with short running processes, the signal won't be called before the
next main loop iteration, enough time to register.
The good think about this is that you can use this InProgress object
in async functions using yield_execution. It also makes the interface
look similar to code already using InProgress.
As a next step I will use InProgress for Threads. Since InProgress
objects contain a second Signal for exceptions, this would make the
interface simpler.
Modified: trunk/base/src/notifier/popen.py
==============================================================================
--- trunk/base/src/notifier/popen.py (original)
+++ trunk/base/src/notifier/popen.py Tue Feb 13 20:32:03 2007
@@ -58,6 +58,7 @@
import nf_wrapper as notifier
from callback import Signal, Callback
from thread import MainThreadCallback, is_mainthread
+from async import InProgress
# get logging object
log = logging.getLogger('notifier')
@@ -79,7 +80,6 @@
self.signals = {
"stderr": Signal(),
"stdout": Signal(),
- "completed": Signal(),
}
self._cmd = self._normalize_cmd(cmd)
@@ -89,6 +89,7 @@
self.stopping = False
self.__kill_timer = None
self.child = None
+ self.in_progress = None
def _normalize_cmd(self, cmd):
@@ -163,6 +164,8 @@
MainThreadCallback(_watcher.append, self, self.__child_died )
else:
_watcher.append( self, self.__child_died )
+ self.in_progress = InProgress()
+ return self.in_progress
def write( self, line ):
@@ -311,7 +314,8 @@
self.child = None
if self.__kill_timer:
notifier.timer_remove( self.__kill_timer )
- self.signals["completed"].emit(status >> 8)
+ self.in_progress.finished(status >> 8)
+ self.in_progress = None
Modified: trunk/beacon/src/server/videothumb.py
==============================================================================
--- trunk/beacon/src/server/videothumb.py (original)
+++ trunk/beacon/src/server/videothumb.py Tue Feb 13 20:32:03 2007
@@ -68,7 +68,6 @@
self.child = kaa.notifier.Process(['mplayer', '-nosound', '-vo',
'png:z=2',
'-frames', '10', '-osdlevel', '0',
'-nocache',
'-zoom', '-ss' ])
- self.child.signals['completed'].connect(self._completed)
self.child.signals['stdout'].connect(self._handle_std)
self.child.signals['stderr'].connect(self._handle_std)
@@ -119,7 +118,7 @@
pos = str(int(pos))
self._child_std = []
- self.child.start([pos, self._current.filename])
+ self.child.start([pos,
self._current.filename]).connect(self._completed)
def _completed(self, code):
Modified: trunk/popcorn/src/backends/gstreamer/player.py
==============================================================================
--- trunk/popcorn/src/backends/gstreamer/player.py (original)
+++ trunk/popcorn/src/backends/gstreamer/player.py Tue Feb 13 20:32:03 2007
@@ -64,9 +64,8 @@
if not self._gst:
script = os.path.join(os.path.dirname(__file__), 'main.py')
self._gst = ChildProcess(self, script)
- self._gst.signals["completed"].connect_weak(self._child_exited)
self._gst.set_stop_command(WeakCallback(self._gst.die))
- self._gst.start()
+ self._gst.start().connect_weak(self._child_exited)
self._position = 0.0
self._state = STATE_OPENING
self._gst.open(self._mrl)
Modified: trunk/popcorn/src/backends/mplayer/ipc.py
==============================================================================
--- trunk/popcorn/src/backends/mplayer/ipc.py (original)
+++ trunk/popcorn/src/backends/mplayer/ipc.py Tue Feb 13 20:32:03 2007
@@ -113,12 +113,12 @@
log.info("spawn: %s %s", self._mp_cmd, ' '.join(args))
if USE_GDB:
- self._child.start(self._command)
+ signal = self._child.start(self._command)
self._child.write("run %s\n" % ' '.join(args))
self._child.signals["stdout"].connect_weak(self._child_handle_line)
self._child.signals["stderr"].connect_weak(self._child_handle_line)
- else:
- self._child.start(args)
+ return signal
+ return self._child.start(args)
def _child_stop(self):
Modified: trunk/popcorn/src/backends/mplayer/player.py
==============================================================================
--- trunk/popcorn/src/backends/mplayer/player.py (original)
+++ trunk/popcorn/src/backends/mplayer/player.py Tue Feb 13 20:32:03 2007
@@ -341,10 +341,10 @@
# work that way so we have to run mplayer with -identify first.
args = "-nolirc -nojoystick -identify -vo null -ao null -frames 0
-nocache"
ident = kaa.notifier.Process(self._mp_cmd)
- ident.start(args.split(' ') + self._media.mplayer_args)
+ signal = ident.start(args.split(' ') + self._media.mplayer_args)
+ signal.connect_weak(self._ident_exited)
ident.signals["stdout"].connect_weak(self._child_handle_line)
ident.signals["stderr"].connect_weak(self._child_handle_line)
- ident.signals["completed"].connect_weak(self._ident_exited)
def _ident_exited(self, code):
@@ -541,10 +541,9 @@
# connect to signals
self._mplayer.signals["stdout"].connect_weak(self._child_handle_line)
self._mplayer.signals["stderr"].connect_weak(self._child_handle_line)
- self._mplayer.signals["completed"].connect_weak(self._child_exited)
# start playback
- self._mplayer.start(self._media)
+ self._mplayer.start(self._media).connect_weak(self._child_exited)
def stop(self):
Modified: trunk/popcorn/src/backends/xine/player.py
==============================================================================
--- trunk/popcorn/src/backends/xine/player.py (original)
+++ trunk/popcorn/src/backends/xine/player.py Tue Feb 13 20:32:03 2007
@@ -70,9 +70,9 @@
# Launch self (-u is unbuffered stdout)
script = os.path.join(os.path.dirname(__file__), 'main.py')
self._xine = ChildProcess(self, script)
- self._xine.signals["completed"].connect_weak(self._child_exited)
self._xine.set_stop_command(kaa.notifier.WeakCallback(self._xine.die))
- self._xine.start(str(self._osd_shmkey), str(self._frame_shmkey))
+ signal = self._xine.start(str(self._osd_shmkey),
str(self._frame_shmkey))
+ signal.connect_weak(self._child_exited)
self._xine_configured = False
Modified: trunk/popcorn/src/utils/ipc.py
==============================================================================
--- trunk/popcorn/src/utils/ipc.py (original)
+++ trunk/popcorn/src/utils/ipc.py Tue Feb 13 20:32:03 2007
@@ -87,8 +87,9 @@
"""
if not self._gdb:
return self._child.start(args)
- self._child.start(sys.executable)
+ signal = self._child.start(sys.executable)
self._child.write("run -u %s %s\n" % (self._gdb, ' '.join(args)))
+ return signal
def _handle_line(self, line):
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog