static void on_logout_clicked (GtkWidget *button, CsmFailWhaleDialog *fail_dialog) { if (fail_dialog->priv->debug_mode) { gtk_main_quit (); } else { csm_manager_logout (csm_manager_get (), CSM_MANAGER_LOGOUT_MODE_FORCE, NULL); gtk_widget_destroy (GTK_WIDGET (fail_dialog)); } }
static gboolean signal_cb (int signo, gpointer data) { int ret; CsmManager *manager; g_debug ("Got callback for signal %d", signo); ret = TRUE; switch (signo) { case SIGFPE: case SIGPIPE: /* let the fatal signals interrupt us */ g_debug ("Caught signal %d, shutting down abnormally.", signo); ret = FALSE; break; case SIGINT: case SIGTERM: manager = (CsmManager *)data; csm_manager_logout (manager, CSM_MANAGER_LOGOUT_MODE_FORCE, NULL); /* let the fatal signals interrupt us */ g_debug ("Caught signal %d, shutting down normally.", signo); ret = TRUE; break; case SIGHUP: g_debug ("Got HUP signal"); ret = TRUE; break; case SIGUSR1: g_debug ("Got USR1 signal"); ret = TRUE; mdm_log_toggle_debug (); break; default: g_debug ("Caught unhandled signal %d", signo); ret = TRUE; break; } return ret; }