summaryrefslogtreecommitdiff
path: root/Xi/exevents.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2007-11-15 11:31:43 +1030
committerPeter Hutterer <peter@cs.unisa.edu.au>2007-11-15 11:31:43 +1030
commitb05246696d14bd35aa53b49302707b51206c72a6 (patch)
tree4f42fd3e09ce8886f370059b947389b6b24d0805 /Xi/exevents.c
parentc758e5a664a52045ad419340044beebb6774a336 (diff)
Xi: free XkbSrvLedInfos as well when freeing an MD's device classes.
Diffstat (limited to 'Xi/exevents.c')
-rw-r--r--Xi/exevents.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 1bf6c5179..158f523f0 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -278,14 +278,23 @@ ChangeMasterDeviceClasses(DeviceIntPtr device,
#endif
xfree(master->key); master->key = NULL;
xfree(master->valuator); master->valuator = NULL;
+ /* XXX: xkb_acts needs to be freed for master->button */
xfree(master->button); master->button = NULL;
xfree(master->focus); master->focus = NULL;
xfree(master->proximity); master->proximity = NULL;
xfree(master->absolute); master->absolute = NULL;
+#ifdef XKB
+ if (master->kbdfeed && master->kbdfeed->xkb_sli)
+ XkbFreeSrvLedInfo(master->kbdfeed->xkb_sli);
+#endif
xfree(master->kbdfeed); master->kbdfeed = NULL;
xfree(master->ptrfeed); master->ptrfeed = NULL;
xfree(master->stringfeed); master->stringfeed = NULL;
xfree(master->bell); master->bell = NULL;
+#ifdef XKB
+ if (master->leds && master->leds->xkb_sli)
+ XkbFreeSrvLedInfo(master->leds->xkb_sli);
+#endif
xfree(master->leds); master->leds = NULL;
xfree(master->intfeed); master->intfeed = NULL;