You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 3f6b7c34dbf76fdbf7561a3fe5019713b10d1c9e.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 663bd84bef7a95f85a935fe52662186930235237 Mon Sep 17 00:00:00 2001
|
||||
From 91a2f667bd20e9f4da38f2a3ee2a189a18d8bb0e Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 9 Apr 2017 03:13:25 +0200
|
||||
Subject: server: Skip async completion when possible.
|
||||
@@ -11,7 +11,7 @@ Subject: server: Skip async completion when possible.
|
||||
4 files changed, 16 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/pipe.c b/dlls/ntdll/tests/pipe.c
|
||||
index 013eb2b39f..631013c755 100644
|
||||
index 6846b514dc2..a6f8135624a 100644
|
||||
--- a/dlls/ntdll/tests/pipe.c
|
||||
+++ b/dlls/ntdll/tests/pipe.c
|
||||
@@ -389,9 +389,7 @@ static void test_completion(void)
|
||||
@@ -25,7 +25,7 @@ index 013eb2b39f..631013c755 100644
|
||||
|
||||
CloseHandle(ov.hEvent);
|
||||
diff --git a/server/async.c b/server/async.c
|
||||
index f9d8af36b9..be7da06b65 100644
|
||||
index d1cea9a607e..bb3bc325c38 100644
|
||||
--- a/server/async.c
|
||||
+++ b/server/async.c
|
||||
@@ -45,6 +45,7 @@ struct async
|
||||
@@ -59,7 +59,7 @@ index f9d8af36b9..be7da06b65 100644
|
||||
|
||||
if (iosb) async->iosb = (struct iosb *)grab_object( iosb );
|
||||
else async->iosb = NULL;
|
||||
@@ -326,7 +336,7 @@ void async_set_result( struct object *obj, unsigned int status, apc_param_t tota
|
||||
@@ -340,7 +350,7 @@ void async_set_result( struct object *obj, unsigned int status, apc_param_t tota
|
||||
async->status = status;
|
||||
if (status == STATUS_MORE_PROCESSING_REQUIRED) return; /* don't report the completion */
|
||||
|
||||
@@ -69,7 +69,7 @@ index f9d8af36b9..be7da06b65 100644
|
||||
if (async->data.apc)
|
||||
{
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index 288f6976e1..fdbd07ef59 100644
|
||||
index 7a876917fdd..3d62bae5b84 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -2381,6 +2381,7 @@ DECL_HANDLER(flush)
|
||||
@@ -80,15 +80,15 @@ index 288f6976e1..fdbd07ef59 100644
|
||||
release_object( async );
|
||||
}
|
||||
release_object( fd );
|
||||
@@ -2461,6 +2462,7 @@ DECL_HANDLER(read)
|
||||
{
|
||||
reply->wait = fd->fd_ops->read( fd, async, req->pos );
|
||||
reply->options = fd->options;
|
||||
+ async_skip_completion( async, fd->comp_flags );
|
||||
release_object( async );
|
||||
}
|
||||
release_object( iosb );
|
||||
@@ -2484,6 +2486,7 @@ DECL_HANDLER(write)
|
||||
@@ -2457,6 +2458,7 @@ DECL_HANDLER(read)
|
||||
{
|
||||
reply->wait = fd->fd_ops->read( fd, async, req->pos );
|
||||
reply->options = fd->options;
|
||||
+ async_skip_completion( async, fd->comp_flags );
|
||||
release_object( async );
|
||||
}
|
||||
release_object( fd );
|
||||
@@ -2478,6 +2480,7 @@ DECL_HANDLER(write)
|
||||
{
|
||||
reply->wait = fd->fd_ops->write( fd, async, req->pos );
|
||||
reply->options = fd->options;
|
||||
@@ -96,7 +96,7 @@ index 288f6976e1..fdbd07ef59 100644
|
||||
release_object( async );
|
||||
}
|
||||
release_object( iosb );
|
||||
@@ -2507,6 +2510,7 @@ DECL_HANDLER(ioctl)
|
||||
@@ -2501,6 +2504,7 @@ DECL_HANDLER(ioctl)
|
||||
{
|
||||
reply->wait = fd->fd_ops->ioctl( fd, req->code, async );
|
||||
reply->options = fd->options;
|
||||
@@ -105,10 +105,10 @@ index 288f6976e1..fdbd07ef59 100644
|
||||
}
|
||||
release_object( iosb );
|
||||
diff --git a/server/file.h b/server/file.h
|
||||
index 5ea8f0f5cb..ff605c3719 100644
|
||||
index 30db87e3ac7..aa70908a8a1 100644
|
||||
--- a/server/file.h
|
||||
+++ b/server/file.h
|
||||
@@ -181,6 +181,7 @@ extern void async_set_timeout( struct async *async, timeout_t timeout, unsigned
|
||||
@@ -182,6 +182,7 @@ extern void async_set_timeout( struct async *async, timeout_t timeout, unsigned
|
||||
extern void async_set_result( struct object *obj, unsigned int status, apc_param_t total );
|
||||
extern int async_queued( struct async_queue *queue );
|
||||
extern int async_waiting( struct async_queue *queue );
|
||||
@@ -117,5 +117,5 @@ index 5ea8f0f5cb..ff605c3719 100644
|
||||
extern void async_wake_up( struct async_queue *queue, unsigned int status );
|
||||
extern struct completion *fd_get_completion( struct fd *fd, apc_param_t *p_key );
|
||||
--
|
||||
2.11.0
|
||||
2.13.1
|
||||
|
||||
|
Reference in New Issue
Block a user