Go to file
Christian Hergert 19e084036a 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-26 15:33:30 -08:00
.gitlab/issue_templates
.gitlab-ci
.settings
data sass: use relative values for user-icon 2020-02-25 17:56:19 +01:00
docs/reference
js altTab: Don't fade out thumbnails on destroy 2020-02-26 22:46:51 +00:00
lint
man
meson
po
src global: force fsync() to worker thread when saving state 2020-02-26 15:33:30 -08:00
subprojects
test
tests
tools
.eslintrc.yml
.gitignore
.gitlab-ci.yml
.gitmodules
cldr2json.py
config.h.meson
COPYING
gnome-shell.doap
HACKING.md
meson_options.txt
meson.build
NEWS
README.md
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.