Mike McCormack : server: open_console's from field should be a handle.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jun 7 07:49:28 CDT 2006


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

Author: Mike McCormack <mike at codeweavers.com>
Date:   Wed Jun  7 18:33:46 2006 +0900

server: open_console's from field should be a handle.

---

 dlls/kernel/console.c              |    6 +++---
 include/wine/server_protocol.h     |    4 ++--
 programs/wineconsole/wineconsole.c |    2 +-
 server/console.c                   |   25 +++++++++++--------------
 server/protocol.def                |    2 +-
 server/trace.c                     |    2 +-
 6 files changed, 19 insertions(+), 22 deletions(-)

diff --git a/dlls/kernel/console.c b/dlls/kernel/console.c
index 384bbfd..fc16195 100644
--- a/dlls/kernel/console.c
+++ b/dlls/kernel/console.c
@@ -210,13 +210,13 @@ BOOL WINAPI Beep( DWORD dwFreq, DWORD dw
  */
 HANDLE WINAPI OpenConsoleW(LPCWSTR name, DWORD access, BOOL inherit, DWORD creation)
 {
-    BOOL        output;
+    HANDLE      output;
     HANDLE      ret;
 
     if (strcmpiW(coninW, name) == 0) 
-        output = FALSE;
+        output = (HANDLE) FALSE;
     else if (strcmpiW(conoutW, name) == 0) 
-        output = TRUE;
+        output = (HANDLE) TRUE;
     else
     {
         SetLastError(ERROR_INVALID_NAME);
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index 7481eb1..c39f83c 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -1082,7 +1082,7 @@ struct get_console_renderer_events_reply
 struct open_console_request
 {
     struct request_header __header;
-    int          from;
+    obj_handle_t from;
 
     unsigned int access;
     unsigned int attributes;
@@ -4382,6 +4382,6 @@ union generic_reply
     struct query_symlink_reply query_symlink_reply;
 };
 
-#define SERVER_PROTOCOL_VERSION 235
+#define SERVER_PROTOCOL_VERSION 236
 
 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/programs/wineconsole/wineconsole.c b/programs/wineconsole/wineconsole.c
index bf3d6cf..edf0fa8 100644
--- a/programs/wineconsole/wineconsole.c
+++ b/programs/wineconsole/wineconsole.c
@@ -274,7 +274,7 @@ int	WINECON_GrabChanges(struct inner_dat
 	case CONSOLE_RENDERER_ACTIVE_SB_EVENT:
 	    SERVER_START_REQ( open_console )
 	    {
-                req->from       = (int)data->hConIn;
+                req->from       = data->hConIn;
                 req->access     = GENERIC_READ | GENERIC_WRITE;
                 req->attributes = 0;
                 req->share      = FILE_SHARE_READ | FILE_SHARE_WRITE;
diff --git a/server/console.c b/server/console.c
index a4d8f87..b080293 100644
--- a/server/console.c
+++ b/server/console.c
@@ -1311,26 +1311,23 @@ DECL_HANDLER(open_console)
     struct object      *obj = NULL;
 
     reply->handle = 0;
-    switch (req->from)
+    if (req->from == (obj_handle_t)0)
     {
-    case 0:
         if (current->process->console && current->process->console->renderer)
             obj = grab_object( (struct object*)current->process->console );
-        break;
-    case 1:
+    }
+    else if (req->from == (obj_handle_t)1)
+    {
          if (current->process->console && current->process->console->renderer &&
              current->process->console->active)
              obj = grab_object( (struct object*)current->process->console->active );
-        break;
-    default:
-        if ((obj = get_handle_obj( current->process, (obj_handle_t)req->from,
-                                   CONSOLE_READ|CONSOLE_WRITE, &console_input_ops )))
-        {
-            struct console_input* console = (struct console_input*)obj;
-            obj = (console->active) ? grab_object( console->active ) : NULL;
-            release_object( console );
-        }
-        break;
+    }
+    else if ((obj = get_handle_obj( current->process, req->from,
+                                    CONSOLE_READ|CONSOLE_WRITE, &console_input_ops )))
+    {
+        struct console_input *console = (struct console_input *)obj;
+        obj = (console->active) ? grab_object( console->active ) : NULL;
+        release_object( console );
     }
 
     /* FIXME: req->share is not used (as in screen buffer creation)  */
diff --git a/server/protocol.def b/server/protocol.def
index c313df1..fac00d3 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -822,7 +822,7 @@ struct console_renderer_event
 
 /* Open a handle to the process console */
 @REQ(open_console)
-    int          from;          /* 0 (resp 1) input (resp output) of current process console */
+    obj_handle_t from;          /* 0 (resp 1) input (resp output) of current process console */
                                 /* otherwise console_in handle to get active screen buffer? */
     unsigned int access;        /* wanted access rights */
     unsigned int attributes;    /* object attributes */
diff --git a/server/trace.c b/server/trace.c
index 98f622c..5d2c525 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -1245,7 +1245,7 @@ static void dump_get_console_renderer_ev
 
 static void dump_open_console_request( const struct open_console_request *req )
 {
-    fprintf( stderr, " from=%d,", req->from );
+    fprintf( stderr, " from=%p,", req->from );
     fprintf( stderr, " access=%08x,", req->access );
     fprintf( stderr, " attributes=%08x,", req->attributes );
     fprintf( stderr, " share=%d", req->share );




More information about the wine-cvs mailing list