Hmm, the parameter to g_io_channel_win32_poll() should be a GPollFD array,
authorTor Lillqvist <tml@iki.fi>
Sun, 27 Aug 2000 15:33:15 +0000 (15:33 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Sun, 27 Aug 2000 15:33:15 +0000 (15:33 +0000)
2000-08-27  Tor Lillqvist  <tml@iki.fi>

Hmm, the parameter to g_io_channel_win32_poll() should be
a GPollFD array, not GIOChannel. That way the caller can know which
channels cause the callback.

12 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
giowin32.c
glib.h
glib/giowin32.c
glib/glib.h

index dd89491..acc00a9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,7 +2,7 @@
 
        * giowin32.c (g_io_channel_win32_poll): New function, otherwise
        like g_io_channel_win32_wait_for_condition(), but accept several
-       GIOChannels.
+       GPollFDs.
        (g_io_channel_win32_wait_for_condition): Call
        g_io_channel_win32_poll().
 
index dd89491..acc00a9 100644 (file)
@@ -2,7 +2,7 @@
 
        * giowin32.c (g_io_channel_win32_poll): New function, otherwise
        like g_io_channel_win32_wait_for_condition(), but accept several
-       GIOChannels.
+       GPollFDs.
        (g_io_channel_win32_wait_for_condition): Call
        g_io_channel_win32_poll().
 
index dd89491..acc00a9 100644 (file)
@@ -2,7 +2,7 @@
 
        * giowin32.c (g_io_channel_win32_poll): New function, otherwise
        like g_io_channel_win32_wait_for_condition(), but accept several
-       GIOChannels.
+       GPollFDs.
        (g_io_channel_win32_wait_for_condition): Call
        g_io_channel_win32_poll().
 
index dd89491..acc00a9 100644 (file)
@@ -2,7 +2,7 @@
 
        * giowin32.c (g_io_channel_win32_poll): New function, otherwise
        like g_io_channel_win32_wait_for_condition(), but accept several
-       GIOChannels.
+       GPollFDs.
        (g_io_channel_win32_wait_for_condition): Call
        g_io_channel_win32_poll().
 
index dd89491..acc00a9 100644 (file)
@@ -2,7 +2,7 @@
 
        * giowin32.c (g_io_channel_win32_poll): New function, otherwise
        like g_io_channel_win32_wait_for_condition(), but accept several
-       GIOChannels.
+       GPollFDs.
        (g_io_channel_win32_wait_for_condition): Call
        g_io_channel_win32_poll().
 
index dd89491..acc00a9 100644 (file)
@@ -2,7 +2,7 @@
 
        * giowin32.c (g_io_channel_win32_poll): New function, otherwise
        like g_io_channel_win32_wait_for_condition(), but accept several
-       GIOChannels.
+       GPollFDs.
        (g_io_channel_win32_wait_for_condition): Call
        g_io_channel_win32_poll().
 
index dd89491..acc00a9 100644 (file)
@@ -2,7 +2,7 @@
 
        * giowin32.c (g_io_channel_win32_poll): New function, otherwise
        like g_io_channel_win32_wait_for_condition(), but accept several
-       GIOChannels.
+       GPollFDs.
        (g_io_channel_win32_wait_for_condition): Call
        g_io_channel_win32_poll().
 
index dd89491..acc00a9 100644 (file)
@@ -2,7 +2,7 @@
 
        * giowin32.c (g_io_channel_win32_poll): New function, otherwise
        like g_io_channel_win32_wait_for_condition(), but accept several
-       GIOChannels.
+       GPollFDs.
        (g_io_channel_win32_wait_for_condition): Call
        g_io_channel_win32_poll().
 
index db5e9ca..84c5727 100644 (file)
@@ -872,51 +872,18 @@ g_io_channel_win32_set_debug (GIOChannel *channel,
 }
 
 gint
-g_io_channel_win32_poll (GIOChannel **channels,
-                        gint         n_channels,
+g_io_channel_win32_poll (GPollFD     *fds,
+                        gint         n_fds,
                         GIOCondition condition,
                         gint         timeout)
 {
-  GPollFD *pollfd;
-  GIOWin32Channel *win32_channel;
   int i;
   int result;
   gboolean debug = FALSE;
 
-  g_return_val_if_fail (n_channels >= 0, 0);
-
-  pollfd = g_new (GPollFD, n_channels);
+  g_return_val_if_fail (n_fds >= 0, 0);
 
-  for (i = 0; i < n_channels; i++)
-    {
-      win32_channel = (GIOWin32Channel *) channels[i];
-      debug |= win32_channel->debug;
-      pollfd[i].fd = (gint) win32_channel->data_avail_event;
-      pollfd[i].events = condition;
-    }
-
-  if (debug)
-    {
-      g_print ("g_io_channel_win32_poll: ");
-      for (i = 0; i < n_channels; i++)
-       {
-         win32_channel = (GIOWin32Channel *) channels[i];
-         g_print ("fd:%d event:%#x ", win32_channel->fd, pollfd[i].fd);
-       }
-      g_print ("condition:%s%s%s%s timeout:%d\n",
-              (condition & G_IO_ERR) ? " ERR" : "",
-              (condition & G_IO_HUP) ? " HUP" : "",
-              (condition & G_IO_IN)  ? " IN"  : "",
-              (condition & G_IO_PRI) ? " PRI" : "",
-              timeout);
-    }
-
-  result = (*g_main_win32_get_poll_func ()) (pollfd, n_channels, timeout);
-
-  if (debug)
-    g_print ("g_io_channel_win32_poll: done:%d\n", result);
-
-  g_free (pollfd);
+  result = (*g_main_win32_get_poll_func ()) (fds, n_fds, timeout);
 
   return result;
 }
@@ -926,7 +893,13 @@ g_io_channel_win32_wait_for_condition (GIOChannel  *channel,
                                       GIOCondition condition,
                                       gint         timeout)
 {
-  return g_io_channel_win32_poll (&channel, 1, condition, timeout);
+  GPollFD pollfd;
+  GIOWin32Channel *win32_channel = (GIOWin32Channel *) channel;
+
+  pollfd.fd = (gint) win32_channel->data_avail_event;
+  pollfd.events = condition;
+  
+  return g_io_channel_win32_poll (&pollfd, 1, condition, timeout);
 }
 
 /* This variable and the functions below are present just to be 
diff --git a/glib.h b/glib.h
index 31805dd..3b3b4c2 100644 (file)
--- a/glib.h
+++ b/glib.h
@@ -2925,8 +2925,8 @@ gint        g_io_channel_unix_get_fd (GIOChannel *channel);
  * On Unix you would do a select() on the file descriptors of the channels.
  * This should probably be available for all platforms?
  */
-gint        g_io_channel_win32_poll (GIOChannel **channels,
-                                    gint         n_channels,
+gint        g_io_channel_win32_poll (GPollFD     *fds,
+                                    gint         n_fds,
                                     GIOCondition condition,
                                     gint         timeout);
 
index db5e9ca..84c5727 100644 (file)
@@ -872,51 +872,18 @@ g_io_channel_win32_set_debug (GIOChannel *channel,
 }
 
 gint
-g_io_channel_win32_poll (GIOChannel **channels,
-                        gint         n_channels,
+g_io_channel_win32_poll (GPollFD     *fds,
+                        gint         n_fds,
                         GIOCondition condition,
                         gint         timeout)
 {
-  GPollFD *pollfd;
-  GIOWin32Channel *win32_channel;
   int i;
   int result;
   gboolean debug = FALSE;
 
-  g_return_val_if_fail (n_channels >= 0, 0);
-
-  pollfd = g_new (GPollFD, n_channels);
+  g_return_val_if_fail (n_fds >= 0, 0);
 
-  for (i = 0; i < n_channels; i++)
-    {
-      win32_channel = (GIOWin32Channel *) channels[i];
-      debug |= win32_channel->debug;
-      pollfd[i].fd = (gint) win32_channel->data_avail_event;
-      pollfd[i].events = condition;
-    }
-
-  if (debug)
-    {
-      g_print ("g_io_channel_win32_poll: ");
-      for (i = 0; i < n_channels; i++)
-       {
-         win32_channel = (GIOWin32Channel *) channels[i];
-         g_print ("fd:%d event:%#x ", win32_channel->fd, pollfd[i].fd);
-       }
-      g_print ("condition:%s%s%s%s timeout:%d\n",
-              (condition & G_IO_ERR) ? " ERR" : "",
-              (condition & G_IO_HUP) ? " HUP" : "",
-              (condition & G_IO_IN)  ? " IN"  : "",
-              (condition & G_IO_PRI) ? " PRI" : "",
-              timeout);
-    }
-
-  result = (*g_main_win32_get_poll_func ()) (pollfd, n_channels, timeout);
-
-  if (debug)
-    g_print ("g_io_channel_win32_poll: done:%d\n", result);
-
-  g_free (pollfd);
+  result = (*g_main_win32_get_poll_func ()) (fds, n_fds, timeout);
 
   return result;
 }
@@ -926,7 +893,13 @@ g_io_channel_win32_wait_for_condition (GIOChannel  *channel,
                                       GIOCondition condition,
                                       gint         timeout)
 {
-  return g_io_channel_win32_poll (&channel, 1, condition, timeout);
+  GPollFD pollfd;
+  GIOWin32Channel *win32_channel = (GIOWin32Channel *) channel;
+
+  pollfd.fd = (gint) win32_channel->data_avail_event;
+  pollfd.events = condition;
+  
+  return g_io_channel_win32_poll (&pollfd, 1, condition, timeout);
 }
 
 /* This variable and the functions below are present just to be 
index 31805dd..3b3b4c2 100644 (file)
@@ -2925,8 +2925,8 @@ gint        g_io_channel_unix_get_fd (GIOChannel *channel);
  * On Unix you would do a select() on the file descriptors of the channels.
  * This should probably be available for all platforms?
  */
-gint        g_io_channel_win32_poll (GIOChannel **channels,
-                                    gint         n_channels,
+gint        g_io_channel_win32_poll (GPollFD     *fds,
+                                    gint         n_fds,
                                     GIOCondition condition,
                                     gint         timeout);