]> git.0d.be Git - jack_mixer.git/commitdiff
ladish level 1 support
authorNedko Arnaudov <nedko@arnaudov.name>
Tue, 29 Dec 2009 11:36:45 +0000 (13:36 +0200)
committerNedko Arnaudov <nedko@arnaudov.name>
Tue, 29 Dec 2009 11:36:45 +0000 (13:36 +0200)
jack_mixer.py

index 2cf59640db54b29bb89f68d1ea7624ca77f1f307..9dec1587f476548ef8ec2209f1fab19cee86290e 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# -*- coding: UTF-8 -*-
+# -*- coding: utf-8 -*-
 #
 # This file is part of jack_mixer
 #
@@ -25,6 +25,7 @@ import gtk
 import gobject
 import sys
 import os
+import signal
 
 try:
     import lash
@@ -67,6 +68,8 @@ class JackMixer(SerializedObject):
             return
         self.monitor_channel = self.mixer.add_output_channel("Monitor", True, True)
 
+        self.save = False
+
         if lash_client:
             # Send our client name to server
             lash_event = lash.lash_event_new_with_type(lash.LASH_Client_Name)
@@ -186,8 +189,18 @@ class JackMixer(SerializedObject):
         gobject.timeout_add(80, self.read_meters)
         self.lash_client = lash_client
 
-        if lash_client:
-            gobject.timeout_add(1000, self.lash_check_events)
+        gobject.timeout_add(200, self.lash_check_events)
+
+    def sighandler(self, signum, frame):
+        print "Signal %d received" % signum
+        if signum == signal.SIGUSR1:
+            self.save = True
+        elif signum == signal.SIGTERM:
+            gtk.main_quit()
+        elif signum == signal.SIGINT:
+            gtk.main_quit()
+        else:
+            print "Unknown signal %d received" % signum
 
     def cleanup(self):
         print "Cleaning jack_mixer"
@@ -473,6 +486,16 @@ Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA''')
         about.destroy()
 
     def lash_check_events(self):
+        if self.current_filename and self.save:
+            print "saving on SIGUSR1 request"
+            self.on_save_cb()
+            print "save done"
+            self.save = False
+            return True
+
+        if not self.lash_client:
+            return True
+
         while lash.lash_get_pending_event_count(self.lash_client):
             event = lash.lash_get_event(self.lash_client)
 
@@ -578,6 +601,10 @@ Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA''')
 
         self.window.show_all()
 
+        signal.signal(signal.SIGUSR1, self.sighandler)
+        signal.signal(signal.SIGTERM, self.sighandler)
+        signal.signal(signal.SIGINT, self.sighandler)
+
         gtk.main()
 
         #f = file("/dev/stdout", "w")