bitbake: HOB:Proper handle of SIGINT

Modal dialogs doesn't run on the main loop so they cannot
catch any signal from the terminal. This patch makes sure
the dialogs are destroyed when a SIGINT is sent to HOB.

[YOCTO #3329]

(Bitbake rev: 6eee0cc37438cc3f91531b7df524330fba27161b)

Signed-off-by: Valentin Popa <valentin.popa@intel.com>
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Valentin Popa 2013-07-03 11:31:44 +00:00 committed by Richard Purdie
parent 1defbaf8b7
commit dc86293f04
1 changed files with 9 additions and 0 deletions

View File

@ -30,6 +30,7 @@ import shlex
import re import re
import logging import logging
import sys import sys
import signal
from bb.ui.crumbs.imageconfigurationpage import ImageConfigurationPage from bb.ui.crumbs.imageconfigurationpage import ImageConfigurationPage
from bb.ui.crumbs.recipeselectionpage import RecipeSelectionPage from bb.ui.crumbs.recipeselectionpage import RecipeSelectionPage
from bb.ui.crumbs.packageselectionpage import PackageSelectionPage from bb.ui.crumbs.packageselectionpage import PackageSelectionPage
@ -441,6 +442,8 @@ class Builder(gtk.Window):
self.initiate_new_build_async() self.initiate_new_build_async()
signal.signal(signal.SIGINT, self.event_handle_SIGINT)
def create_visual_elements(self): def create_visual_elements(self):
self.set_title("Hob") self.set_title("Hob")
self.set_icon_name("applications-development") self.set_icon_name("applications-development")
@ -1075,6 +1078,12 @@ class Builder(gtk.Window):
else: else:
gtk.main_quit() gtk.main_quit()
def event_handle_SIGINT(self, signal, frame):
for w in gtk.window_list_toplevels():
if w.get_modal():
w.response(gtk.RESPONSE_DELETE_EVENT)
sys.exit(0)
def build_packages(self): def build_packages(self):
_, all_recipes = self.recipe_model.get_selected_recipes() _, all_recipes = self.recipe_model.get_selected_recipes()
if not all_recipes: if not all_recipes: