@@ -0,0 +1,16 @@ | |||||
#!/usr/bin/env python | |||||
from distutils.core import setup | |||||
setup(name='pyjacksm', | |||||
version='0.1', | |||||
description='jack session manager', | |||||
author='Torben Hohn', | |||||
author_email='torbenh@gmx.de', | |||||
url='http://www.jackaudio.org/', | |||||
packages=['pyjacksm'], | |||||
package_dir={'pyjacksm': 'src/pyjacksm'}, | |||||
scripts=['src/sessionmanager.py'], | |||||
data_files=[('/usr/share/dbus-1/services', ['data/org.jackaudio.sessionmanager.service'])] | |||||
) | |||||
@@ -0,0 +1,2 @@ | |||||
__all__ = ['libjack', 'state'] |
@@ -49,10 +49,6 @@ jack_free = libjack.jack_free | |||||
jack_free.argtypes = [ c_void_p ] | jack_free.argtypes = [ c_void_p ] | ||||
jack_free.restype = None | jack_free.restype = None | ||||
rename_client = libjack.jack_rename_client | |||||
rename_client.argtypes = [ client_p, c_char_p, c_char_p ] | |||||
rename_client.restype = c_int | |||||
reserve_client_name = libjack.jack_reserve_client_name | reserve_client_name = libjack.jack_reserve_client_name | ||||
reserve_client_name.argtypes = [ client_p, c_char_p, c_char_p ] | reserve_client_name.argtypes = [ client_p, c_char_p, c_char_p ] | ||||
reserve_client_name.restype = c_int | reserve_client_name.restype = c_int |
@@ -8,8 +8,13 @@ class SessionDom( object ): | |||||
def __init__( self, filename=None ): | def __init__( self, filename=None ): | ||||
if filename: | if filename: | ||||
self.dom = parse( filename ) | self.dom = parse( filename ) | ||||
doc = self.dom.documentElement | |||||
for c in doc.getElementsByTagName( "jackclient" ): | |||||
c.orig_name = c.getAttribute( "jackname" ) | |||||
else: | else: | ||||
self.dom = impl.createDocument(None,"jacksession",None) | self.dom = impl.createDocument(None,"jacksession",None) | ||||
def add_client( self, client ): | def add_client( self, client ): | ||||
cl_elem = Element( "jackclient" ) | cl_elem = Element( "jackclient" ) | ||||
@@ -81,11 +86,14 @@ class SessionDom( object ): | |||||
retval.append( i.getAttribute( "dst" ) ) | retval.append( i.getAttribute( "dst" ) ) | ||||
return retval | return retval | ||||
def get_commandline_for_client( self, name ): | |||||
def get_commandline_for_client( self, name, session_dir ): | |||||
doc = self.dom.documentElement | doc = self.dom.documentElement | ||||
for c in doc.getElementsByTagName( "jackclient" ): | for c in doc.getElementsByTagName( "jackclient" ): | ||||
if c.getAttribute( "jackname" ) == name: | if c.getAttribute( "jackname" ) == name: | ||||
return c.getAttribute( "cmdline" ) | |||||
client_session_dir = session_dir + c.orig_name | |||||
cmdline = c.getAttribute( "cmdline" ) | |||||
return cmdline.replace( "${SESSION_DIR}", client_session_dir ) | |||||
def get_uuid_client_pairs( self ): | def get_uuid_client_pairs( self ): | ||||
retval = [] | retval = [] |
@@ -1,7 +1,7 @@ | |||||
#!/usr/bin/env python | #!/usr/bin/env python | ||||
import libjack | |||||
import state | |||||
from pyjacksm import libjack | |||||
from pyjacksm import state | |||||
import subprocess | import subprocess | ||||
from optparse import OptionParser | from optparse import OptionParser | ||||
from ConfigParser import SafeConfigParser | from ConfigParser import SafeConfigParser | ||||
@@ -82,7 +82,7 @@ class SessionManager( object ): | |||||
# now fire up the processes | # now fire up the processes | ||||
for cname in sd.get_reg_client_names(): | for cname in sd.get_reg_client_names(): | ||||
cmd = sd.get_commandline_for_client( cname ) | |||||
cmd = sd.get_commandline_for_client( cname, self.sessiondir + name + "/" ) | |||||
children.append( subprocess.Popen( cmd, shell=True ) ) | children.append( subprocess.Popen( cmd, shell=True ) ) | ||||
avail_ports = g.get_port_list() | avail_ports = g.get_port_list() |