Lines Matching defs:devi
313 XkbAddDeviceLedInfo(XkbDeviceInfoPtr devi, unsigned ledClass, unsigned ledId)
318 if ((!devi) || (!XkbSingleXIClass(ledClass)) || (!XkbSingleXIId(ledId)))
320 for (i = 0, devli = devi->leds; i < devi->num_leds; i++, devli++) {
324 if (devi->num_leds >= devi->sz_leds) {
325 if (devi->sz_leds > 0)
326 devi->sz_leds *= 2;
328 devi->sz_leds = 1;
329 _XkbResizeArray(devi->leds, devi->num_leds, devi->sz_leds,
331 if (!devi->leds) {
332 devi->sz_leds = devi->num_leds = 0;
335 i = devi->num_leds;
336 for (devli = &devi->leds[i]; i < devi->sz_leds; i++, devli++) {
342 devli = &devi->leds[devi->num_leds++];
350 XkbResizeDeviceButtonActions(XkbDeviceInfoPtr devi, unsigned newTotal)
352 if ((!devi) || (newTotal > 255))
354 if ((devi->btn_acts != NULL) && (newTotal == devi->num_btns))
357 if (devi->btn_acts != NULL) {
358 _XkbFree(devi->btn_acts);
359 devi->btn_acts = NULL;
361 devi->num_btns = 0;
364 _XkbResizeArray(devi->btn_acts, devi->num_btns, newTotal, XkbAction);
365 if (devi->btn_acts == NULL) {
366 devi->num_btns = 0;
369 if (newTotal > devi->num_btns) {
372 act = &devi->btn_acts[devi->num_btns];
373 bzero((char *) act, (newTotal - devi->num_btns) * sizeof(XkbAction));
375 devi->num_btns = newTotal;
383 XkbDeviceInfoPtr devi;
385 devi = _XkbTypedCalloc(1, XkbDeviceInfoRec);
386 if (devi != NULL) {
387 devi->device_spec = deviceSpec;
388 devi->has_own_state = False;
389 devi->num_btns = 0;
390 devi->btn_acts = NULL;
392 devi->num_btns = nButtons;
393 devi->btn_acts = _XkbTypedCalloc(nButtons, XkbAction);
394 if (!devi->btn_acts) {
395 _XkbFree(devi);
399 devi->dflt_kbd_fb = XkbXINone;
400 devi->dflt_led_fb = XkbXINone;
401 devi->num_leds = 0;
402 devi->sz_leds = 0;
403 devi->leds = NULL;
405 devi->sz_leds = szLeds;
406 devi->leds = _XkbTypedCalloc(szLeds, XkbDeviceLedInfoRec);
407 if (!devi->leds) {
408 _XkbFree(devi->btn_acts);
409 _XkbFree(devi);
414 return devi;
419 XkbFreeDeviceInfo(XkbDeviceInfoPtr devi, unsigned which, Bool freeDevI)
421 if (devi) {
424 if (devi->name) {
425 _XkbFree(devi->name);
426 devi->name = NULL;
429 if ((which & XkbXI_ButtonActionsMask) && (devi->btn_acts)) {
430 _XkbFree(devi->btn_acts);
431 devi->num_btns = 0;
432 devi->btn_acts = NULL;
434 if ((which & XkbXI_IndicatorsMask) && (devi->leds)) {
438 _XkbFree(devi->leds);
439 devi->sz_leds = devi->num_leds = 0;
440 devi->leds = NULL;
445 for (i = 0, devli = devi->leds; i < devi->num_leds;
455 _XkbFree(devi);