5 Commits

Author SHA1 Message Date
Julien Cabieces
062ce03b6d [PyQt6] remove QTextCodec and rename pyqt5_from_qvariant_by_type
QTextCodec is no longer existing in PyQt6 (only in QtCoreCompat in C++)
2024-01-11 04:52:01 +10:00
Nyall Dawson
13235351cd Perform backward compatibility of settings only for changed settings
The backward compatibility code is very expensive, as it triggers
a huge number of QSetting object creation and destruction.

We only need to perform this for settings which have changed,
so add API to flag changed settings and only perform backward
migration of changed settings.

This dramatically improves QgsApplication shutdown time (cuts
1.5 seconds off shutdown on a release build!!)
2024-01-10 18:19:56 +10:00
Nyall Dawson
50a31065ab Add framework to temporarily halt flushing of QgsSettings to ini
This adds a mechanism where flushes of QgsSettings to the underlying
ini storage file can be temporarily suspended. It is intended for
code paths where many settings entries are consecutively read/written,
to avoid the very expensive cost of constructing and destructing
multiple QgsSettings objects for each in turn.

When QgsSettings::holdFlush() is called, then a temporary thread local
QgsSettings object will be created and ALL access to settings entries
will use this same object (preventing flushing of it to ini files).
An accompanying QgsSettings::releaseFlush() call MUST be made from
the same thread to destroy the thread local QgsSettings, flush it
to disk, and resume normal operation.

This helps avoid the VERY costly backward migration of settings,
and cuts the run time for qgis_process commands like `qgis_process list`
by at least half (and considerably more in common setups).
2024-01-08 18:58:14 +10:00
Julien Cabieces
e8093a8ce5 Only mock non class enums 2023-12-13 05:36:44 +10:00
Julien Cabieces
bb3c36a69b Initialize sip bindings for PyQt6
use exactly the ones from PyQt5 so we can study the difference when
generating for PyQt6
2023-12-08 03:38:42 +10:00