diff --git a/dix/devices.c b/dix/devices.c index 08520eb54..efdc0c945 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -847,6 +847,9 @@ CloseDownDevices(void) inputInfo.off_devices = NULL; inputInfo.keyboard = NULL; inputInfo.pointer = NULL; +#ifdef XKB + XkbDeleteRulesDflts(); +#endif } /** diff --git a/include/xkbsrv.h b/include/xkbsrv.h index 7db9eef0b..e2fff4eeb 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -899,6 +899,10 @@ extern void XkbSetRulesDflts( char * /* options */ ); +extern void XkbDeleteRulesDflts( + void +); + extern void XkbInitDevice( DeviceIntPtr /* pXDev */ ); diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index 0d5d15ef3..47ad55369 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -279,6 +279,21 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout, return; } +void +XkbDeleteRulesDflts() +{ + _XkbFree(XkbRulesFile); + XkbRulesFile = NULL; + _XkbFree(XkbModelDflt); + XkbModelDflt = NULL; + _XkbFree(XkbLayoutDflt); + XkbLayoutDflt = NULL; + _XkbFree(XkbVariantDflt); + XkbVariantDflt = NULL; + _XkbFree(XkbOptionsDflt); + XkbOptionsDflt = NULL; +} + /***====================================================================***/ #include "xkbDflts.h"