server: Don't reset the idle event when the client stops waiting.
This commit is contained in:
parent
d1dc48d8dc
commit
b57cc5561b
|
@ -12040,7 +12040,7 @@ static const struct
|
||||||
{ 0, 0, FALSE },
|
{ 0, 0, FALSE },
|
||||||
/* 10 */ { 0, 0, TRUE },
|
/* 10 */ { 0, 0, TRUE },
|
||||||
{ 0, 0, FALSE },
|
{ 0, 0, FALSE },
|
||||||
{ 0, WAIT_TIMEOUT, TRUE },
|
{ 0, WAIT_TIMEOUT, FALSE },
|
||||||
};
|
};
|
||||||
|
|
||||||
static void do_wait_idle_child( int arg )
|
static void do_wait_idle_child( int arg )
|
||||||
|
|
|
@ -794,19 +794,10 @@ static int msg_queue_add_queue( struct object *obj, struct wait_queue_entry *ent
|
||||||
static void msg_queue_remove_queue(struct object *obj, struct wait_queue_entry *entry )
|
static void msg_queue_remove_queue(struct object *obj, struct wait_queue_entry *entry )
|
||||||
{
|
{
|
||||||
struct msg_queue *queue = (struct msg_queue *)obj;
|
struct msg_queue *queue = (struct msg_queue *)obj;
|
||||||
struct process *process = entry->thread->process;
|
|
||||||
|
|
||||||
remove_queue( obj, entry );
|
remove_queue( obj, entry );
|
||||||
if (queue->fd && list_empty( &obj->wait_queue )) /* last on the queue is gone */
|
if (queue->fd && list_empty( &obj->wait_queue )) /* last on the queue is gone */
|
||||||
set_fd_events( queue->fd, 0 );
|
set_fd_events( queue->fd, 0 );
|
||||||
|
|
||||||
assert( entry->thread->queue == queue );
|
|
||||||
|
|
||||||
/* if waiting on the main process queue, reset the idle event */
|
|
||||||
if (process->queue == queue)
|
|
||||||
{
|
|
||||||
if (process->idle_event) reset_event( process->idle_event );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void msg_queue_dump( struct object *obj, int verbose )
|
static void msg_queue_dump( struct object *obj, int verbose )
|
||||||
|
|
Loading…
Reference in New Issue