Go to file
Christian Hergert cf2ab505a0 global: force fsync() to worker thread when saving state
The g_file_replace_contents_async() API can potentially call fsync() from
the thread calling into it upon completion. This can have disasterous
effects when run from the compositor main thread such as complete stalls.

This is a followup to 86a00b6872 which
assumed (like the rest of us) that the fsync() would be performed on the
thread that was doing the I/O operations.

You can verify this with an strace -e fsync and cause terminal to display
a command completed notification (eg: from a backdrop window).

This also fixes a lifecycle bug for the variant, as
g_file_replace_contents_async() does not copy the data during the operation
as that is the responsibility of the caller. Instead, we just use a GBytes
variant and reference the variant there.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1050
2020-02-27 15:13:15 +01:00
.gitlab-ci ci: Fix checking out mutter on stable branches 2019-11-06 22:59:50 +00:00
.settings Clean out some eclipse artefacts 2019-02-13 04:39:26 +01:00
data theme: Add light styling to message buttons 2019-11-27 20:17:57 +01:00
docs/reference docs: Fix interface prefix for D-Bus docs 2019-07-25 15:56:20 +02:00
js overview: Hide the overview on session mode hasOverview changes 2020-02-25 20:14:15 +01:00
lint lint: Drop extra ignored nodes in legacy config 2019-09-15 13:30:19 +00:00
man man: Update project website 2018-01-07 21:39:18 +01:00
meson build: Run postinstall script where necessary 2018-04-09 19:19:33 +00:00
po Update Slovak translation 2020-02-04 10:05:49 +00:00
src global: force fsync() to worker thread when saving state 2020-02-27 15:13:15 +01:00
subprojects Bump verion to 3.34.3 2020-01-05 13:10:47 +01:00
test Add convert_xml test 2019-03-04 20:55:15 +00:00
tests util: Handle trailing LTR/RTL markers in URLs 2019-09-16 20:41:47 +00:00
tools build: Remove Canberra dependency 2019-01-09 23:09:18 +00:00
.eslintrc.json lint: Tweak the whitelist of globals 2019-07-12 16:01:07 +00:00
.gitignore Ignore '.vscode' folder for users of that editor 2019-04-02 17:37:31 +00:00
.gitlab-ci.yml ci: Turn on -Werror 2019-09-10 17:51:02 +00:00
.gitmodules submodules: Replace non-functional git.gnome.org URL by GNOME Gitlab URL 2018-09-25 08:41:30 +02:00
cldr2json.py Fix override for fr-CA 2019-03-04 20:55:15 +00:00
config.h.meson shell-global: Place launched applications into a systemd scope 2019-12-11 14:28:27 +01:00
COPYING Changed obsolete FSF postal address. 2014-01-08 04:35:14 +07:00
gnome-shell.doap Replace Bugzilla by Gitlab URL in DOAP file 2018-12-15 23:26:54 +01:00
HACKING.md docs: Update animation section 2019-08-07 18:40:49 +02:00
meson_options.txt extensions-tool: Start import 2019-08-21 18:28:02 +02:00
meson.build Bump version to 3.34.4 2020-02-16 15:51:30 +01:00
NEWS Bump version to 3.34.4 2020-02-16 15:51:30 +01:00
README.md README.md: Add contribution section 2019-02-13 20:37:39 +01:00
README.mdwn Add basic documentation 2019-03-04 20:55:15 +00:00

GNOME Shell

GNOME Shell provides core user interface functions for the GNOME 3 desktop, like switching to windows and launching applications. GNOME Shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience.

For more information about GNOME Shell, including instructions on how to build GNOME Shell from source and how to get involved with the project, see the project wiki.

Bugs should be reported to the GNOME bug tracking system.

Contributing

To contribute, open merge requests at https://gitlab.gnome.org/GNOME/gnome-shell.

Commit messages should follow the GNOME commit message guidelines. We require an URL to either an issue or a merge request in each commit.

License

GNOME Shell is distributed under the terms of the GNU General Public License, version 2 or later. See the COPYING file for details.