About preparing migration towards gtk4
Michael Meeks
michael.meeks at collabora.com
Wed Jan 6 13:56:08 UTC 2021
Hi Julien,
On 18/12/2020 21:46, julien2412 wrote:
> Gtk4 has been released 2 days ago, I know that migration from a version to
> another version is not a 1 month work, but thought it could be interesting
> and it can't hurt the current state of LO to begin to prepare it by
Unfortunately the gtk+ team removed the GDK_THREADS annotation that in
conjunction with the gdk_threads_set_lock_functions method I added back
in 2003 is/was at the core of our ability to use gtk+ safely with
threads and to share the SolarMutex with gtk+'s own mutex.
Checkout:
https://bugzilla.gnome.org/show_bug.cgi?id=793124
Quite possibly there is a better way to do this now; possibly by taking
a SolarMutexGuard in a very large number of places at the perimeter of
all gtk+ and a11y calls we could leave only smaller parts of the gtk+
backend as not thread-safe anymore.
Possibly we could come up with some clever I/O thread that would proxy
the X11 (or wayland?) protocol socket and wrap that with SolarMutex
protection - such that threading would continue to work.
Possibly we could move the things that use gtk4 into some 'appartment'
with some UNO magic - I guess the file-picker in particular. I fear
though that the new welding work assumes that we have a thread-safe gtk3
so we can construct, populate, script etc. UIs from any thread.
This is quite a big engineering problem, that needs very significant
thought, and will create threading problems that give and give.
The up-side for the gtk+ maintainers is only that they don't have ~100
gdk_threads_enter/leave calls that they had to think about in their
code-base.
In any world where the gtk+ authors also wrote large apps, I would hope
that they would not make decisions that so carelessly traded a few
minutes per year of their time for spending man-months of other people's
and whole new classes of bugs for millions of users.
Unrelenting platform churn is one of the supposed benefits of FLOSS
development though ... but the up-stack bit-rot is a pretty serious
thing to fight.
Then again - doing work to use more modern APIs sounds sensible -
assuming that they are not too modern (I guess lots of them tend to get
added when they developed gtk4 which is really very recently for those
who care about APIs >6 months old ;-)
HTH,
Michael.
--
michael.meeks at collabora.com <><, GM Collabora Productivity
Hangout: mejmeeks at gmail.com, Skype: mmeeks
(M) +44 7795 666 147 - timezone usually UK / Europe
More information about the LibreOffice
mailing list