diff options
-rw-r--r-- | dix/devices.c | 1 | ||||
-rw-r--r-- | include/xkbsrv.h | 3 | ||||
-rw-r--r-- | xkb/xkbInit.c | 15 |
3 files changed, 19 insertions, 0 deletions
diff --git a/dix/devices.c b/dix/devices.c index fa94a9438..0c718d204 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -1052,6 +1052,7 @@ CloseDownDevices(void) inputInfo.pointer = NULL; XkbDeleteRulesDflts(); + XkbDeleteRulesUsed(); OsReleaseSignals(); } diff --git a/include/xkbsrv.h b/include/xkbsrv.h index 45e2e8c47..346ebccf0 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -751,6 +751,9 @@ extern _X_EXPORT void XkbSetRulesDflts(XkbRMLVOSet * /* rmlvo */ extern _X_EXPORT void XkbDeleteRulesDflts(void ); +extern _X_EXPORT void XkbDeleteRulesUsed(void + ); + extern _X_EXPORT int SProcXkbDispatch(ClientPtr /* client */ ); diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index 4e8e267da..244c353c6 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -251,6 +251,21 @@ XkbSetRulesDflts(XkbRMLVOSet * rmlvo) } void +XkbDeleteRulesUsed(void) +{ + free(XkbRulesUsed); + XkbRulesUsed = NULL; + free(XkbModelUsed); + XkbModelUsed = NULL; + free(XkbLayoutUsed); + XkbLayoutUsed = NULL; + free(XkbVariantUsed); + XkbVariantUsed = NULL; + free(XkbOptionsUsed); + XkbOptionsUsed = NULL; +} + +void XkbDeleteRulesDflts(void) { free(XkbRulesDflt); |