Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libX11 for openSUSE:Factory checked in at 2025-12-04 11:21:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libX11 (Old) and /work/SRC/openSUSE:Factory/.libX11.new.1939 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libX11" Thu Dec 4 11:21:06 2025 rev:59 rq:1320983 version:1.8.12 Changes: -------- --- /work/SRC/openSUSE:Factory/libX11/libX11.changes 2025-03-10 17:57:46.635645399 +0100 +++ /work/SRC/openSUSE:Factory/.libX11.new.1939/libX11.changes 2025-12-04 11:26:36.049807900 +0100 @@ -1,0 +2,7 @@ +Fri Nov 28 08:52:07 UTC 2025 - Alynx Zhou <[email protected]> + +- Add libX11-ignore-incompatible-XkbMapNotify.patch: Fix + mutter-x11-frames crash caused by keyboard layout change + triggered by orca screen reader. (bsc#1253076) + +------------------------------------------------------------------- @@ -76,0 +84 @@ + (bsc#1252250) @@ -77,0 +86 @@ + (bsc#1252250) New: ---- libX11-ignore-incompatible-XkbMapNotify.patch ----------(New B)---------- New: - Add libX11-ignore-incompatible-XkbMapNotify.patch: Fix mutter-x11-frames crash caused by keyboard layout change ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libX11.spec ++++++ --- /var/tmp/diff_new_pack.gWb5Ih/_old 2025-12-04 11:26:36.581830945 +0100 +++ /var/tmp/diff_new_pack.gWb5Ih/_new 2025-12-04 11:26:36.581830945 +0100 @@ -32,6 +32,8 @@ # PATCH-FIX-UPSTREAM en-locales.diff fdo#48596 bnc#388711 -- Add missing data for more en locales Patch2: en-locales.diff Patch3: u_no-longer-crash-in-XVisualIDFromVisual.patch +# PATCH-FIX-UPSTREAM libX11-ignore-incompatible-XkbMapNotify.patch bsc#1253076 [email protected] -- Fix mutter-x11-frames crash due to orca screen reader +Patch4: libX11-ignore-incompatible-XkbMapNotify.patch BuildRequires: fdupes BuildRequires: libtool BuildRequires: pkgconfig @@ -121,6 +123,7 @@ %patch -P 1 %patch -P 2 %patch -P 3 -p1 +%patch -P 4 -p1 %build %configure \ ++++++ libX11-ignore-incompatible-XkbMapNotify.patch ++++++ >From 7f31a215ad23adf71d1ce604487ee1e0f5121cc9 Mon Sep 17 00:00:00 2001 From: Julian Orth <[email protected]> Date: Fri, 24 Oct 2025 20:15:37 +0200 Subject: [PATCH] Ignore XkbMapNotify events that don't belong to the core keyboard Such events can contain values that are incompatible with the core keyboard map. Fixes a potentially fatal error when such values are later used in a XkbGetMap request. Signed-off-by: Julian Orth <[email protected]> --- src/xkb/XKBBind.c | 2 ++ src/xkb/XKBUse.c | 16 ++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/xkb/XKBBind.c b/src/xkb/XKBBind.c index 467e4198..5459e42d 100644 --- a/src/xkb/XKBBind.c +++ b/src/xkb/XKBBind.c @@ -369,6 +369,8 @@ XkbRefreshKeyboardMapping(register XkbMapNotifyEvent * event) XkbMapChangesRec changes; Status rtrn; + if (!xkbi->desc || xkbi->desc->device_spec != event->device) + return Success; if (xkbi->flags & XkbMapPending) changes = xkbi->changes; else diff --git a/src/xkb/XKBUse.c b/src/xkb/XKBUse.c index ab5027b0..9a01a8fb 100644 --- a/src/xkb/XKBUse.c +++ b/src/xkb/XKBUse.c @@ -290,9 +290,11 @@ wire_to_event(Display *dpy, XEvent *re, xEvent *event) mev->num_modmap_keys = mn->nModMapKeys; mev->first_vmodmap_key = mn->firstVModMapKey; mev->num_vmodmap_keys = mn->nVModMapKeys; - XkbNoteMapChanges(&xkbi->changes, mev, XKB_XLIB_MAP_MASK); - if (xkbi->changes.changed) - xkbi->flags |= XkbMapPending; + if (xkbi->desc && xkbi->desc->device_spec == mn->deviceID) { + XkbNoteMapChanges(&xkbi->changes, mev, XKB_XLIB_MAP_MASK); + if (xkbi->changes.changed) + xkbi->flags |= XkbMapPending; + } return True; } else if (mn->nKeySyms > 0) { @@ -306,9 +308,11 @@ wire_to_event(Display *dpy, XEvent *re, xEvent *event) ev->first_keycode = mn->firstKeySym; ev->request = MappingKeyboard; ev->count = mn->nKeySyms; - _XkbNoteCoreMapChanges(&xkbi->changes, ev, XKB_XLIB_MAP_MASK); - if (xkbi->changes.changed) - xkbi->flags |= XkbMapPending; + if (xkbi->desc && xkbi->desc->device_spec == mn->deviceID) { + _XkbNoteCoreMapChanges(&xkbi->changes, ev, XKB_XLIB_MAP_MASK); + if (xkbi->changes.changed) + xkbi->flags |= XkbMapPending; + } return True; } } -- GitLab
