xkb: Add XkbCopySrvLedInfo, deep-copies a XkbSrvLedInfoRec.
This commit is contained in:
parent
b4380d8030
commit
4219e94c2f
|
@ -576,6 +576,14 @@ extern XkbSrvLedInfoPtr XkbAllocSrvLedInfo(
|
||||||
unsigned int /* needed_parts */
|
unsigned int /* needed_parts */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
extern XkbSrvLedInfoPtr XkbCopySrvLedInfo(
|
||||||
|
DeviceIntPtr /* dev */,
|
||||||
|
XkbSrvLedInfoPtr /* src */,
|
||||||
|
KbdFeedbackPtr /* kf */,
|
||||||
|
LedFeedbackPtr /* lf */
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
extern XkbSrvLedInfoPtr XkbFindSrvLedInfo(
|
extern XkbSrvLedInfoPtr XkbFindSrvLedInfo(
|
||||||
DeviceIntPtr /* dev */,
|
DeviceIntPtr /* dev */,
|
||||||
unsigned int /* class */,
|
unsigned int /* class */,
|
||||||
|
|
|
@ -615,6 +615,45 @@ XkbFreeSrvLedInfo(XkbSrvLedInfoPtr sli)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XkbSrvLedInfoPtr
|
||||||
|
* XkbCopySrvLedInfo(dev,src,kf,lf)
|
||||||
|
*
|
||||||
|
* Takes the given XkbSrvLedInfoPtr and duplicates it. A deep copy is made,
|
||||||
|
* thus the new copy behaves like the original one and can be freed with
|
||||||
|
* XkbFreeSrvLedInfo.
|
||||||
|
*/
|
||||||
|
XkbSrvLedInfoPtr
|
||||||
|
XkbCopySrvLedInfo( DeviceIntPtr from,
|
||||||
|
XkbSrvLedInfoPtr src,
|
||||||
|
KbdFeedbackPtr kf,
|
||||||
|
LedFeedbackPtr lf)
|
||||||
|
{
|
||||||
|
XkbSrvLedInfoPtr sli_new;
|
||||||
|
|
||||||
|
if (!src)
|
||||||
|
goto finish;
|
||||||
|
|
||||||
|
sli_new = _XkbTypedCalloc(1, XkbSrvLedInfoRec);
|
||||||
|
if (!sli_new)
|
||||||
|
goto finish;
|
||||||
|
|
||||||
|
memcpy(src, sli_new, sizeof(XkbSrvLedInfoRec));
|
||||||
|
if (sli_new->class == KbdFeedbackClass)
|
||||||
|
sli_new->fb.kf = kf;
|
||||||
|
else
|
||||||
|
sli_new->fb.lf = lf;
|
||||||
|
|
||||||
|
if (sli_new->flags & XkbSLI_IsDefault) {
|
||||||
|
sli_new->names= _XkbTypedCalloc(XkbNumIndicators,Atom);
|
||||||
|
sli_new->maps= _XkbTypedCalloc(XkbNumIndicators,XkbIndicatorMapRec);
|
||||||
|
} /* else sli_new->names/maps is pointing to
|
||||||
|
dev->key->xkbInfo->desc->names->indicators;
|
||||||
|
dev->key->xkbInfo->desc->names->indicators; */
|
||||||
|
|
||||||
|
finish:
|
||||||
|
return sli_new;
|
||||||
|
}
|
||||||
|
|
||||||
/***====================================================================***/
|
/***====================================================================***/
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue