[mutter] context: Initialize signal handlers during setup
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] context: Initialize signal handlers during setup
- Date: Thu, 15 Jul 2021 12:40:52 +0000 (UTC)
commit 6f4b9733295fd6db8d1e9425ced45fc12a191e8b
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Tue Mar 2 11:58:57 2021 +0100
context: Initialize signal handlers during setup
Is currently done during meta_init().
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1861>
src/core/meta-context.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
---
diff --git a/src/core/meta-context.c b/src/core/meta-context.c
index 5d7dcb8064..abdd496a4a 100644
--- a/src/core/meta-context.c
+++ b/src/core/meta-context.c
@@ -22,6 +22,7 @@
#include "core/meta-context-private.h"
+#include <glib-unix.h>
#include <locale.h>
#include "backends/meta-backend-private.h"
@@ -96,6 +97,36 @@ meta_context_configure (MetaContext *context,
return TRUE;
}
+static gboolean
+on_sigterm (gpointer user_data)
+{
+ MetaContext *context = META_CONTEXT (user_data);
+
+ meta_context_terminate (context);
+
+ return G_SOURCE_REMOVE;
+}
+
+static void
+init_signal_handlers (MetaContext *context)
+{
+ struct sigaction act = { 0 };
+ sigset_t empty_mask;
+
+ sigemptyset (&empty_mask);
+ act.sa_handler = SIG_IGN;
+ act.sa_mask = empty_mask;
+ act.sa_flags = 0;
+ if (sigaction (SIGPIPE, &act, NULL) < 0)
+ g_warning ("Failed to register SIGPIPE handler: %s", g_strerror (errno));
+#ifdef SIGXFSZ
+ if (sigaction (SIGXFSZ, &act, NULL) < 0)
+ g_warning ("Failed to register SIGXFSZ handler: %s", g_strerror (errno));
+#endif
+
+ g_unix_signal_add (SIGTERM, on_sigterm, context);
+}
+
static const char *
compositor_type_to_description (MetaCompositorType compositor_type)
{
@@ -131,6 +162,8 @@ meta_context_setup (MetaContext *context,
return FALSE;
}
+ init_signal_handlers (context);
+
compositor_type = meta_context_get_compositor_type (context);
g_message ("Running %s (using mutter %s) as a %s",
priv->name, VERSION,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]