]> Pileus Git - ~andy/gtk/commitdiff
Move SIGPIPE suppression to gtk_init and document it
authorMatthias Clasen <mclasen@redhat.com>
Thu, 1 Oct 2009 15:41:17 +0000 (11:41 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 1 Oct 2009 15:45:28 +0000 (11:45 -0400)
Some people were unhappy with doing it deep inside the lpr print
backend at an unpredictable time, and SIGPIPE is almost never
wanted anyway.

README.in
gtk/gtkmain.c
modules/printbackends/lpr/gtkprintbackendlpr.c

index bc2f857aaa61b2153b7f1b99fda5e9de18d4fd6c..84d6329e011e4d69fa376b00951fde05b4cc1c02 100644 (file)
--- a/README.in
+++ b/README.in
@@ -44,6 +44,11 @@ Release notes for 2.18
   GDK_NATIVE_WINDOWS makes GDK create a native X11 window for each
   GDK window, which might make problematic applications work better.
 
+* GTK+ calls signal (SIGPIPE, SIG_IGN) during initialization, to ignore
+  SIGPIPE signals, since these are almost never wanted in graphical
+  applications. If you do need to handle SIGPIPE for some reason, reset
+  the handler after gtk_init(), but notice that other libraries (e.g.
+  libdbus or gvfs) might do similar things.
 
 Release notes for 2.16
 ======================
index e47e1beab367e715114caf5f9e587a89ff02310c..2bbc96d22b6ae785dc9a23b46ce343c31f773606 100644 (file)
@@ -686,6 +686,8 @@ do_post_parse_initialization (int    *argc,
 
   gettext_initialization ();
 
+  signal (SIGPIPE, SIG_IGN);
+
   if (g_fatal_warnings)
     {
       GLogLevelFlags fatal_mask;
@@ -985,6 +987,15 @@ gtk_init_check (int         *argc,
  * the GUI for some reason. If you want your program to fall back to a 
  * textual interface you want to call gtk_init_check() instead.
  * </para></note>
+ *
+ * <note><para>
+ * Since 2.18, GTK+ calls <literal>signal (SIGPIPE, SIG_IGN)</literal>
+ * during initialization, to ignore SIGPIPE signals, since these are
+ * almost never wanted in graphical applications. If you do need to
+ * handle SIGPIPE for some reason, reset the handler after gtk_init(),
+ * but notice that other libraries (e.g. libdbus or gvfs) might do
+ * similar things.
+ * </para></note>
  **/
 void
 gtk_init (int *argc, char ***argv)
index eeaaa994ecd293369983f29ad925b8b9b84704e8..72d9c33e067fb13cbea45ebd458c8b228e963f41 100644 (file)
@@ -278,8 +278,6 @@ lpr_write (GIOChannel   *source,
     {
       gsize bytes_written;
 
-      signal (SIGPIPE, SIG_IGN);
-
       g_io_channel_write_chars (ps->in,
                                 buf, 
                                bytes_read,