mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
config: only default to xwayland persistence on old wlroots versions
This is a compile-time check, so it will be too conservative if somebody updates wlroots after building labwc, but that is still better than the alternatives.
This commit is contained in:
parent
ea58ab0259
commit
df6081b52c
2 changed files with 24 additions and 14 deletions
|
|
@ -219,13 +219,12 @@ 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 yes.
|
||||
when it is no longer needed.
|
||||
|
||||
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.
|
||||
When labwc is compiled with wlroots 0.18.2 or later, the default is no.
|
||||
When labwc is compiled with wlroots < 0.18.2, the default is yes to
|
||||
avoid a wlroots bug that can result in compositor crashes when
|
||||
performing drag-and-drop actions when the XWayland server is shut down.
|
||||
|
||||
Note: changing this setting requires a restart of labwc.
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include <wayland-server-core.h>
|
||||
#include <wlr/util/box.h>
|
||||
#include <wlr/util/log.h>
|
||||
#include <wlr/version.h>
|
||||
#include "action.h"
|
||||
#include "common/dir.h"
|
||||
#include "common/list.h"
|
||||
|
|
@ -36,6 +37,9 @@
|
|||
#include "window-rules.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
#define LAB_WLR_VERSION_OLDER_THAN(major, minor, micro) \
|
||||
(WLR_VERSION_NUM < (((major) << 16) | ((minor) << 8) | (micro)))
|
||||
|
||||
static bool in_regions;
|
||||
static bool in_usable_area_override;
|
||||
static bool in_keybind;
|
||||
|
|
@ -1089,16 +1093,14 @@ 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 LAB_WLR_VERSION_OLDER_THAN(0, 18, 2)
|
||||
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.");
|
||||
wlr_log(WLR_ERROR, "to avoid the risk of a fatal crash, "
|
||||
"setting xwaylandPersistence to 'no' is only "
|
||||
"recommended when labwc is compiled against "
|
||||
"wlroots >= 0.18.2. See #2371 for details.");
|
||||
}
|
||||
#endif
|
||||
} else if (!strcasecmp(nodename, "x.cascadeOffset.placement")) {
|
||||
rc.placement_cascade_offset_x = atoi(content);
|
||||
} else if (!strcasecmp(nodename, "y.cascadeOffset.placement")) {
|
||||
|
|
@ -1463,7 +1465,16 @@ rcxml_init(void)
|
|||
rc.adaptive_sync = LAB_ADAPTIVE_SYNC_DISABLED;
|
||||
rc.allow_tearing = false;
|
||||
rc.reuse_output_mode = false;
|
||||
|
||||
#if LAB_WLR_VERSION_OLDER_THAN(0, 18, 2)
|
||||
/*
|
||||
* For wlroots < 0.18.2, keep xwayland alive by default to work around
|
||||
* a fatal crash when the X server is terminated during drag-and-drop.
|
||||
*/
|
||||
rc.xwayland_persistence = true;
|
||||
#else
|
||||
rc.xwayland_persistence = false;
|
||||
#endif
|
||||
|
||||
init_font_defaults(&rc.font_activewindow);
|
||||
init_font_defaults(&rc.font_inactivewindow);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue