There had already been a workaround for EClientCache, which proved
to be sub-optimal, and it can strike on more places, thus better
to load the extension modules before EShell is created.
There could happen crashes in libxml2 when being used for the first
time in multiple threads at once, like with xmlFindCharEncodingHandler()
function. This and some others require initialization in the main thread.
One example of such crash can be found in a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=1380268
Most of the EAlertSink implementors use EAlertBar to present those
alerts and all of these had almost identical code to deal with it.
The added function is for these implementations to share the code.
That was a memory leak, but apart of that it could also cause use-after-free
crash in gtk_widget_get_scale_factor() under _gtk_style_cascade_add_provider()
called from shell_window_constructed(), when creating a new shell window
for the second time, with the previous one already closed.
The SIGQUIT behaves like a crash and coredump can be stored even though
it's not a real crash. The factories and other tools handle SIGTERM gracefully,
thus it's the right signal to use, not SIGQUIT.
That way only if the environment variable is not set is populated
with preferred value by the Evolution, thus users can try whether
certain WebKitGTK+ version behaves better without a need to recompile
the evolution.
Disable the accelerated compositing mode in WebKitGTK+ as we don't need
it at all in Evolution (definitely not in composer, but right now
disable it even for preview) and for some video drivers like vboxvideo
and modesetting there is a big performance hit.
The former claim a compile-time warning, but sets the 'error' on failure,
the later doesn't claim a compile-time warning, but does not set the 'error'
on failure. Using the return value of both functions fixes two things at once.