diff options
| author | Ivan Solovev <ivan.solovev@qt.io> | 2025-10-17 15:34:56 +0200 |
|---|---|---|
| committer | Ivan Solovev <ivan.solovev@qt.io> | 2025-12-11 20:09:42 +0000 |
| commit | ef399385253c93b3fbe81251ef71aa47de4ad016 (patch) | |
| tree | 5f7a9c4f1a002f3f22c27783522f6825a1b80b07 /src/gui/opengl/qopenglversionfunctions.cpp | |
| parent | 40d80af504d7ff62d112079454c5ef53455b1475 (diff) | |
QFuture::cancelChain(): improve propagation through unwrap()
QFuture::unwrap() returns a new QFuture that is not added to
the continuation chain, but potentially fulfilled by both outer
and nested futures.
As a result, the parent-child relation in the continuation chain
is broken, and a cancelChain() call will not be propagated up
the chain through unwrap().
Fix it by explicitly adding the newly-created QFutureInterface
into the hierarchy. This requires using some private API of
QFutureInterfaceBase, so add UnwrapHandler as a friend class.
There is still one more pending issue with the cancellation
propagation: if at the time of cancellation the outer future is
already finised and the nested is in progress, the cancellation
will not be propagated into it, and so it will finish successfully.
This issue should be addressed separately.
Task-number: QTBUG-140786
Pick-to: 6.11 6.10
Change-Id: I62a4038f4544fff3cca65cb817940ae8b48db384
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/gui/opengl/qopenglversionfunctions.cpp')
0 files changed, 0 insertions, 0 deletions
