config: temporarily set xwaylandPersistence to 'yes' by default (#2414)

...to avoid a bug that is present in wlroots <0.18.2 and which has the
potential to crash the compositor when performing a drag-and-drop action
at the same time as the XWayland server is shutting down.

This will be reverted when wlroots-0.18.2 can be linked with.

Related-to: #2371
This commit is contained in:
Johan Malm 2024-12-08 18:36:59 +00:00 committed by Johan Malm
parent 2348a5a87b
commit 2d312cd28b
3 changed files with 21 additions and 4 deletions

View file

@ -172,7 +172,7 @@ this is for compatibility with Openbox.
<adaptiveSync>no</adaptiveSync>
<allowTearing>no</allowTearing>
<reuseOutputMode>no</reuseOutputMode>
<xwaylandPersistence>no</xwaylandPersistence>
<xwaylandPersistence>yes</xwaylandPersistence>
</core>
```
@ -219,7 +219,13 @@ this is for compatibility with Openbox.
*<core><xwaylandPersistence>* [yes|no]
Keep XWayland alive even when no clients are connected, rather than
using a "lazy" policy that allows the server to launch on demand and die
when it is no longer needed. Default is no.
when it is no longer needed. Default is yes.
This is only temporarily defaulting to yes to avoid a bug that is
present in wlroots <0.18.2 resulting in a compositor crash when
performing a drag-and-drop action at the same time as the XWayland
server is shutting down. This will be reverted to a default "no" when
wlroots-0.18.2 can be linked with.
Note: changing this setting requires a restart of labwc.

View file

@ -13,7 +13,7 @@
<adaptiveSync>no</adaptiveSync>
<allowTearing>no</allowTearing>
<reuseOutputMode>no</reuseOutputMode>
<xwaylandPersistence>no</xwaylandPersistence>
<xwaylandPersistence>yes</xwaylandPersistence>
</core>
<placement>

View file

@ -1088,6 +1088,17 @@ entry(xmlNode *node, char *nodename, char *content)
}
} else if (!strcasecmp(nodename, "xwaylandPersistence.core")) {
set_bool(content, &rc.xwayland_persistence);
/*
* TODO: Temporary warning message. Revert when wlroots-0.18.2
* can be linked with.
*/
if (!rc.xwayland_persistence) {
wlr_log(WLR_ERROR, "setting xwaylandPersistence to 'no' "
"is not encouraged unless wlroots-0.18.2 is used "
"since it has a potential risk of crashing the "
"entire session. See #2371 for details.");
}
} else if (!strcasecmp(nodename, "x.cascadeOffset.placement")) {
rc.placement_cascade_offset_x = atoi(content);
} else if (!strcasecmp(nodename, "y.cascadeOffset.placement")) {
@ -1452,7 +1463,7 @@ rcxml_init(void)
rc.adaptive_sync = LAB_ADAPTIVE_SYNC_DISABLED;
rc.allow_tearing = false;
rc.reuse_output_mode = false;
rc.xwayland_persistence = false;
rc.xwayland_persistence = true;
init_font_defaults(&rc.font_activewindow);
init_font_defaults(&rc.font_inactivewindow);