[PATCH] rtworkq: Invoke cancelled waiting item with RTWQ_E_OPERATION_CANCELLED.

Nikolay Sivov nsivov at codeweavers.com
Thu May 7 11:04:49 CDT 2020


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/rtworkq/queue.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/dlls/rtworkq/queue.c b/dlls/rtworkq/queue.c
index ce06df1c8c..07d124cfb7 100644
--- a/dlls/rtworkq/queue.c
+++ b/dlls/rtworkq/queue.c
@@ -866,7 +866,11 @@ static HRESULT queue_cancel_item(struct queue *queue, RTWQWORKITEM_KEY key)
         {
             key >>= 32;
             if ((key & WAIT_ITEM_KEY_MASK) == WAIT_ITEM_KEY_MASK)
+            {
+                IRtwqAsyncResult_SetStatus(item->result, RTWQ_E_OPERATION_CANCELLED);
+                invoke_async_callback(item->result);
                 CloseThreadpoolWait(item->u.wait_object);
+            }
             else if ((key & SCHEDULED_ITEM_KEY_MASK) == SCHEDULED_ITEM_KEY_MASK)
                 CloseThreadpoolTimer(item->u.timer_object);
             else
-- 
2.26.2




More information about the wine-devel mailing list