From 7bda4bd9c705413598ee9b534884bc7f23704932 Mon Sep 17 00:00:00 2001 From: Thomas Jaeger Date: Thu, 20 Jun 2013 01:45:20 -0400 Subject: Reinstate signal handlers that got lost in the gtk3 transition Also, fix a segfault when handling SIGINT. --- main.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/main.cc b/main.cc index 55d0b3c..8cd9c56 100644 --- a/main.cc +++ b/main.cc @@ -161,7 +161,12 @@ void quit() { xstate->bail_out(); dead = true; win->hide(); - xstate->queue(sigc::ptr_fun(&Gtk::Main::quit)); + Glib::RefPtr app = Gio::Application::get_default(); + xstate->queue(sigc::mem_fun(*app.operator->(), &Gio::Application::quit)); +} + +void sig_int(int) { + quit(); } class App : public Gtk::Application, Base { @@ -371,6 +376,10 @@ void App::on_activate() { create_config_dir(); unsetenv("DESKTOP_AUTOSTART_ID"); + + signal(SIGINT, &sig_int); + signal(SIGCHLD, SIG_IGN); + dpy = XOpenDisplay(NULL); if (!dpy) { printf(_("Couldn't open display.\n")); -- 1.8.4