diff options
author | Riteo <riteo@posteo.net> | 2024-06-27 23:28:29 +0200 |
---|---|---|
committer | Riteo <riteo@posteo.net> | 2024-06-28 01:47:25 +0200 |
commit | f27471fbd806c9e2ee48f0e49f9d4f8f4e6af0a8 (patch) | |
tree | cf0097bfe55016477b270f8663d0cd9c17478937 /modules/gdscript/gdscript_disassembler.cpp | |
parent | cae2f853dcd1ecc26ca68de08cec62089dee1f26 (diff) | |
download | redot-engine-f27471fbd806c9e2ee48f0e49f9d4f8f4e6af0a8.tar.gz |
Wayland: minimize surface commits and limit them to the main thread
Before of this patch, as explained in the usual
commented-wall-of-text-longer-than-the-actual-patch-itself™, due to the
multithreaded nature of the Wayland thread, it was possible to commit a
surface while the renderer was doing stuff, which was _very_ wrong.
Initially the consequences of such a sin weren't obvious but, now that
explicit synchronization is becoming more and more common, we can't
commit a buffer randomly without basically guaranteeing a nasty, nasty
crash (and we should have avoided commits altogether in the first place
to ensure atomic surface updates).
We now only trigger a commit _in the main thread_ when low processor usage
mode is on _and_ if we know that we won't be rendering anything as, due to
its intermittent nature, it makes "legacy" (pre xdg_wm_base v6) frame
callback based suspension quite annoying.
Diffstat (limited to 'modules/gdscript/gdscript_disassembler.cpp')
0 files changed, 0 insertions, 0 deletions