Some more debugging output. (g_io_channel_win32_poll): Remove unused vars.
[platform/upstream/glib.git] / giowin32.c
index db5e9ca..560d714 100644 (file)
@@ -201,6 +201,10 @@ reader_thread (void *parameter)
       nbytes = MIN ((channel->rdp + BUFFER_SIZE - channel->wrp - 1) % BUFFER_SIZE,
                    BUFFER_SIZE - channel->wrp);
 
+      if (channel->debug)
+       g_print ("thread %#x: calling reader for %d bytes\n",
+                channel->thread_id, nbytes);
+
       UNLOCK (channel->mutex);
 
       nbytes = (*channel->reader) (channel->fd, buffer, nbytes);
@@ -872,61 +876,37 @@ g_io_channel_win32_set_debug (GIOChannel *channel,
 }
 
 gint
-g_io_channel_win32_poll (GIOChannel **channels,
-                        gint         n_channels,
-                        GIOCondition condition,
-                        gint         timeout)
+g_io_channel_win32_poll (GPollFD *fds,
+                        gint     n_fds,
+                        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);
-
-  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);
-    }
+  g_return_val_if_fail (n_fds >= 0, 0);
 
-  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;
 }
 
-gint
-g_io_channel_win32_wait_for_condition (GIOChannel  *channel,
-                                      GIOCondition condition,
-                                      gint         timeout)
+void
+g_io_channel_win32_make_pollfd (GIOChannel   *channel,
+                               GIOCondition  condition,
+                               GPollFD      *fd)
 {
-  return g_io_channel_win32_poll (&channel, 1, condition, timeout);
+  GIOWin32Channel *win32_channel = (GIOWin32Channel *) channel;
+
+  if (win32_channel->data_avail_event == NULL)
+    create_events (win32_channel);
+  
+  fd->fd = (gint) win32_channel->data_avail_event;
+  fd->events = condition;
+
+  if (win32_channel->thread_id == 0)
+    if (win32_channel->type == G_IO_FILE_DESC)
+      create_reader_thread (win32_channel, fd_reader);
+    else if (win32_channel->type == G_IO_STREAM_SOCKET)
+      create_reader_thread (win32_channel, sock_reader);
 }
 
 /* This variable and the functions below are present just to be