Sophie

Sophie

distrib > Mandriva > 2009.1 > i586 > media > main-release-src > by-pkgid > ed850f9ceda4826f28781585a4806f28 > files > 18

x11-server-1.6.1-1mdv2009.1.src.rpm

From 843827ed511d6dc39f73389a30bd3cc5d23c883b Mon Sep 17 00:00:00 2001
From: Ander Conselvan de Oliveira <ander@mandriva.com.br>
Date: Fri, 23 Jan 2009 14:33:54 -0200
Subject: [PATCH 906/907] LED behavior fixes

* Call slave devices CtrlProc on CoreKeyboardCtl to ensure keyboard leds
  are in sync.
* Copy autoState when allocation a new XkbSrvLedInfo otherwise the leds
  state is lost on layout changes.
---
 dix/devices.c |    7 +++++++
 xkb/xkb.c     |    1 +
 2 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/dix/devices.c b/dix/devices.c
index 0858f20..3a0f633 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -481,6 +481,13 @@ CoreKeyboardBell(int volume, DeviceIntPtr pDev, pointer arg, int something)
 static void
 CoreKeyboardCtl(DeviceIntPtr pDev, KeybdCtrl *ctrl)
 {
+    /* Call control proc for slave devices */
+    DeviceIntPtr slave;
+    for (slave = inputInfo.devices; slave; slave = slave->next)
+        if (slave->key && slave->spriteInfo->paired == pDev) {
+            slave->kbdfeed->ctrl.leds = ctrl->leds;
+            slave->kbdfeed->CtrlProc (slave, &slave->kbdfeed->ctrl);
+        }
     return;
 }
 
diff --git a/xkb/xkb.c b/xkb/xkb.c
index 7c1edea..1d0f7fd 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -5854,6 +5854,7 @@ ProcXkbGetKbdByName(ClientPtr client)
                     if (sli) {
                         sli->explicitState = old_sli->explicitState;
                         sli->effectiveState = old_sli->effectiveState;
+                        sli->autoState = old_sli->autoState;
                     }
                     tmpd->kbdfeed->xkb_sli = sli;
                     XkbFreeSrvLedInfo(old_sli);
-- 
1.6.1.3