aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/PySide6/QtAsyncio/tasks.py
diff options
context:
space:
mode:
authorAdrian Herrmann <adrian.herrmann@qt.io>2024-07-03 19:08:32 +0200
committerAdrian Herrmann <adrian.herrmann@qt.io>2024-07-16 13:03:00 +0200
commitd0c80064e38f0d5ae8fbe048ac68cd597ec03efc (patch)
treeb75a209cf84b1f76aea518ac28dbf13a91295b23 /sources/pyside6/PySide6/QtAsyncio/tasks.py
parent4e0bafd38db84cd81760393cda048a84505643d2 (diff)
QtAsyncio: Don't cancel handle
It is not necessary to cancel a task's handle when cancelling said task, as the step function already handles the cancellation. Furthermore, cancelling the handle can cause issues with TaskGroups if an exception is raised inside the TaskGroup's context, where the tasks inside the group are not allowed to properly cancel and thus block the program. Pick-to: 6.7 Task-number: PYSIDE-769 Fixes: PYSIDE-2799 Change-Id: I1ab782380ffbe8c1ec40aba22b9ed2ebdcb1498f Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/PySide6/QtAsyncio/tasks.py')
-rw-r--r--sources/pyside6/PySide6/QtAsyncio/tasks.py3
1 files changed, 1 insertions, 2 deletions
diff --git a/sources/pyside6/PySide6/QtAsyncio/tasks.py b/sources/pyside6/PySide6/QtAsyncio/tasks.py
index 9a5698432..34daa3b2b 100644
--- a/sources/pyside6/PySide6/QtAsyncio/tasks.py
+++ b/sources/pyside6/PySide6/QtAsyncio/tasks.py
@@ -26,7 +26,7 @@ class QAsyncioTask(futures.QAsyncioFuture):
# The task creates a handle for its coroutine. The handle enqueues the
# task's step function as its callback in the event loop.
- self._handle = self._loop.call_soon(self._step, context=self._context)
+ self._loop.call_soon(self._step, context=self._context)
# The task step function executes the coroutine until it finishes,
# raises an exception or returns a future. If a future was returned,
@@ -182,7 +182,6 @@ class QAsyncioTask(futures.QAsyncioFuture):
return False
self._cancel_count += 1
self._cancel_message = msg
- self._handle.cancel()
if self._future_to_await is not None:
# A task that is awaiting a future must also cancel this future in
# order for the cancellation to be successful.