diff options
author | Thierry Vignaud <thierry.vignaud@gmail.com> | 2013-12-21 04:10:36 +0100 |
---|---|---|
committer | Thierry Vignaud <thierry.vignaud@gmail.com> | 2013-12-21 04:11:11 +0100 |
commit | 47a68aeb88db40da6927ce9bfb92e25c93d3719b (patch) | |
tree | 613bfa0a29e80d66fee05535f93fe6b6fffaf8ba | |
parent | b2a766fdba8f705cbb5eb23dab412fb75f87d4d8 (diff) | |
download | control-center-47a68aeb88db40da6927ce9bfb92e25c93d3719b.tar control-center-47a68aeb88db40da6927ce9bfb92e25c93d3719b.tar.gz control-center-47a68aeb88db40da6927ce9bfb92e25c93d3719b.tar.bz2 control-center-47a68aeb88db40da6927ce9bfb92e25c93d3719b.tar.xz control-center-47a68aeb88db40da6927ce9bfb92e25c93d3719b.zip |
fix segfault when WebKit creates threads for good (mga#10289)
ignore SIGCHLD until WebKit has finished creating its threads
-rw-r--r-- | NEWS | 2 | ||||
-rwxr-xr-x | control-center | 13 |
2 files changed, 13 insertions, 2 deletions
@@ -1,3 +1,5 @@ +- fix segfault when webkit creates threads for good (mga#10289) + Version 12.45 - 12 December 2013 Thierry Vignaud - further delay event for slow machines (mga#10289) diff --git a/control-center b/control-center index 642032aa..096a21a6 100755 --- a/control-center +++ b/control-center @@ -29,6 +29,7 @@ use standalone; use common; use detect_devices; use lang; +use feature 'state'; # i18n: IMPORTANT: to get correct namespace (drakconf instead of libDrakX) BEGIN { unshift @::textdomains, 'drakconf' } @@ -700,6 +701,15 @@ my @buttons; my $offset = 15; $view = gtknew('WebKit_View', no_popup_menu => 1); +$view->signal_connect('load-finished' => sub { + state $done; + return if $done; + $done = 1; + $SIG{CHLD} = \&sig_child; + Glib::Timeout->add(100, sub { sig_child('CHLD', 1); 1 }); + load_program() if $program; +}); +$view->signal_connect('web-view-ready' => sub { warn ">> web-view-ready\n"; 1}); # so that it exists when building steps: my $banner_notebook = Gtk2::Notebook->new; build_list(); @@ -1091,9 +1101,8 @@ $SIG{TERM} = \&quit_global; $window_splash->destroy; undef $window_splash; -Glib::Timeout->add(1000, sub { $SIG{CHLD} = \&sig_child; sig_child('CHLD', 1); 1 }); -if ($program) { +sub load_program() { if (my $sub = $tool_callbacks{$program}) { Glib::Timeout->add(1100, sub { $sub->(); 0 }); } else { |