XkbCopyKeymap/SrvXkbCopyKeymap: free geom harder, add cheery comments

Unconditionally free geometry when copying the keymap (so we have none on
core, oh well), add a couple of heartening comments.
This commit is contained in:
Daniel Stone 2006-09-07 15:17:04 +03:00 committed by Daniel Stone
parent 4524a2bf6f
commit 629798c73a
2 changed files with 13 additions and 3 deletions

View File

@ -324,8 +324,11 @@ XkbFreeKeyboard(XkbDescPtr xkb,unsigned which,Bool freeAll)
XkbFreeIndicatorMaps(xkb);
if (which&XkbNamesMask)
XkbFreeNames(xkb,XkbAllNamesMask,True);
if ((which&XkbGeometryMask) && (xkb->geom!=NULL))
if ((which&XkbGeometryMask) && (xkb->geom!=NULL)) {
XkbFreeGeometry(xkb->geom,XkbGeomAllMask,True);
/* PERHAPS BONGHITS etc */
xkb->geom = NULL;
}
if (which&XkbControlsMask)
XkbFreeControls(xkb,XkbAllControlsMask,True);
if (freeAll)

View File

@ -1476,6 +1476,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
}
/* geometry */
/* not implemented yet because oh god the pain. */
#if 0
if (src->geom) {
/* properties */
/* colors */
@ -1485,9 +1487,13 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
/* key aliases */
/* font?!? */
}
else {
else
#endif
{
if (dst->geom) {
/* I LOVE THE DIFFERENT CALL SIGNATURE. REALLY, I DO. */
XkbFreeGeometry(dst->geom, XkbGeomAllMask, True);
dst->geom = NULL;
}
}
@ -1520,7 +1526,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
}
else {
/* send NewKeyboardNotify if the keycode range changed, else
* just MapNotify. */
* just MapNotify. we also need to send NKN if the geometry
* changed (obviously ...). */
if ((src->min_key_code != dst->min_key_code ||
src->max_key_code != dst->max_key_code) && sendNotifies) {
nkn.oldMinKeyCode = dst->min_key_code;