diff options
Diffstat (limited to 'nx-X11/lib/X11/XKBAlloc.c')
-rw-r--r-- | nx-X11/lib/X11/XKBAlloc.c | 495 |
1 files changed, 0 insertions, 495 deletions
diff --git a/nx-X11/lib/X11/XKBAlloc.c b/nx-X11/lib/X11/XKBAlloc.c deleted file mode 100644 index 9c3430c1a..000000000 --- a/nx-X11/lib/X11/XKBAlloc.c +++ /dev/null @@ -1,495 +0,0 @@ -/************************************************************ -Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. - -Permission to use, copy, modify, and distribute this -software and its documentation for any purpose and without -fee is hereby granted, provided that the above copyright -notice appear in all copies and that both that copyright -notice and this permission notice appear in supporting -documentation, and that the name of Silicon Graphics not be -used in advertising or publicity pertaining to distribution -of the software without specific prior written permission. -Silicon Graphics makes no representation about the suitability -of this software for any purpose. It is provided "as is" -without any express or implied warranty. - -SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON -GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE -OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH -THE USE OR PERFORMANCE OF THIS SOFTWARE. - -********************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - - -#include <stdio.h> -#include "Xlibint.h" -#include "XKBlibint.h" -#include <nx-X11/extensions/XKBgeom.h> -#include <nx-X11/extensions/XKBproto.h> -#include "XKBlibint.h" - - -/***===================================================================***/ - -/*ARGSUSED*/ -Status -XkbAllocCompatMap(XkbDescPtr xkb, unsigned which, unsigned nSI) -{ - XkbCompatMapPtr compat; - XkbSymInterpretRec *prev_interpret; - - if (!xkb) - return BadMatch; - if (xkb->compat) { - if (xkb->compat->size_si >= nSI) - return Success; - compat = xkb->compat; - compat->size_si = nSI; - if (compat->sym_interpret == NULL) - compat->num_si = 0; - prev_interpret = compat->sym_interpret; - compat->sym_interpret = _XkbTypedRealloc(compat->sym_interpret, - nSI, XkbSymInterpretRec); - if (compat->sym_interpret == NULL) { - _XkbFree(prev_interpret); - compat->size_si = compat->num_si = 0; - return BadAlloc; - } - if (compat->num_si != 0) { - _XkbClearElems(compat->sym_interpret, compat->num_si, - compat->size_si - 1, XkbSymInterpretRec); - } - return Success; - } - compat = _XkbTypedCalloc(1, XkbCompatMapRec); - if (compat == NULL) - return BadAlloc; - if (nSI > 0) { - compat->sym_interpret = _XkbTypedCalloc(nSI, XkbSymInterpretRec); - if (!compat->sym_interpret) { - _XkbFree(compat); - return BadAlloc; - } - } - compat->size_si = nSI; - compat->num_si = 0; - bzero((char *) &compat->groups[0], XkbNumKbdGroups * sizeof(XkbModsRec)); - xkb->compat = compat; - return Success; -} - - -void -XkbFreeCompatMap(XkbDescPtr xkb, unsigned which, Bool freeMap) -{ - register XkbCompatMapPtr compat; - - if ((xkb == NULL) || (xkb->compat == NULL)) - return; - compat = xkb->compat; - if (freeMap) - which = XkbAllCompatMask; - if (which & XkbGroupCompatMask) - bzero(&compat->groups[0], XkbNumKbdGroups * sizeof(XkbModsRec)); - if (which & XkbSymInterpMask) { - if ((compat->sym_interpret) && (compat->size_si > 0)) - _XkbFree(compat->sym_interpret); - compat->size_si = compat->num_si = 0; - compat->sym_interpret = NULL; - } - if (freeMap) { - _XkbFree(compat); - xkb->compat = NULL; - } - return; -} - -/***===================================================================***/ - -Status -XkbAllocNames(XkbDescPtr xkb, unsigned which, int nTotalRG, int nTotalAliases) -{ - XkbNamesPtr names; - - if (xkb == NULL) - return BadMatch; - if (xkb->names == NULL) { - xkb->names = _XkbTypedCalloc(1, XkbNamesRec); - if (xkb->names == NULL) - return BadAlloc; - } - names = xkb->names; - if ((which & XkbKTLevelNamesMask) && (xkb->map != NULL) && - (xkb->map->types != NULL)) { - register int i; - XkbKeyTypePtr type = xkb->map->types; - - for (i = 0; i < xkb->map->num_types; i++, type++) { - if (type->level_names == NULL) { - type->level_names = _XkbTypedCalloc(type->num_levels, Atom); - if (type->level_names == NULL) - return BadAlloc; - } - } - } - if ((which & XkbKeyNamesMask) && (names->keys == NULL)) { - if ((!XkbIsLegalKeycode(xkb->min_key_code)) || - (!XkbIsLegalKeycode(xkb->max_key_code)) || - (xkb->max_key_code < xkb->min_key_code)) - return BadValue; - names->keys = _XkbTypedCalloc((xkb->max_key_code + 1), XkbKeyNameRec); - if (names->keys == NULL) - return BadAlloc; - } - if ((which & XkbKeyAliasesMask) && (nTotalAliases > 0)) { - if (names->key_aliases == NULL) { - names->key_aliases = _XkbTypedCalloc(nTotalAliases, XkbKeyAliasRec); - } - else if (nTotalAliases > names->num_key_aliases) { - XkbKeyAliasRec *prev_aliases = names->key_aliases; - - names->key_aliases = _XkbTypedRealloc(names->key_aliases, - nTotalAliases, - XkbKeyAliasRec); - if (names->key_aliases != NULL) { - _XkbClearElems(names->key_aliases, names->num_key_aliases, - nTotalAliases - 1, XkbKeyAliasRec); - } - else { - _XkbFree(prev_aliases); - } - } - if (names->key_aliases == NULL) { - names->num_key_aliases = 0; - return BadAlloc; - } - names->num_key_aliases = nTotalAliases; - } - if ((which & XkbRGNamesMask) && (nTotalRG > 0)) { - if (names->radio_groups == NULL) { - names->radio_groups = _XkbTypedCalloc(nTotalRG, Atom); - } - else if (nTotalRG > names->num_rg) { - Atom *prev_radio_groups = names->radio_groups; - - names->radio_groups = - _XkbTypedRealloc(names->radio_groups, nTotalRG, Atom); - if (names->radio_groups != NULL) { - _XkbClearElems(names->radio_groups, names->num_rg, nTotalRG - 1, - Atom); - } - else { - _XkbFree(prev_radio_groups); - } - } - if (names->radio_groups == NULL) - return BadAlloc; - names->num_rg = nTotalRG; - } - return Success; -} - -void -XkbFreeNames(XkbDescPtr xkb, unsigned which, Bool freeMap) -{ - XkbNamesPtr names; - - if ((xkb == NULL) || (xkb->names == NULL)) - return; - names = xkb->names; - if (freeMap) - which = XkbAllNamesMask; - if (which & XkbKTLevelNamesMask) { - XkbClientMapPtr map = xkb->map; - - if ((map != NULL) && (map->types != NULL)) { - register int i; - register XkbKeyTypePtr type; - - type = map->types; - for (i = 0; i < map->num_types; i++, type++) { - if (type->level_names != NULL) { - _XkbFree(type->level_names); - type->level_names = NULL; - } - } - } - } - if ((which & XkbKeyNamesMask) && (names->keys != NULL)) { - _XkbFree(names->keys); - names->keys = NULL; - names->num_keys = 0; - } - if ((which & XkbKeyAliasesMask) && (names->key_aliases)) { - _XkbFree(names->key_aliases); - names->key_aliases = NULL; - names->num_key_aliases = 0; - } - if ((which & XkbRGNamesMask) && (names->radio_groups)) { - _XkbFree(names->radio_groups); - names->radio_groups = NULL; - names->num_rg = 0; - } - if (freeMap) { - _XkbFree(names); - xkb->names = NULL; - } - return; -} - -/***===================================================================***/ - -/*ARGSUSED*/ -Status -XkbAllocControls(XkbDescPtr xkb, unsigned which) -{ - if (xkb == NULL) - return BadMatch; - - if (xkb->ctrls == NULL) { - xkb->ctrls = _XkbTypedCalloc(1, XkbControlsRec); - if (!xkb->ctrls) - return BadAlloc; - } - return Success; -} - -/*ARGSUSED*/ -void -XkbFreeControls(XkbDescPtr xkb, unsigned which, Bool freeMap) -{ - if (freeMap && (xkb != NULL) && (xkb->ctrls != NULL)) { - _XkbFree(xkb->ctrls); - xkb->ctrls = NULL; - } - return; -} - -/***===================================================================***/ - -Status -XkbAllocIndicatorMaps(XkbDescPtr xkb) -{ - if (xkb == NULL) - return BadMatch; - if (xkb->indicators == NULL) { - xkb->indicators = _XkbTypedCalloc(1, XkbIndicatorRec); - if (!xkb->indicators) - return BadAlloc; - } - return Success; -} - -void -XkbFreeIndicatorMaps(XkbDescPtr xkb) -{ - if ((xkb != NULL) && (xkb->indicators != NULL)) { - _XkbFree(xkb->indicators); - xkb->indicators = NULL; - } - return; -} - -/***====================================================================***/ - -XkbDescRec * -XkbAllocKeyboard(void) -{ - XkbDescRec *xkb; - - xkb = _XkbTypedCalloc(1, XkbDescRec); - if (xkb) - xkb->device_spec = XkbUseCoreKbd; - return xkb; -} - -void -XkbFreeKeyboard(XkbDescPtr xkb, unsigned which, Bool freeAll) -{ - if (xkb == NULL) - return; - if (freeAll) - which = XkbAllComponentsMask; - if (which & XkbClientMapMask) - XkbFreeClientMap(xkb, XkbAllClientInfoMask, True); - if (which & XkbServerMapMask) - XkbFreeServerMap(xkb, XkbAllServerInfoMask, True); - if (which & XkbCompatMapMask) - XkbFreeCompatMap(xkb, XkbAllCompatMask, True); - if (which & XkbIndicatorMapMask) - XkbFreeIndicatorMaps(xkb); - if (which & XkbNamesMask) - XkbFreeNames(xkb, XkbAllNamesMask, True); - if ((which & XkbGeometryMask) && (xkb->geom != NULL)) - XkbFreeGeometry(xkb->geom, XkbGeomAllMask, True); - if (which & XkbControlsMask) - XkbFreeControls(xkb, XkbAllControlsMask, True); - if (freeAll) - _XkbFree(xkb); - return; -} - -/***====================================================================***/ - -XkbDeviceLedInfoPtr -XkbAddDeviceLedInfo(XkbDeviceInfoPtr devi, unsigned ledClass, unsigned ledId) -{ - XkbDeviceLedInfoPtr devli; - register int i; - - if ((!devi) || (!XkbSingleXIClass(ledClass)) || (!XkbSingleXIId(ledId))) - return NULL; - for (i = 0, devli = devi->leds; i < devi->num_leds; i++, devli++) { - if ((devli->led_class == ledClass) && (devli->led_id == ledId)) - return devli; - } - if (devi->num_leds >= devi->sz_leds) { - XkbDeviceLedInfoRec *prev_leds = devi->leds; - - if (devi->sz_leds > 0) - devi->sz_leds *= 2; - else - devi->sz_leds = 1; - devi->leds = _XkbTypedRealloc(devi->leds, devi->sz_leds, - XkbDeviceLedInfoRec); - if (!devi->leds) { - _XkbFree(prev_leds); - devi->sz_leds = devi->num_leds = 0; - return NULL; - } - i = devi->num_leds; - for (devli = &devi->leds[i]; i < devi->sz_leds; i++, devli++) { - bzero(devli, sizeof(XkbDeviceLedInfoRec)); - devli->led_class = XkbXINone; - devli->led_id = XkbXINone; - } - } - devli = &devi->leds[devi->num_leds++]; - bzero(devli, sizeof(XkbDeviceLedInfoRec)); - devli->led_class = ledClass; - devli->led_id = ledId; - return devli; -} - -Status -XkbResizeDeviceButtonActions(XkbDeviceInfoPtr devi, unsigned newTotal) -{ - XkbAction *prev_btn_acts; - - if ((!devi) || (newTotal > 255)) - return BadValue; - if ((devi->btn_acts != NULL) && (newTotal == devi->num_btns)) - return Success; - if (newTotal == 0) { - if (devi->btn_acts != NULL) { - _XkbFree(devi->btn_acts); - devi->btn_acts = NULL; - } - devi->num_btns = 0; - return Success; - } - prev_btn_acts = devi->btn_acts; - devi->btn_acts = _XkbTypedRealloc(devi->btn_acts, newTotal, XkbAction); - if (devi->btn_acts == NULL) { - _XkbFree(prev_btn_acts); - devi->num_btns = 0; - return BadAlloc; - } - if (newTotal > devi->num_btns) { - XkbAction *act; - - act = &devi->btn_acts[devi->num_btns]; - bzero((char *) act, (newTotal - devi->num_btns) * sizeof(XkbAction)); - } - devi->num_btns = newTotal; - return Success; -} - -/*ARGSUSED*/ -XkbDeviceInfoPtr -XkbAllocDeviceInfo(unsigned deviceSpec, unsigned nButtons, unsigned szLeds) -{ - XkbDeviceInfoPtr devi; - - devi = _XkbTypedCalloc(1, XkbDeviceInfoRec); - if (devi != NULL) { - devi->device_spec = deviceSpec; - devi->has_own_state = False; - devi->num_btns = 0; - devi->btn_acts = NULL; - if (nButtons > 0) { - devi->num_btns = nButtons; - devi->btn_acts = _XkbTypedCalloc(nButtons, XkbAction); - if (!devi->btn_acts) { - _XkbFree(devi); - return NULL; - } - } - devi->dflt_kbd_fb = XkbXINone; - devi->dflt_led_fb = XkbXINone; - devi->num_leds = 0; - devi->sz_leds = 0; - devi->leds = NULL; - if (szLeds > 0) { - devi->sz_leds = szLeds; - devi->leds = _XkbTypedCalloc(szLeds, XkbDeviceLedInfoRec); - if (!devi->leds) { - _XkbFree(devi->btn_acts); - _XkbFree(devi); - return NULL; - } - } - } - return devi; -} - - -void -XkbFreeDeviceInfo(XkbDeviceInfoPtr devi, unsigned which, Bool freeDevI) -{ - if (devi) { - if (freeDevI) { - which = XkbXI_AllDeviceFeaturesMask; - if (devi->name) { - _XkbFree(devi->name); - devi->name = NULL; - } - } - if ((which & XkbXI_ButtonActionsMask) && (devi->btn_acts)) { - _XkbFree(devi->btn_acts); - devi->num_btns = 0; - devi->btn_acts = NULL; - } - if ((which & XkbXI_IndicatorsMask) && (devi->leds)) { - register int i; - - if ((which & XkbXI_IndicatorsMask) == XkbXI_IndicatorsMask) { - _XkbFree(devi->leds); - devi->sz_leds = devi->num_leds = 0; - devi->leds = NULL; - } - else { - XkbDeviceLedInfoPtr devli; - - for (i = 0, devli = devi->leds; i < devi->num_leds; - i++, devli++) { - if (which & XkbXI_IndicatorMapsMask) - bzero((char *) &devli->maps[0], sizeof(devli->maps)); - else - bzero((char *) &devli->names[0], sizeof(devli->names)); - } - } - } - if (freeDevI) - _XkbFree(devi); - } - return; -} |