Break the most expensive header include chains that contaminate the
largest number of translation units
New lightweight headers for extractdded types:
font_metrics.h, mouse_drag_action.h, board_project_settings_params.h,
common_settings_internals.h, wx_infobar_message_type.h,
zone_layer_properties_grid.h
Some "crashes" are just unhandled exceptions that may not get logged to sentry otherwise. (though they should through WER but it doesnt seem to always work)
Calling wxPGInitResourceModule leaves only one module inside
internal ms_modules list, so other modules don't get cleaned up
properly, especially wxDirect2DModule, causing gs_ID2D1Factory
to leak, triggering the debug break on exit.
Fixes KICAD-49
In some cases (mostly mac but not just), we can get to the dtor for
thread pool after the CV has already been destroyed. This prevents that
from being possible and hopefully fixes the crash
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22583
How you ask? Plot first -> then read the PDF and print directly to the
platform-specific printers. Roundabout? Yes. Better than wx printing?
Darnbetcha.
Also allows multi-size page printing and proper margins and print
preview
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1831
Having thread pool as its own singleton in the library meant that each
kiface had its own threadpool, leading to many multiples of the threads
being started. Placing a singleton class in PGM_BASE ensures that all
kifaces use the same thread pool.
The singleton class can be extended to provide single instance
guarantee for any element across kifaces
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
We need the object in m_locale for a bit more things during program cleanup,
especially on macOS
The destructor of PGM_BASE is sufficient allowance of lifetime.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17369
On Linux, this directory is shared between users, so a multi-user
machine needs to let the other users have access to the directory to
create their own lockfiles.