From 028aa82983384dbce20b70dabfd9627b0a6df79e Mon Sep 17 00:00:00 2001 From: Torben Hohn Date: Sun, 29 Nov 2009 01:22:35 +0100 Subject: [PATCH] add some support for quit --- python/libjack.py | 12 ++++++++++++ python/sessionmanager.py | 24 ++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/python/libjack.py b/python/libjack.py index b5866cd..015d295 100644 --- a/python/libjack.py +++ b/python/libjack.py @@ -332,6 +332,18 @@ class JackClient(object): return retval + def session_save_and_quit( self, path ): + commands = session_notify( self.client, None, JackSessionQuit, path ) + i=0 + retval = [] + while( commands[i].uuid != "" ): + retval.append( NotifyReply( commands[i].uuid, commands[i].clientname, commands[i].command ) ) + i+=1 + + jack_free( commands ) + + return retval + def connect( self, a, b ): portA_p = port_by_name( self.client, a ) diff --git a/python/sessionmanager.py b/python/sessionmanager.py index 4559f63..f51116f 100755 --- a/python/sessionmanager.py +++ b/python/sessionmanager.py @@ -119,14 +119,20 @@ class SessionManager( object ): print "session restored..." return 0 + def quit_session( self, name ): + self.save_session( name, True ) - def save_session( self, name ): + + def save_session( self, name, quit=False ): if os.path.exists( self.sessiondir+name ): print "session %s already exists"%name return -1 os.mkdir( self.sessiondir+name ) g=self.cl.get_graph() - notify = self.cl.session_save( self.sessiondir+name+"/" ) + if quit: + notify = self.cl.session_save_and_quit( self.sessiondir+name+"/" ) + else: + notify = self.cl.session_save( self.sessiondir+name+"/" ) for n in notify: c = g.get_client( n.clientname ) @@ -170,6 +176,11 @@ if have_dbus: def save_as( self, name ): return self.sm.save_session( name ) + @dbus.service.method( dbus_interface="org.jackaudio.sessionmanager", + in_signature="s", out_signature="i" ) + def quit_as( self, name ): + return self.sm.quit_session( name ) + @dbus.service.method( dbus_interface="org.jackaudio.sessionmanager", in_signature="s", out_signature="i" ) def load( self, name ): @@ -202,8 +213,8 @@ oparser.add_option( "--list", action="store_true", dest="list", default=False, help="List Projects" ) oparser.add_option( "--quitdaemon", action="store_true", dest="quitdaemon", default=False, help="Tell SessionManager Daemon to Exit" ) -#oparser.add_option( "--quitas", action="store", dest="quitas", type="string", -# help="SaveAs And Quit" ) +oparser.add_option( "--quitas", action="store", dest="quitas", type="string", + help="SaveAs And Quit" ) oparser.add_option( "--load", action="store", dest="load", type="string", help="Load Session with " ) oparser.add_option( "--renames", action="store_true", dest="renames", default=False, @@ -218,6 +229,9 @@ if not opt.dbus: if opt.load: sm.load_session( opt.load ) + + if opt.quitas: + sm.quit_session( opt.quitas ) sm.exit() else: if opt.daemon: @@ -235,6 +249,8 @@ else: sm_iface = dbus.Interface( sm_proxy, "org.jackaudio.sessionmanager" ) if opt.saveas: sm_iface.save_as( opt.saveas ) + if opt.quitas: + sm_iface.quit_as( opt.quitas ) if opt.load: sm_iface.load( opt.load ) if opt.list: