GTK+/GLib patch for systems without poll() (like RedHat 4.x)



This patch fixes the "GTK+/GLib frozen event loop bug"  
in systems that do not have the poll() system call 
(such as RedHat 4.x).  It seems that POLLIN and the gang 
were not defined, ultimately causing g_poll() to hang in 
select() forever (since the first enum value, G_IO_IN, would 
be equal to zero).

You must "make clean" and "make uninstall" and rebuild 
both GLib and GTK+ after you apply this patch. 

-Andrew Vajoczki

--- glib-1.1.9/glib.h.org       Mon Dec 28 12:42:05 1998
+++ glib-1.1.9/glib.h   Mon Dec 28 12:49:50 1998
@@ -56,6 +56,7 @@
  *    or size_t.
  */
 #include <glibconfig.h>
+#include "glib.h"
 
 /* include varargs functions for assertment macros
  */
@@ -2300,6 +2301,14 @@
 } GSeekType;
 typedef enum
 {
+#ifndef HAVE_POLL
+    G_IO_IN   =  1
+  , G_IO_OUT  =  2
+  , G_IO_PRI  =  4
+  , G_IO_ERR  =  8
+  , G_IO_HUP  = 16
+  , G_IO_NVAL = 32
+#else
   G_IO_IN  
 #ifdef POLLIN
             = POLLIN
@@ -2324,6 +2333,7 @@
   , G_IO_NVAL  
 #ifdef POLLNVAL
            = POLLNVAL
+#endif
 #endif
 } GIOCondition;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]