Support XKB_CONTEXT_NO_SECURE_GETENV flag
Since kwin play with CAP_SYS_NICE, secure_getenv will fail for xkbcommon to load user level xkbmap. This allows kwin to load config under ~/.config/xkb BUG: 447206
This commit is contained in:
parent
d4f847574e
commit
6e87fae7f7
3 changed files with 13 additions and 1 deletions
|
@ -223,6 +223,11 @@ set_package_properties(XKB PROPERTIES
|
|||
TYPE REQUIRED
|
||||
PURPOSE "Required for building KWin with Wayland support"
|
||||
)
|
||||
if (XKB_VERSION VERSION_GREATER_EQUAL 1.5.0)
|
||||
set(HAVE_XKBCOMMON_NO_SECURE_GETENV 1)
|
||||
else()
|
||||
set(HAVE_XKBCOMMON_NO_SECURE_GETENV 0)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(XKBX11 IMPORTED_TARGET xkbcommon-x11 REQUIRED)
|
||||
add_feature_info(XKBX11 XKBX11_FOUND "Required for handling keyboard events in X11 backend")
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#cmakedefine01 HAVE_BREEZE_DECO
|
||||
#cmakedefine01 HAVE_SCHED_RESET_ON_FORK
|
||||
#cmakedefine01 HAVE_ACCESSIBILITY
|
||||
#cmakedefine01 HAVE_XKBCOMMON_NO_SECURE_GETENV
|
||||
#if HAVE_BREEZE_DECO
|
||||
#define BREEZE_KDECORATION_PLUGIN_ID "${BREEZE_KDECORATION_PLUGIN_ID}"
|
||||
#endif
|
||||
|
|
|
@ -70,8 +70,14 @@ static void xkbLogHandler(xkb_context *context, xkb_log_level priority, const ch
|
|||
}
|
||||
}
|
||||
|
||||
#if HAVE_XKBCOMMON_NO_SECURE_GETENV
|
||||
constexpr xkb_context_flags KWIN_XKB_CONTEXT_FLAGS = XKB_CONTEXT_NO_SECURE_GETENV;
|
||||
#else
|
||||
constexpr xkb_context_flags KWIN_XKB_CONTEXT_FLAGS = XKB_CONTEXT_NO_FLAGS;
|
||||
#endif
|
||||
|
||||
Xkb::Xkb(bool followLocale1)
|
||||
: m_context(xkb_context_new(XKB_CONTEXT_NO_FLAGS))
|
||||
: m_context(xkb_context_new(KWIN_XKB_CONTEXT_FLAGS))
|
||||
, m_keymap(nullptr)
|
||||
, m_state(nullptr)
|
||||
, m_shiftModifier(0)
|
||||
|
|
Loading…
Reference in a new issue