summaryrefslogtreecommitdiffstats
path: root/metacity-dont-do-bad-stuff-on-sigterm.patch
diff options
context:
space:
mode:
Diffstat (limited to 'metacity-dont-do-bad-stuff-on-sigterm.patch')
-rw-r--r--metacity-dont-do-bad-stuff-on-sigterm.patch64
1 files changed, 0 insertions, 64 deletions
diff --git a/metacity-dont-do-bad-stuff-on-sigterm.patch b/metacity-dont-do-bad-stuff-on-sigterm.patch
deleted file mode 100644
index 7402e6c..0000000
--- a/metacity-dont-do-bad-stuff-on-sigterm.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-diff -up metacity-2.28.0/src/core/main.c.sigterm metacity-2.28.0/src/core/main.c
---- metacity-2.28.0/src/core/main.c.sigterm 2009-11-05 14:53:40.599237201 -0500
-+++ metacity-2.28.0/src/core/main.c 2009-11-05 17:28:18.601486344 -0500
-@@ -67,6 +67,7 @@
- #include <fcntl.h>
- #include <locale.h>
- #include <time.h>
-+#include <unistd.h>
-
- /**
- * The exit code we'll return to our parent process when we eventually die.
-@@ -368,12 +369,25 @@ meta_finalize (void)
- meta_session_shutdown ();
- }
-
-+static int sigterm_pipe_fds[2] = { -1, -1 };
-+
- static void
- sigterm_handler (int signum)
- {
-- meta_finalize ();
-+ if (sigterm_pipe_fds[1] >= 0)
-+ {
-+ ssize_t bytes_written;
-+ bytes_written = write (sigterm_pipe_fds[1], "", 1);
-+ close (sigterm_pipe_fds[1]);
-+ sigterm_pipe_fds[1] = -1;
-+ }
-+}
-
-- exit (meta_exit_code);
-+static gboolean
-+on_sigterm (void)
-+{
-+ meta_quit (META_EXIT_SUCCESS);
-+ return FALSE;
- }
-
- static guint sigchld_signal_id = 0;
-@@ -421,6 +434,7 @@ main (int argc, char **argv)
- "Pango", "GLib-GObject", "GThread"
- };
- guint i;
-+ GIOChannel *channel;
-
- if (!g_thread_supported ())
- g_thread_init (NULL);
-@@ -443,6 +457,16 @@ main (int argc, char **argv)
- g_strerror (errno));
- #endif
-
-+ if (pipe (sigterm_pipe_fds) != 0)
-+ g_printerr ("Failed to create SIGTERM pipe: %s\n",
-+ g_strerror (errno));
-+
-+ channel = g_io_channel_unix_new (sigterm_pipe_fds[0]);
-+ g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, NULL);
-+ g_io_add_watch (channel, G_IO_IN, (GIOFunc) on_sigterm, NULL);
-+ g_io_channel_set_close_on_unref (channel, TRUE);
-+ g_io_channel_unref (channel);
-+
- act.sa_handler = &sigterm_handler;
- if (sigaction (SIGTERM, &act, NULL) < 0)
- g_printerr ("Failed to register SIGTERM handler: %s\n",