diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2022-09-19 14:07:03 +0300 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2022-09-27 09:19:21 +0300 |
commit | f23bccb3bce725041bfea050e6a4ce9a907a2af0 (patch) | |
tree | 9e9531b5a5c878be489a6791043a99434ac3e9f7 /src/libs/installer/binarycontent.h | |
parent | 184ae4722f354c5c7ce7788ea93b5abcf889eb7d (diff) |
Fix installer stalling when there's only one CPU core4.4
The installer operations are run in the global QThreadPool. The
Operation::performOperation() implementation from "QtPatch" operation
would call the Component::operations() method, that filtered the
returned operation list with QtConcurrent::blockingFilter(). This would
lock the installer when the global thread pool object was initialized
with maxThreadCount of 1, with the only QThread object from the global
pool already running the calling Operation::performOperation() function,
which is waiting the result of Component::operations().
Fix by omitting usage of QtConcurrent::blockingFilter() and populating
the returned operation list with std::copy_if - the components have
usually only a handful operations each so this shouldn't be too
noticeable of a performance regression.
Task-number: QTIFW-2786
Change-Id: Ia6be9f6697310d3f955a8199712c54f345407067
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/libs/installer/binarycontent.h')
0 files changed, 0 insertions, 0 deletions