xkb: Add XkbFreeRMLVOSet helper function.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Dan Nicholson <dbn.lists@gmail.com>
This commit is contained in:
Peter Hutterer 2009-04-16 17:06:33 +10:00
parent ad76656f88
commit 62d2fb6863
2 changed files with 24 additions and 11 deletions

View File

@ -858,6 +858,11 @@ extern _X_EXPORT void XkbGetRulesDflts(
XkbRMLVOSet * /* rmlvo */
);
extern _X_EXPORT void XkbFreeRMLVOSet(
XkbRMLVOSet * /* rmlvo */,
Bool /* freeRMLVO */
);
extern _X_EXPORT void XkbSetRulesDflts(
XkbRMLVOSet * /* rmlvo */
);

View File

@ -136,6 +136,24 @@ XkbGetRulesDflts(XkbRMLVOSet *rmlvo)
rmlvo->options = strdup(rmlvo->options);
}
void
XkbFreeRMLVOSet(XkbRMLVOSet *rmlvo, Bool freeRMLVO)
{
if (!rmlvo)
return;
xfree(rmlvo->rules);
xfree(rmlvo->model);
xfree(rmlvo->layout);
xfree(rmlvo->variant);
xfree(rmlvo->options);
if (freeRMLVO)
xfree(rmlvo);
else
memset(rmlvo, 0, sizeof(XkbRMLVOSet));
}
static Bool
XkbWriteRulesProp(ClientPtr client, pointer closure)
{
@ -595,17 +613,7 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet *rmlvo,
XkbSetRulesDflts(rmlvo);
XkbSetRulesUsed(rmlvo);
if (rmlvo_dflts.rules)
xfree(rmlvo_dflts.rules);
if (rmlvo_dflts.model)
xfree(rmlvo_dflts.model);
if (rmlvo_dflts.layout)
xfree(rmlvo_dflts.layout);
if (rmlvo_dflts.variant)
xfree(rmlvo_dflts.variant);
if (rmlvo_dflts.options)
xfree(rmlvo_dflts.options);
XkbFreeRMLVOSet(&rmlvo_dflts, FALSE);
return TRUE;