This avoids conflicts with Qt3D framework. As noted in
https://github.com/qgis/QGIS/issues/50067#issuecomment-1318081784
"The constructor and destructor of QChangeArbiter require the use of
**every** thread in the Qt thread pool."
This causes hangs when exporting layouts containing 3d maps. We
have threads from task manager in use from elsewhere, so the
application deadlocks waiting for every thread to be freed so
that QChangeArbiter can do its thing.
So, use a new dedicated thread pool for task manager's exclusive
use. This avoids the hang when exporting 3d maps as it avoids
the deadlock between task manager and Qt3D's requirements.
(A side benefit is that we don't get delayed map rendering when
the number of queued/running tasks hits the max thread count
from the global thread pool.)
Fixes#50067
Instead it should just default to Autodetect
Given how the algorithm uses this parameter this change does not
result in any difference to scripts/etc running this tool, as
before/after this change the algorithm will use Autodetect mode
when the parameter isn't specified explicitly.
This just avoids the confusing situation where both "Not specified"
and "Autodetect" were exposed as options for the geometry type
parameter in the UI, with both having the same result.
starting PyQGIS
We can't use `None` as a keyword exposed to python, it's reserved.
Also move the enum to Qgis before making it part of public stable
API.
odd characters in their names
This can result in the font falling back to a default system
font. It's notably an issue for the "ESRI Oil, Gas, & Water"
symbol font.
Refs #53806
The crash here is coming from sip internals -- somewhere it is
triggering a Python SystemError. I can't solve this one, so just
port the algorithm to c++ and deal with the much improved performance
instead.
categorized class symbol editors, and QGIS is closed or a new project
opened
The symbol ownership of QgsSymbolSelectorWidget is very messy, and
we can't fix till 4.0. Workaround this by introducing a temporary
API to transfer symbol ownership to the widget.