In console input record queue, replace semaphore with a manual reset
event, so that we get correct behavior in synchronization handling.

diff --git a/server/console.c b/server/console.c
index a0687c8..3a295db 100644
--- a/server/console.c
+++ b/server/console.c
@@ -203,7 +203,7 @@
     return evt;
 }
 
-static struct object *create_console_input( struct thread* renderer, struct object* wait_obj )
+static struct object *create_console_input( struct thread* renderer )
 {
     struct console_input *console_input;
 
@@ -222,7 +222,7 @@
     console_input->history_index = 0;
     console_input->history_mode  = 0;
     console_input->edition_mode  = 0;
-    console_input->wait_obj      = wait_obj;
+    console_input->event         = create_event( NULL, 0, 1, 0 );
 
     if (!console_input->history || !console_input->evt)
     {
@@ -514,9 +514,8 @@
             else i++;
         }
     }
+    if (!console->recnum && count) set_event( console->event );
     console->recnum += count;
-    /* wake up all waiters */
-    wake_up( &console->obj, 0 );
     return count;
 }
 
@@ -555,6 +554,7 @@
         {
             free( console->records );
             console->records = NULL;
+            reset_event( console->event );
         }
     }
     release_object( console );
@@ -943,7 +943,7 @@
 
     release_object( console_in->evt );
     console_in->evt = NULL;
-    release_object( console_in->wait_obj );
+    release_object( console_in->event );
 
     for (i = 0; i < console_in->history_size; i++)
 	if (console_in->history[i]) free( console_in->history[i] );
@@ -1209,7 +1209,6 @@
     struct process *process;
     struct process *renderer = current->process;
     struct console_input *console;
-    struct object *wait_event;
 
     process = (req->pid) ? get_process_from_id( req->pid ) :
               (struct process *)grab_object( renderer->parent );
@@ -1222,13 +1221,7 @@
         set_error( STATUS_ACCESS_DENIED );
         goto the_end;
     }
-    wait_event = get_handle_obj( renderer, req->wait_event, 0, NULL);
-    if (!wait_event)
-    {
-        set_error( STATUS_INVALID_PARAMETER );
-        goto the_end;
-    }
-    if ((console = (struct console_input*)create_console_input( current, wait_event )))
+    if ((console = (struct console_input*)create_console_input( current )))
     {
         if ((in = alloc_handle( renderer, console, req->access, req->inherit )))
         {
@@ -1531,8 +1524,8 @@
 
     if (console)
     {
-        reply->handle = alloc_handle( current->process, console->wait_obj, 
-                                      SEMAPHORE_ALL_ACCESS, FALSE);
+        reply->handle = alloc_handle( current->process, console->event, 
+                                      EVENT_ALL_ACCESS, FALSE);
         release_object( console );
     }
     else set_error( STATUS_INVALID_PARAMETER );