Mike Kaplinskiy : server: Move async activation into separate function.

Alexandre Julliard julliard at winehq.org
Thu May 20 11:03:03 CDT 2010


Module: wine
Branch: master
Commit: ee5ee5c538db0622283886988e66641c5536a0b4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ee5ee5c538db0622283886988e66641c5536a0b4

Author: Mike Kaplinskiy <mike.kaplinskiy at gmail.com>
Date:   Wed May 19 16:14:08 2010 -0400

server: Move async activation into separate function.

---

 server/sock.c |   33 +++++++++++++++++++--------------
 1 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/server/sock.c b/server/sock.c
index 0a1bb40..0c8cb54 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -295,6 +295,23 @@ static inline int sock_error( struct fd *fd )
     return optval;
 }
 
+static void sock_dispatch_asyncs( struct sock *sock, int event )
+{
+    if ( sock->flags & WSA_FLAG_OVERLAPPED )
+    {
+        if ( event & (POLLIN|POLLPRI|POLLERR|POLLHUP) && async_waiting( sock->read_q ))
+        {
+            if (debug_level) fprintf( stderr, "activating read queue for socket %p\n", sock );
+            async_wake_up( sock->read_q, STATUS_ALERTED );
+        }
+        if ( event & (POLLOUT|POLLERR|POLLHUP) && async_waiting( sock->write_q ))
+        {
+            if (debug_level) fprintf( stderr, "activating write queue for socket %p\n", sock );
+            async_wake_up( sock->write_q, STATUS_ALERTED );
+        }
+    }
+}
+
 static void sock_poll_event( struct fd *fd, int event )
 {
     struct sock *sock = get_fd_user( fd );
@@ -422,23 +439,11 @@ static void sock_poll_event( struct fd *fd, int event )
             event |= POLLHUP;
     }
 
+    sock_dispatch_asyncs( sock, event );
+
     /* wake up anyone waiting for whatever just happened */
     sock_wake_up( sock );
 
-    if ( sock->flags & WSA_FLAG_OVERLAPPED )
-    {
-        if ( event & (POLLIN|POLLPRI|POLLERR|POLLHUP) && async_waiting( sock->read_q ))
-        {
-            if (debug_level) fprintf( stderr, "activating read queue for socket %p\n", sock );
-            async_wake_up( sock->read_q, STATUS_ALERTED );
-        }
-        if ( event & (POLLOUT|POLLERR|POLLHUP) && async_waiting( sock->write_q ))
-        {
-            if (debug_level) fprintf( stderr, "activating write queue for socket %p\n", sock );
-            async_wake_up( sock->write_q, STATUS_ALERTED );
-        }
-    }
-
     /* if anyone is stupid enough to wait on the socket object itself,
      * maybe we should wake them up too, just in case? */
     wake_up( &sock->obj, 0 );




More information about the wine-cvs mailing list