summaryrefslogtreecommitdiffstats
path: root/.tag
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2020-02-27 13:09:46 +0100
committerMichal Klocek <michal.klocek@qt.io>2020-03-02 14:19:17 +0100
commit0fe9c7803463f12c6ceea74dec42fb66c27b838f (patch)
tree9e803c0316d705d6ce4bb2e3487d70c13ee5a39d /.tag
parentdf5d831bae99662fab43ed2628187113c18aac2c (diff)
Fix deadlocks on WebEngineContext destruction
This patch aims to handle 3 deadlocks on exit: (1) Do not attempt to restart Viz thread on shutdown, this will make deadlock with no separate gpu thread, since force shut down of FrameSinkManager requires interaction with gpu process. (2) QCoreApplication, QGuiApplication, QApplication behave differently when doing qt post routine, ~QGuiApplication calls the post routine handler after closing event dispatcher, which will on windows stop processing timer events, which we need to pump message loop when shuting down viz. Do not use QEventLoop and switch to active pulling. The proper solution is to fix QGuiApplication destructor to call post routine first, but this change might have side effects on already existing user code. (3) Since 7f1649b438329e we delete root frame sink asynchronously, which will in gpu thread running in separate thread create a deadlock. Viz requires gpu to destruct root frame sink, however if main process tries to close gpu process this will in turn try close viz, but viz calls back gpu now since the root frame sink is not destroyed. Use the same solution as in (1). Change-Id: Ic6bc904bdac90ee01a5c5b9398a2e2746be3bbd8 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
Diffstat (limited to '.tag')
0 files changed, 0 insertions, 0 deletions