Reap only activity processes. Fix #5044
This commit is contained in:
		
							parent
							
								
									6e1065454d
								
							
						
					
					
						commit
						6046c8ed46
					
				@ -19,7 +19,6 @@ import sys
 | 
			
		||||
import os
 | 
			
		||||
from ConfigParser import ConfigParser
 | 
			
		||||
import gettext
 | 
			
		||||
import signal
 | 
			
		||||
 | 
			
		||||
import pygtk
 | 
			
		||||
pygtk.require('2.0')
 | 
			
		||||
@ -86,12 +85,6 @@ def _shell_started_cb():
 | 
			
		||||
    hw_manager = hardwaremanager.get_manager()
 | 
			
		||||
    hw_manager.set_dcon_freeze(0)
 | 
			
		||||
 | 
			
		||||
def _sigchild_handler(signum, frame):
 | 
			
		||||
    try:
 | 
			
		||||
        os.wait()
 | 
			
		||||
    except OSError:
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    gobject.idle_add(_shell_started_cb)
 | 
			
		||||
 | 
			
		||||
@ -111,8 +104,6 @@ def main():
 | 
			
		||||
        win.show_all()
 | 
			
		||||
        gtk.main()
 | 
			
		||||
 | 
			
		||||
    signal.signal(signal.SIGCHLD, _sigchild_handler)
 | 
			
		||||
 | 
			
		||||
    if os.environ.has_key("SUGAR_TP_DEBUG"):
 | 
			
		||||
        # Allow the user time to start up telepathy connection managers
 | 
			
		||||
        # using the Sugar DBus bus address
 | 
			
		||||
 | 
			
		||||
@ -18,6 +18,7 @@
 | 
			
		||||
 | 
			
		||||
import logging
 | 
			
		||||
import subprocess
 | 
			
		||||
import signal
 | 
			
		||||
 | 
			
		||||
import dbus
 | 
			
		||||
import gobject
 | 
			
		||||
@ -53,6 +54,16 @@ _RAINBOW_SERVICE_NAME = "org.laptop.security.Rainbow"
 | 
			
		||||
_RAINBOW_ACTIVITY_FACTORY_PATH = "/"
 | 
			
		||||
_RAINBOW_ACTIVITY_FACTORY_INTERFACE = "org.laptop.security.Rainbow"
 | 
			
		||||
 | 
			
		||||
_children_pid = []
 | 
			
		||||
 | 
			
		||||
def _sigchild_handler(signum, frame):
 | 
			
		||||
    for child_pid in _children_pid:
 | 
			
		||||
        pid, status = os.waitpid(child_pid, os.WNOHANG)
 | 
			
		||||
        if pid > 0:
 | 
			
		||||
            _children_pid.remove(pid)
 | 
			
		||||
 | 
			
		||||
signal.signal(signal.SIGCHLD, _sigchild_handler)
 | 
			
		||||
 | 
			
		||||
def create_activity_id():
 | 
			
		||||
    """Generate a new, unique ID for this activity"""
 | 
			
		||||
    pservice = presenceservice.get_instance()
 | 
			
		||||
@ -224,8 +235,9 @@ class ActivityCreationHandler(gobject.GObject):
 | 
			
		||||
                                  self._handle.uri)
 | 
			
		||||
 | 
			
		||||
            if not self._use_rainbow:
 | 
			
		||||
                process = subprocess.Popen(command, env=environ, cwd=activity.path,
 | 
			
		||||
                                           stdout=log_file, stderr=log_file)
 | 
			
		||||
                p = subprocess.Popen(command, env=environ, cwd=activity.path,
 | 
			
		||||
                                     stdout=log_file, stderr=log_file)
 | 
			
		||||
                _children_pid.append(p.pid)
 | 
			
		||||
            else:
 | 
			
		||||
                log_file.close()
 | 
			
		||||
                system_bus = dbus.SystemBus()
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user