Traditionally, getter/setter functions have been considered a
C convenience, and we therefore didn't bother to add them for
many properties that are only consumed from JS.
However now that gjs optimizes property accesses by calling the
appropriate getter/setter instead, it makes sense to add them.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3620>
WorkspaceBackground's allocate is a hot function called every frame
during overview animations. Port it to C.
While we're at it, cache the work area and the monitor geometry, which
do not need to be re-fetched on every allocation.
This reduces the average WorkspaceBackground allocation time from
0.134 ms to 0.017 ms. With four workspaces, scrolling the overview sees
an average WorkspacesView allocation time improvement from
1.104 ms to 0.678 ms.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2394>